因为在使用常用的nohup命令搭配torchrun的时候会出现一些因nohup而产生的bug,如下所示:
torch.distributed.elastic.multiprocessing.api.SignalException: Process 7206 got signal: 1
因此,我们可以尝试使用tmux来代替nohup命令。需要使用到的主要命令如下所示:
sudo apt-get install tmux # 安装
tmux # 进入tmux窗口
exit # 退出tmux窗口,或者使用快捷键[ Ctrl+d ]
tmux new -s {session-name} # 创建一个会话,并直接设置会话名
# 快捷键[ Ctrl+b ] 是tmux的前缀键,用完前缀键后可以继续按指定键来完成指定命令
[ Ctrl+b ] [ d ] # 将会话与窗口分离,或者[ Ctrl+b ] tmux detach,这个命令相当于将tmux与当前的会话窗口分离
tmux ls # 查看所有会话,或者使用tmux list-session
tmux attach -t {session-name} # 根据会话名将terminal窗口接入会话
tmux kill-session -t {session-name} # 根据会话名杀死一个会话
tmux switch -t {session-name} # 根据会话名切换会话
tmux rename-session -t {old-session-name} {new-session-name} # 重命名会话
tmux -u new -s {session-name} # 创建一个会话,并直接设置会话名,且在tmux中可以显示中文
#翻页
ctrl+b 松开 按 "[" #开启上下翻页模式
上下箭头键实现上下翻页
q #退出
训练PyTorch模型的时候一个基本步骤:
[terminal]: tmux new -s model-ft # 创建一个会话,并设置会话名:model-ft
[tmux]: conda activate your_env # 在tmux会话中,我们激活我们要使用的conda环境
[tmux]: python train.py # 在tmux会话中,开始训练我们的模型
[tmux]: [ Ctrl+b ] [ d ] # 将会话与窗口分离
[terminal]: tmux ls # 查看我们刚刚创建的会话
[terminal]: watch -n 0.1 nvidia-smi # 监控我们的GPU使用信息
tmux使用过程中可能出现的问题:
1. 在tmux会话窗口中只显示$,不显示路径和conda环境等信息
解决方法:
a vi ~/.tmux.conf
b 添加以下内容
set-option -g default-shell /bin/bash
set-option -g default-command "bash -l"
c tmux kill-session -t 你的会话
d tmux new -s 你的会话
在一个创建好的tmux session中,如何添加一个新的窗口?方法如下:
ctrl + b + c # 用于创建一个新的窗口
ctrl + b + p # 按照顺序,切换到上一个窗口
ctrl + b + n # 按照顺序,切换到下一个窗口
ctrl + b + , # 对于当前窗口进行重命名
参考:
nohup训练pytorch模型时的报错以及tmux的简单使用_torch.distributed.elastic.multiprocessing.api.sign-CSDN博客Tmux 使用教程 - 阮一峰的网络日志