1 Ubuntu使用nohub后台运行训练程序

我在这篇文章Centos7 – nohup方式优雅的部署jar包 中已经详细介绍了如何使用nohub后台运行程序,在阅读以下内容之前先阅读这篇文章。

比如训练模型命令为:

python train.py

要使用nohub后台训练上述模型,我们新建两个个shell脚本,start_train.sh,stop_train.sh。

其中start_train.sh内容为

#! /bin/bash
#注意:必须有&让其后台执行,否则没有pid生成   jar包路径为绝对路径
nohup python train.py > ./train_log.txt 2>&1 &

# 将jar包启动对应的进程pid写入文件中,为停止时提供pid
echo $! > ./train_pid.txt

stop_train.sh内容为

#! /bin/bash
PID=$(cat ./train_pid.txt)
kill -9 $PID

这样就可以通过

bash start_train.sh

启动模型训练进程,通过

bash stop_train.sh

终止模型训练程序。

如果要查看训练中的实时日志,可以使用以下命令

tail -f ./train_log.txt

2 nohub在启动后台时制定GPU

我们经常通过以下命令在有多个GPU的情况下指定训练时所使用的GPU

CUDA_VISIBLE_DEVICES=0 python train.py

如果要想在nohub中使用,则需要修改start_train.sh的内容,以下为修改的内容

#! /bin/bash
#注意:必须有&让其后台执行,否则没有pid生成   jar包路径为绝对路径
CUDA_VISIBLE_DEVICES=0 nohup python train.py > ./train_log.txt 2>&1 &

# 将jar包启动对应的进程pid写入文件中,为停止时提供pid
echo $! > ./train_pid.txt

就是将CUDA_VISIBLE_DEVICES=0放在nohub之前即可,其他的环境变量设置也可以通过放在nohub之前进行设置。