【问题标题】:Running tensorboard and python script at the same time同时运行 tensorboard 和 python 脚本
【发布时间】:2021-12-26 05:23:50
【问题描述】:

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

现在我有了我的 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 并运行脚本。 我把它改成

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

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

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

让张量板服务器与我的脚本一起运行的最佳方法是什么?

【问题讨论】:

  • 能否请您参考类似的issue 并查看错误解决的here..谢谢

标签: python tensorboard slurm


【解决方案1】:

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

所以这个

tensorboard --logdir:runs &
python3 trainloop.py

应该做你想做的。

【讨论】:

  • 如果我的 python 脚本 (PyTorch Dataloader num_workers) 中有多线程,这种方法会利用我在 slurm 脚本中分配的 6 个任务吗?
  • 通常是的,您应该能够轻松验证它
猜你喜欢
  • 2020-04-14
  • 2017-06-28
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多