使用 Kubeflow Tensorboards

TensorFlow 的可视化工具 TensorBoard 是一个强大的监控面板,用于可视化机器学习实验。它允许你跟踪 loss 和 accuracy 等指标,查看 model graph,查看 weights 和 biases 的直方图,以及更多内容。

Kubeflow 提供了一种原生方式,可以直接在你的 Kubernetes 集群内创建 TensorBoard 实例,并将其指向存储在 Persistent Volume Claims (PVCs) 或 Object Storage 中的现有日志。

前提条件

在创建 TensorBoard 实例之前,请确保你的 training 作业正在将日志写入集群可访问的位置。

  • PVC:如果你的 training 作业将日志写入 Persistent Volume,请记录 PVC 名称以及其中的路径。
  • Object Storage:如果你的 training 作业将日志写入 Object Storage,请确保你已具备必要的凭据(通常通过 PodDefaults 配置)以及 bucket URI(例如,s3://my-bucket/logs/experiment-1)。

使用 PyTorch 生成日志

要可视化你的 training 指标,PyTorch 代码必须将事件写入日志目录。SummaryWriter 类是将数据记录下来供 TensorBoard 使用的主要入口点。

import torch
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import datasets, transforms

# Writer will output to ./runs/ directory by default
writer = SummaryWriter()

transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# Have ResNet model take in grayscale rather than RGB
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))

grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()

创建 TensorBoard 实例

  1. 访问 Kubeflow 监控面板: 导航到 Kubeflow 中央监控面板中的 TensorBoards 部分。

  2. 新建 TensorBoard: 单击 New TensorBoard 按钮。

  3. 配置实例

    • 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)。
  4. 创建: 单击 Create。TensorBoard 实例将作为你命名空间中的一个 Pod 进行部署。

访问监控面板

一旦你的 TensorBoard 实例状态变为 Running

  1. 单击实例名称旁边的 Connect
  2. TensorBoard UI 将在新选项卡中打开。
  3. 现在你可以浏览 training 运行生成的 scalars、graphs、distributions 和其他可视化内容。

使用场景

可视化 Training 指标

使用 Scalars 选项卡查看 accuracy、loss 和 learning rate 随时间变化的图表。这有助于诊断你的 model 是否发生过拟合,或者 learning rate 是否需要调整。

比较运行

如果你将 TensorBoard 指向一个包含多个运行子目录的父目录(例如 run1run2),TensorBoard 会自动叠加这些运行的指标,从而让你比较不同 hyperparameters 下的性能。

调试 Model Architecture

使用 Graphs 选项卡可视化 model 的计算图。这可确保 model 按预期构建,并有助于识别结构性问题。

清理

TensorBoard 实例会消耗集群资源(CPU/Memory)。当你完成对实验的分析后:

  1. 返回 TensorBoards 列表。
  2. 单击实例旁边的 Delete(垃圾桶图标)按钮。
  3. 确认删除。此操作会移除可视化服务器,但不会删除存储在 PVC 或 Object Storage 中的 training 日志或 model。