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

使用nohup训练模型跑完100epoch自动重启,如何让其完成后自动退出?

nohup训练完成后自动终止解决方案

核心前提:nohup本身不具备命令自动重启能力,你遇到的训练完成后自动重跑问题,本质是你传递给nohup的启动命令、训练脚本或框架配置中包含自动重启逻辑,按以下步骤排查修改即可:

  • 第一步:检查启动命令是否嵌套了循环
    如果你用了类似nohup sh -c 'while true; do python train.py; done' > run.log 2>&1 &这种带无限循环的启动命令,直接删除外层的while循环,仅保留单条训练命令即可,nohup执行完单条命令后会自动退出。

  • 第二步:检查训练框架的自动重启配置
    主流深度学习框架(PyTorch Lightning、Hugging Face Accelerate、DeepSpeed等)的容错机制默认会在任务异常退出时自动重启,部分场景下会把训练正常结束误判为异常:

    • PyTorch Lightning 将Trainer参数中的max_restarts设为0
    • DeepSpeed 在启动参数中删除--auto-resume或设置--max-resume=0
    • 其他框架直接关闭自动恢复/自动重启的相关开关即可
  • 第三步:在训练脚本中增加主动退出逻辑
    可以在100轮训练完成的代码分支后,主动终止进程避免残留,参考代码示例:

    # 训练循环结束后执行
    save_model_weights() # 替换为你的模型保存逻辑
    import os, signal
    # 终止当前进程组,彻底结束所有训练相关子进程
    os.killpg(os.getpgid(os.getpid()), signal.SIGTERM)
    
  • 第四步:留存日志定位异常
    如果修改后仍有问题,启动命令明确指定日志输出:
    nohup python train.py > train_full.log 2>&1 &
    训练结束后查看日志末尾的退出栈信息,即可定位触发重启的具体逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:36:07