You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slurm作业中同时运行TensorBoard与深度学习训练脚本的最优方案问询

问题根因
  1. 初始脚本中tensorboard命令默认前台运行,会阻塞后续训练脚本执行,必须手动终止进程才会继续执行后续逻辑。
  2. 修改后的脚本未限制srun的任务数,由于你配置了--ntasks-per-node=6,srun默认会为命令分配所有可用任务槽,相当于同时启动6个TensorBoard实例抢占同一端口,因此出现端口占用报错。
最优解决方案

你可以通过限制单命令任务数、后台运行、自动分配端口、进程自动清理的逻辑实现两个服务并行运行,修改后的完整脚本如下:

#!/bin/bash -l
#SBATCH -N 1
#SBATCH --ntasks-per-node=6
#SBATCH --mem-per-cpu=5GB
#SBATCH --gres=gpu:1

# 仅启动1个TensorBoard实例,后台运行
# --port=0 参数会让TensorBoard自动选择可用端口,避免和其他用户的服务冲突
srun --ntasks=1 tensorboard --logdir=runs --port=0 &
# 记录TensorBoard进程PID,用于后续清理
TB_PID=$!
# 等待3秒确保TensorBoard启动完成
sleep 3
# 输出TensorBoard运行端口,方便后续端口转发访问
echo "TensorBoard 运行端口: $(lsof -a -p $TB_PID -i 4 -P | grep LISTEN | awk '{print $9}' | cut -d: -f2)"

# 启动训练脚本,分配剩余5个任务槽
srun --ntasks=5 python3 trainloop.py

# 训练结束后主动终止TensorBoard进程,避免节点残留无用进程
kill $TB_PID
附加说明
  • 如果你使用的集群计算节点无法直接对外访问,你可以在本地执行SSH端口转发命令访问TensorBoard:ssh -L 本地自定义端口:计算节点IP:上述输出的TensorBoard端口 集群账号@集群登录地址,执行后在本地浏览器打开localhost:本地自定义端口即可查看训练日志。
  • 注意TensorBoard的日志路径参数为--logdir=runs,使用冒号分隔会导致参数识别错误,无法正常加载日志。

内容的提问来源于stack exchange,提问作者Jarartur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:03