Skip to content

使用极值算力实例运行 TensorBoard 服务

本指南介绍如何在极值算力实例内启动 TensorBoard 服务,用于查看极值算力实例本地训练日志。

阅读本文后,您将能够:

  • 在极值算力实例内安装并启动 TensorBoard 服务
  • 查看极值算力实例本地训练产生的日志
  • 使用 --reload_multifile 参数处理多事件文件场景

概述

极值算力实例中的 TensorBoard 通常用于查看本地训练产生的日志,适合交互式开发调试和实时监控。

基本流程:

  1. 安装 TensorBoard:确保极值算力实例环境中有 TensorBoard
  2. 确定日志路径:本地路径或共享存储路径
  3. 启动服务:使用合适的参数运行 tensorboard 命令
  4. 访问看板:通过平台控制台跳转或 SSH 端口转发

前提条件

在开始之前,请确保满足以下条件:

  • 极值算力实例处于运行中状态
  • 极值算力实例环境中已安装 TensorBoard(平台预置镜像通常已包含)
  • 日志文件已存在于可访问的路径

安装 TensorBoard

如果镜像中未包含 TensorBoard,请手动安装:

language-shell
pip install tensorboard

TensorBoard 启动参数

--host 参数

警告

必须使用 --host 0.0.0.0 绑定到所有网络接口,否则平台无法转发服务。

--logdir 参数

--logdir 参数决定了 TensorBoard 扫描哪些目录来发现实验数据(runs):

传入路径扫描行为适用场景
父目录(如 /mnt/shared/runs/递归扫描所有子目录,发现全部 runs对比多个实验
具体 run 目录只加载该目录的数据查看单个实验

--reload_multifile 参数

长时间运行的训练任务会产生多个事件文件(events.out.tfevents.*)。默认情况下,TensorBoard 只读取每个 run 目录中最新的事件文件。

参数设置行为适用场景
不设置(默认)仅读取最新事件文件短期实验、单文件日志
--reload_multifile=true读取目录下所有事件文件长时间训练、多事件文件日志

提示

查看长时间训练产生的多事件文件日志时,强烈建议启用 --reload_multifile=true,否则可能只能看到部分训练数据。

--port 参数

警告

平台仅转发 6006 端口。TensorBoard 默认运行在 6006 端口,如使用 --port 指定其他端口,控制台提供的 TensorBoard 入口将失效。如需使用其他端口,请通过 SSH 端口转发访问。

场景一 查看极值算力实例本地日志

在极值算力实例内进行交互式训练时,可以实时查看训练进度。

  1. 在训练脚本中配置日志目录:

    language-python
    from torch.utils.tensorboard import SummaryWriter
    
    # 指定日志目录
    writer = SummaryWriter("./runs/experiment_1")
    
    # 训练循环中记录指标
    for epoch in range(epochs):
        # ... 训练代码 ...
        writer.add_scalar('Loss/train', loss, epoch)
    
    writer.close()
  2. 启动 TensorBoard:

    language-shell
    # 查看 ./runs 下的所有实验
    tensorboard --host 0.0.0.0 --logdir ./runs
  3. 进入极值算力「容器实例」页面,找到目标极值算力实例,在「配置信息」列将光标悬浮在详情上,在悬浮窗口的高级配置中点击 TensorBoard 访问看板。

访问 TensorBoard

从平台控制台访问

在极值算力实例运行中,进入极值算力「容器实例」页面,找到目标实例,在「配置信息」列将光标悬浮在详情上,在悬浮窗口的高级配置中找到 TensorBoard,点击跳转即可访问。

从本地设备访问

TensorBoard 是用户在极值算力实例内自行运行的服务,平台会转发 6006 端口供控制台访问。如需从本地设备直接访问,可使用 SSH 端口转发:

后台运行 TensorBoard

在极值算力实例中,建议使用 tmuxnohup 在后台运行 TensorBoard,避免关闭终端后服务停止:

language-shell
# 使用 nohup 后台运行
nohup tensorboard --host 0.0.0.0 --logdir /mnt/shared/runs --reload_multifile=true > /dev/null 2>&1 &

# 或使用 tmux(推荐)
tmux new -s tensorboard
tensorboard --host 0.0.0.0 --logdir /mnt/shared/runs --reload_multifile=true
# 按 Ctrl+B, D 分离会话

常见问题

无法打开 TensorBoard 看板

诊断步骤:

  1. 检查极值算力实例状态:确认极值算力实例处于「运行中」状态

  2. 检查 TensorBoard 进程:在极值算力实例终端运行:

    language-shell
    ps aux | grep tensorboard

    如果没有输出,说明 TensorBoard 未启动。

  3. 检查 host 绑定:确认启动命令包含 --host 0.0.0.0

  4. 检查端口号:确认 TensorBoard 运行在默认端口 6006

TensorBoard 只显示一个 run

原因:日志直接写入了父目录,而不是子目录。TensorBoard 将每个包含事件文件的目录识别为一个 run。

解决方案:为每个实验创建独立的子目录:

language-python
# 错误:直接写入父目录
writer = SummaryWriter("/mnt/shared/runs")

# 正确:写入子目录
writer = SummaryWriter("/mnt/shared/runs/exp1")

可以使用 WandB 等其他工具吗?

平台暂未深度集成 WandB 等实验追踪工具。您可以自行安装和使用 SwanLab/WandB 等工具。

可参考以下教程:

参考资源