使用 Kubeflow Tensorboards

TensorFlow 的可视化工具 TensorBoard 是一个强大的监控面板,用于可视化机器学习实验。它允许您跟踪诸如损失和准确率等指标,展示模型图,查看权重和偏置的直方图,以及更多功能。

Kubeflow 提供了一种原生方式,可以直接在您的 Kubernetes 集群内启动 TensorBoard 实例,并将其指向存储在持久卷声明(PVC)或对象存储(S3、MinIO)上的现有日志。

前提条件

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

  • PVC:如果您的训练作业将日志写入持久卷,请记下 PVC 名称及其内部路径。
  • 对象存储:如果您的训练作业将日志写入 S3/MinIO,请确保您拥有必要的凭据(通常通过 PodDefaults 配置)和桶的 URI(例如,s3://my-bucket/logs/experiment-1)。

使用 PyTorch 生成日志

为了可视化训练指标,您的 PyTorch 代码必须将事件写入日志目录。SummaryWriter 类是用于记录数据以供 TensorBoard 使用的主要入口。

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

# Writer 默认会输出到 ./runs/ 目录
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)
# 让 ResNet 模型接受灰度图而非 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. 配置实例

    • 名称:输入您 TensorBoard 实例的唯一名称(例如 experiment-1-viz)。
    • PVC 来源
      • 如果日志存储在 PVC 上,请勾选此项。
      • PVC 名称:从下拉列表中选择 PVC。
      • 挂载路径:指定日志在 PVC 内的路径(例如 /logs/run1)。
    • 对象存储来源
      • 如果日志存储在云存储中,请勾选此项。
      • 对象存储链接:填写日志目录的完整 URI(例如 s3://my-bucket/my-model/logs/)。
      • 配置:如果桶需要凭据,选择相应的配置(PodDefault)。
  4. 创建
    点击 Create。TensorBoard 实例将作为 Pod 在您的命名空间中创建。

访问监控面板

当您的 TensorBoard 实例状态变为 Running

  1. 点击实例名称旁的 Connect
  2. TensorBoard UI 会在新标签页中打开。
  3. 您现在可以浏览训练运行生成的标量、图表、分布等可视化内容。

使用场景

可视化训练指标

使用 Scalars 标签页查看准确率、损失和学习率随时间变化的曲线。这有助于诊断模型是否过拟合或学习率是否需要调整。

比较多次运行

如果您将 TensorBoard 指向包含多个运行子目录的父目录(例如 run1run2),TensorBoard 会自动叠加这些运行的指标,方便您比较不同超参数下的性能。

调试模型架构

使用 Graphs 标签页可视化模型的计算图。这确保模型按预期构建,并帮助识别结构性问题。

清理

TensorBoard 实例会消耗集群资源(CPU/内存)。当您完成实验分析后:

  1. 返回 TensorBoards 列表。
  2. 点击实例旁的 Delete(垃圾桶图标)按钮。
  3. 确认删除。此操作会移除可视化服务器,但不会删除存储在 PVC 或对象存储上的训练日志或模型。