使用 Kubeflow TensorBoard
TensorFlow 的可视化工具 TensorBoard 是一个功能强大的监控面板,用于可视化机器学习实验。它可以让你跟踪 loss 和 accuracy 等指标,查看 model graph,观察 weights 和 biases 的直方图,以及更多内容。
Kubeflow 提供了一种原生方式,可以直接在你的 Kubernetes 集群中创建 TensorBoard 实例,并将其指向存储在 Persistent Volume Claims (PVCs) 或 Object Storage 中的现有日志。
前提条件
在创建 TensorBoard 实例之前,请确保你的训练任务正在将日志写入集群可访问的位置。
- PVC:如果你的训练任务将日志写入 Persistent Volume,请记下 PVC 名称以及其中的路径。
- Object Storage:如果你的训练任务将日志写入 Object Storage,请确保你拥有必要的凭据(通常通过 PodDefaults 配置)以及 bucket URI(例如,
s3://my-bucket/logs/experiment-1)。
使用 PyTorch 生成日志
要可视化训练指标,你的 PyTorch 代码必须将事件写入日志目录。SummaryWriter 类是写入数据以供 TensorBoard 消费的主要入口。
创建 TensorBoard 实例
-
访问 Kubeflow 监控面板: 导航到 Kubeflow 中央监控面板中的 TensorBoards 部分。
-
新建 TensorBoard: 单击 New TensorBoard 按钮。
-
配置实例:
- Name:为你的 TensorBoard 实例输入一个唯一名称(例如,
experiment-1-viz)。 - PVC Source:
- 如果日志位于 PVC 中,请勾选此项。
- PVC Name:从下拉列表中选择 PVC。
- Mount Path:指定日志存储在 PVC 内的路径(例如,
/logs/run1)。
- Object Storage Source:
- 如果日志位于云存储中,请勾选此项。
- Object Store Link:提供日志目录的完整 URI(例如,
s3://my-bucket/my-model/logs/)。 - Configuration:如果你的 bucket 需要凭据,请选择一个配置(PodDefault)。
- Name:为你的 TensorBoard 实例输入一个唯一名称(例如,
-
创建: 单击 Create。TensorBoard 实例将作为你命名空间中的一个 Pod 创建。
访问监控面板
当 TensorBoard 实例的状态变为 Running 后:
- 单击实例名称旁边的 Connect。
- TensorBoard UI 将在新标签页中打开。
- 现在你可以浏览训练运行生成的 scalars、graphs、distributions 和其他可视化内容。
使用场景
可视化训练指标
使用 Scalars 选项卡查看 accuracy、loss 和 learning rate 随时间变化的曲线。这有助于诊断模型是否发生 overfitting,或者 learning rate 是否需要调整。
比较运行结果
如果你将 TensorBoard 指向一个包含多个运行子目录的父目录(例如,run1、run2),TensorBoard 会自动叠加这些运行的指标,使你能够比较不同 hyperparameters 下的性能。
调试模型架构
使用 Graphs 选项卡可视化模型的 computational graph。这可以确保模型按预期构建,并有助于识别结构问题。
清理
TensorBoard 实例会消耗集群资源(CPU/Memory)。当你完成实验分析后:
- 返回 TensorBoards 列表。
- 单击实例旁边的 Delete(垃圾桶图标)按钮。
- 确认删除。这将移除可视化服务器,但不会删除存储在 PVC 或 Object Storage 中的训练日志或模型。