Skip to content

训练进程与监控

如果你通过ssh登录或以ssh为基础的工具软件(比如XShell、PyCharm,VSCode等,可以用这类工具调试,但是最终长时间运行时请以守护进程的方式执行命令)进行远程执行程序时,那么请注意开守护进程来执行程序,避免因为SSH连接中断导致程序终止,遭受不必要的损失。

1. 后台训练与守护进程方式(防中断)

后台训练推荐使用会话管理工具或守护进程方式运行任务,常见方式包括:

  • tmux(推荐)
  • screen
  • nohup / setsid
  • JupyterLab 终端 / Notebook + 日志重定向

说明:tmux 与 screen 默认多数系统未预装,需要手动安装,安装命令如下:

bash
sudo apt install -y tmux screen

1.1 使用 tmux(推荐)

tmux 支持多窗口、多会话管理,稳定性高,适合长期训练任务。

创建新会话

bash
tmux new -s train

在会话中启动训练

bash
python train.py

临时离开会话(不中断任务)

bash
Ctrl + B,然后按 D

说明:部分终端(如 Web Terminal / JupyterLab 终端等)可能无法完整传递组合快捷键,或与宿主应用快捷键冲突,导致 Ctrl + B 前缀与后续按键无法生效。若遇到此情况,可直接关闭当前终端窗口或标签页,tmux 会话仍会在后台保持运行;之后再通过 tmux lstmux attach -t train 重新连接。

查看所有会话

bash
tmux ls

重新连接会话

bash
tmux attach -t train

关闭当前会话

bash
tmux kill-session -t train

1.2 使用 screen

screen 功能与 tmux 类似,但维护性略弱,适合简单后台任务。

创建会话

bash
screen -S train

启动训练

bash
python train.py

离开会话

bash
Ctrl + A,然后按 D

查看会话

bash
screen -ls

恢复会话

bash
screen -r train

如果使用 screen 打开终端后出现中文乱码,可执行以下命令后重新进入 screen 终端解决:

bash
echo "defencoding GBK" >> ~/.screenrc
echo "encoding UTF-8 GBK" >> ~/.screenrc

如果 screen 仍出现乱码问题,也可以在新建/恢复时加上 -U 参数:

bash
# 新建
screen -U
# 恢复
screen -U -r xxx

1.3 使用 nohup / setsid

nohup 适合简单后台运行场景,但不支持交互式管理。

推荐组合使用 setsid + nohup:

bash
setsid nohup python train.py > output.log 2>&1 &

查看输出日志

bash
tail -f output.log

注意:nohup 模式下无法重新进入交互环境,仅适合一次性任务。


1.4 使用 JupyterLab 终端 / Notebook

如果你是通过 JupyterLab 在浏览器中操作实例,也可以利用 JupyterLab 自身的特性来实现"后台运行、防中断"的效果,无需额外安装 tmux/screen。

1.4.1 JupyterLab 终端方式(推荐)

最简单的方式是通过 JupyterLab 自带的终端来执行训练命令:只要 JupyterLab 服务本身不重启(这种情况几乎不会发生),其终端进程就会一直在后台运行,不受本地主机断网或关机的影响JupyterLab 终端

  • 如果你不小心关闭了终端标签页,可以在 JupyterLab 左侧文件/任务栏中重新找回该终端会话。 JupyterLab 终端
  • 重新打开终端标签后如果没有任何显示,按一下回车键即可恢复正常显示。

⚠️ 在使用 JupyterLab 终端长时间跑训练任务时,强烈建议对日志做重定向处理,防止断网或刷新页面后,中间产生的日志内容丢失:

bash
# 将日志重定向到 train.log 文件,即在原命令后加上 > train.log 2>&1
python train.py > train.log 2>&1

# 实时查看日志(另开一个终端标签执行)
tail -f train.log

2. 进程管理与资源监控命令

查看 GPU 状态

bash
nvidia-smi

实时刷新显存占用

bash
watch nvidia-smi

使用 nvtop 进行可视化监控(推荐)

nvtop 提供类 top 的 GPU 实时监控界面,更直观。

安装 nvtop(需手动安装)

bash
sudo apt install -y nvtop

启动监控

bash
nvtop

强制终止训练进程

bash
kill -9 <进程ID>