You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH断开后如何保持AWS EC2上的PyTorch训练持续运行?

问题根因

仅在命令末尾加&只会将进程放到当前SSH会话的后台执行,进程仍与当前登录会话强绑定。关闭SSH终端时,系统会向该会话关联的所有进程发送SIGHUP(挂断)信号,进程默认响应该信号直接终止,因此重连后无法查询到运行中的训练进程。

可落地方案

方案1:nohup 启动(零额外安装,最轻量)

nohup的核心作用是让启动的进程忽略SIGHUP信号,和SSH会话解绑,启动时将输出重定向到日志文件即可持久查看训练记录:

  • 启动命令:
nohup python main.py > train_log.log 2>&1 &
  • 参数说明:
    • nohup:配置进程忽略SSH挂断信号
    • > train_log.log:将标准输出(训练loss、精度、常规打印信息)写入train_log.log文件
    • 2>&1:将标准错误(运行报错、告警信息)合并写入同一个日志文件
    • 末尾&:将进程放入后台运行
  • 配套操作:
    • 实时滚动查看训练日志:tail -f train_log.log
    • 查询训练进程PID:ps aux | grep main.py
    • 终止训练任务:kill 查到的PID
      执行启动命令后先输入exit正常退出SSH会话再关闭本地终端,不要直接点窗口叉号强制断开,避免异常信号终止进程。重连后进程会持续在后台运行,日志持续写入指定文件。

方案2:tmux/screen 终端复用(推荐,支持随时回到交互终端)

如果需要随时回到训练的交互界面、查看实时滚动的输出(比如tqdm进度条)、手动输入交互指令,优先用终端复用工具,主流EC2镜像的官方源都可直接安装:
以tmux为例:

  1. 安装(系统未预装时执行):
    • Ubuntu/Debian系:sudo apt update && sudo apt install tmux -y
    • Amazon Linux/CentOS系:sudo yum install tmux -y
  2. 新建命名为pytorch_train的独立会话:tmux new -s pytorch_train
  3. 在弹出的tmux终端窗口内正常执行训练命令:python main.py
  4. 按下快捷键Ctrl+B后松开,再按D键,即可从当前tmux会话脱离(detach)回到原SSH会话,此时训练进程完全在tmux独立会话内运行,和SSH会话解绑
  5. 后续SSH重连后,执行tmux a -t pytorch_train即可直接回到之前的训练终端,所有输出、交互状态和断开前完全一致
  • 配套操作:
    • 查看所有现存tmux会话:tmux ls
    • 关闭不需要的会话:进入会话后输入exit,或执行tmux kill-session -t pytorch_train

方案3:systemd 系统服务托管(适合长周期大任务,稳定性最高)

如果是需要运行数天的大规模训练任务,需要进程异常退出自动恢复、实例重启后自动启动,可使用系统自带的systemd托管进程:

  1. 新建服务配置文件:sudo vim /etc/systemd/system/pytorch-train.service
  2. 写入以下配置,注意替换为你自己的用户名、项目路径、Python解释器绝对路径:
[Unit]
Description=PyTorch Training Task
After=network.target

[Service]
User=ubuntu # 替换为你登录EC2的用户名,如ubuntu、ec2-user
WorkingDirectory=/home/ubuntu/your_project_dir # 替换为main.py所在的项目绝对路径
ExecStart=/home/ubuntu/miniconda3/envs/your_env/bin/python main.py # 替换为你的Python解释器绝对路径+启动命令,避免环境变量找不到的问题
Restart=always # 进程异常退出时自动重启
RestartSec=10

[Install]
WantedBy=multi-user.target
  1. 加载配置并启动训练:
sudo systemctl daemon-reload
sudo systemctl start pytorch-train
# 可选:配置实例开机自动启动训练
sudo systemctl enable pytorch-train
  • 配套操作:
    • 实时查看训练日志:sudo journalctl -u pytorch-train -f
    • 停止训练任务:sudo systemctl stop pytorch-train
    • 查看任务运行状态:sudo systemctl status pytorch-train
注意事项
  • 所有后台运行方案都建议将日志持久化写入文件,不要依赖终端打印,避免后续无法回溯训练报错、指标记录
  • 提前确认EC2实例配置了无操作不休眠、系统盘/数据盘存储空间充足,避免实例本身的休眠、关机、磁盘满导致任务中断
  • 如果训练周期很长,建议在代码里加入断点续训逻辑,避免极端情况(比如实例意外重启)导致训练进度丢失

内容的提问来源于stack exchange,提问作者user13410977

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:01:19