前情提要
Slurm是用于管理超算的Linux集群资源管理和作业调度系统,用户的很多操作与直接在基于linux系统上的操作方式有些区别,这里主要记录一下如何在Slurm环境中(no sudo access)的前提下执行tensorboard查看模型的训练曲线,并映射到本地浏览器中打开网页!
方法
- 在合适位置(默认你会在普通的linux系统下使用tensorboard)新建
tensorboardSlurm.sh
文件,内容如下:
#!/bin/bash
#SBATCH -o tensorboard.%j.out ### 输出路径
#SBATCH -e tensorboard.%j.err ### 报错路径
#SBATCH -J tensorboard ### 作业名称自定义
#SBATCH -p amd ### 使用amd cpu队列 (记得替换成自己的partition,查看tensorboard不需要申请GPU)
#SBATCH -N 1 ###使用1个节点
#SBATCH -n 1 ###总共申请1个core
#SBATCH --ntasks-per-node=1 ###每个节点使用1个core
source ~/.bash_profile
source /share/apps/miniconda3/etc/profile.d/conda.sh
conda activate xxx ###激活conda中安装了tensorboard的环境
MODEL_DIR=datasets/ ###训练model的路径
let ipnport=($UID-6025)%65274
echo ipnport=$ipnport
ipnip=$(hostname -i)
echo ipnip=$ipnip
tensorboard --logdir="${MODEL_DIR}" --port=$ipnport --bind_all
- 保存退出,然后执行:
sbatch tensorboardSlurm.sh
然后就可以查看刚生成的.out
文件和.err
文件,正常的话在.out
文件中会生成ipnport
和ipnip
。
- 现在转到本地,在本地终端中连接该远程slurm服务器,指定一个本地的端口
local port
(例如24567
):
ssh <username>@<ipnip> -L <local port>:<ipnip>:<ipnport>
请将上面的所有<信息>替换成自己的信息。成功连接远程服务器后,可以查看此时的.err
文件,出现了包含Monitor runs begin
的输出就是正常的。
- 打开本地浏览器,输入以下地址:
http://localhost:<local port>
。 - 此时无意外的话,即可在本地浏览器查看tensorboard的各种训练曲线图了。祝学习顺利!