运行 tensorboard 和 python 脚本同时存在

Running tensorboard and python script at the same time

我想提交 sbatch 脚本。主要部分是训练深度学习模型,但我还想同时 运行 张量板进行日志记录。

现在我有我的 script.slurm

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

tensorboard --logdir:runs
python3 trainloop.py

只有在我关闭 tensorboard 服务器后,它才会启动 tensorboard 和 运行s 脚本。 我改成了

srun tensorboard --logdir:runs &
srun python3 trainloop.py

但现在它出于某种原因循环尝试多次启动 tensorboard 并给出此错误

E1114 21:45:51.826188 47451355829184 program.py:298] TensorBoard could not bind to port 8872, it was already in use

将 tensorboard 服务器 运行ning 与我的脚本一起使用的最佳方法是什么?

添加符号 (&) 是正确的解决方案,但您不应该使用 srun,因为 srun 将启动尽可能多的任务(即 tensorboard --logdir:runs 的实例与有使用 --ntasks-per-node=6 请求的任务,这将产生“已在使用”错误。第二个 srun 也是如此,它将启动 6 个 python3 trainloop.py 实例,除非该脚本使用 MPI 幕后.

所以这个

tensorboard --logdir:runs &
python3 trainloop.py

应该做你想做的。