VSCode SSH连接数小时后断开,如何维持神经网络训练?
解决VSCode SSH断开导致神经网络训练终止的方案
一、保持SSH连接稳定
1. 本地SSH客户端配置修改
在本地~/.ssh/config文件中添加心跳配置,防止服务器主动断开连接:
Host 你的服务器别名 HostName 服务器IP地址 User 服务器用户名 ServerAliveInterval 300 # 每5分钟发送一次心跳包 ServerAliveCountMax 10 # 连续10次未收到回应才断开
修改后保存,下次通过VSCode SSH连接时会自动应用该配置。
2. 服务器端SSH配置修改
登录服务器,修改/etc/ssh/sshd_config文件:
ClientAliveInterval 300 ClientAliveCountMax 10
保存后重启SSH服务:
sudo systemctl restart sshd
3. VSCode内置设置调整
在VSCode的设置中(快捷键Ctrl+,),搜索并修改以下选项:
Remote.SSH: Server Alive Interval:设置为300000(单位毫秒,即5分钟),让VSCode定期向服务器发送心跳。Remote.SSH: Connect Timeout:调大超时时间,比如设置为1800000(30分钟)。
二、让训练进程脱离终端后台运行(更可靠)
即使SSH断开,服务器上的训练进程仍能持续运行,推荐以下工具:
1. 使用nohup命令
直接在服务器终端中启动训练任务,将进程挂到后台:
# 运行Python训练脚本,输出日志到training.log nohup python your_training_script.py > training.log 2>&1 & # 若使用Jupyter Notebook,先后台启动Jupyter服务 nohup jupyter notebook --no-browser --port=8888 > jupyter.log 2>&1 &
nohup会让进程忽略挂起信号,即使SSH断开也不会终止> training.log 2>&1将标准输出和错误输出重定向到日志文件,方便后续查看训练状态- 运行后会返回进程ID,可通过
ps aux | grep your_training_script.py查看进程状态
2. 使用screen会话管理
- 创建新会话:
screen -S training_session
- 在会话中启动训练任务(比如打开Jupyter Notebook或运行脚本)
- 按下
Ctrl+A+Ddetach会话,此时会话在后台运行,SSH断开不影响 - 重新连接服务器后,恢复会话:
# 查看所有会话 screen -ls # 恢复指定会话 screen -r training_session
3. 使用tmux会话管理(更推荐,功能更丰富)
- 创建新会话:
tmux new -s training_session
- 在会话中启动训练任务
- 按下
Ctrl+B+Ddetach会话 - 重新连接服务器后恢复会话:
# 查看所有会话 tmux ls # 恢复指定会话 tmux attach -t training_session
额外提示
- 训练过程中定期保存模型检查点(checkpoint),避免意外情况导致进度丢失
- 若使用VSCode的Jupyter扩展,建议在服务器端的
screen/tmux会话中启动Jupyter内核,下次重新连接VSCode时,可直接选择已运行的内核继续查看训练状态
内容的提问来源于stack exchange,提问作者Samuel Queiroz
相关产品推荐
相关产品推荐

