后台运行进程
GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台
在正常情况下,使用命令
python train.py 运行机器学习的训练或推理任务时,该进程会挂载到系统的前台,这意味着如果您通过SSH连接到远程实例进行操作,一旦SSH连接因网络延迟或波动等原因中断,与SSH会话关联的前台进程(包括您的训练任务)也将被终止,这会导致您失去所有未保存的训练进度。 为了防止由于网络中断导致训练进程意外关闭,推荐通过
SSH登录实例 后,使用诸如
Tmux、
SCREEN 或
nohup 等工具来运行长时间的任务,这些工具可以帮助您将训练/推理/长时间运行的进程放到后台运行,从而在断开SSH连接后仍能保持运行。#autodl#恒源云#矩池云#算力云#恒源云 实例迁移#autodl 官网#autodi#GpuMall#GPU云#AutoDL#AotuDL 算力云#GpuMall智算云#AI#大数据#算力租赁#大模型#深度学习#人工智能#算力变现
使用这些工具,您可以确保即使发生网络问题,您的训练任务也不会中断,并且在网络恢复后可以继续监控进程的状态。
Tmux
tmux 是一个强大的终端复用器,它允许您在一个窗口中运行多个终端会话,并且可以在断开连接后继续保持这些会话运行;以下是基本的
tmux 使用方法,以及如何使用它将训练进程放到后台的示例:
1. 基本 Tmux 使用
1. 启动一个新的 tmux 会话
tmux new
-s
session_name
这里
session_name 是您给新会话指定的名字
2. 分离 tmux 会话 在
tmux 会话中,按下
Ctrl + b然后按
d ,这将
分离 您的 tmux 会话,让它在后台运行。
3. 列出所有 tmux 会话
tmux
ls
这个命令将显示所有正在运行的 tmux 会话。
4. 重新连接到现有的 tmux 会话
tmux attach
-t
session_name
tmux a
-t
session_name
使用您之前创建的会话名字来重新连接
5. 关闭当前 tmux 会话 在
tmux 会话中,可以通过输入
exit 或者按下
Ctrl + d 来退出会话;当最后一个窗口被关闭时,
tmux 会话也会结束。
2. 使用 Tmux 运行训练进程示例
1. 启动一个新的 tmux 会话
tmux new
-s
training
这将创建一个名为
training 的新会话。
2. 在
tmux 会话中,启动您的训练进程
python train.py
这将开始运行您的训练脚本,并且训练过程中的日志输出也会在这个
tmux会话中打印。
3. 一旦训练开始运行,您可以通过按
Ctrl + b 然后按
d 来从
tmux 会话中分离,让训练进程在后台继续运行。
4. 关闭您的SSH连接或关闭终端,您的训练进程将在 tmux 会话中继续运行
5. 之后当您想要检查训练进程的状态时,可以重新连接到tmux会话
tmux attach
-t
training
这样,即使您的SSH连接被中断,您的训练进程也不会受到影响;通过
tmux 您可以随时重新连接到会话来查看进程的状态或输出。
SCREEN
screen 是一个功能强大的工具,它允许您在单个终端窗口中运行多个虚拟终端会话,并且可以在断开连接后保持这些会话运行,以下是 screen 的基本使用方法,以及如何使用 screen 将训练进程放到后台的示例:
1. 基本 Screen 使用
1. 启动新的 screen 会话
screen
-S
session_name
这里
session_name 是您给新会话指定的名字
2. 分离 screen 会话 在 screen 会话中,按下
Ctrl + a 然后按
d ,这将
分离 您的
screen 会话,让它在后台运行。
3. 列出所有 screen 会话
screen
-ls
4.重新连接到现有的 screen 会话 在
screen 会话中,可以通过输入
exit 来退出会话,当最后一个窗口被关闭时,
screen 会话也会结束。
2. 使用 Screen 运行训练进程示例
1. 首先,启动一个新的 screen 会话
screen
-S
training
这将创建一个名为
training 的新会话。
2. 在 screen 会话中,启动您的训练进程
python train.py
这将开始运行您的训练脚本。
3. 一旦训练开始运行,您可以通过按
Ctrl + a 然后按
d 来从
screen 会话中分离,让训练进程在后台继续运行
4. 关闭您的
SSH 连接或关闭终端,您的训练进程将在
screen 会话中继续运行
5. 之后当您想要检查训练进程的状态时,可以重新连接到
screen 会话
screen
-r
training
通过使用
screen,即使您的 SSH 连接被中断,您的训练进程也不会受到影响,通过
screen 您可以随时重新连接到会话来查看进程的状态或输出。
nohup
nohup 是一个命令行工具,用于在注销或关闭终端后继续运行命令,它可以将输出重定向到一个文件中,使得在后台运行的进程的输出不会丢失,以下是如何使用
nohup 将训练进程放到后台并持续记录日志的示例:
1. 使用 nohup 运行训练进程示例
1.使用 nohup 运行训练并重定向输出
nohup
python train.py
>
train.log
2
>
&1
&
这将在后台启动
train.py`` 脚本,并将标准输出(stdout)
和标准错误(stderr)
都重定向到 train.log`` 文件中。
2. 检查训练日志 训练过程的输出将被写入到
train.log,您可以使用以下命令动态查看日志。
tail
-f
train.log
这将显示日志文件的最新内容,并实时更新。
2. 结束通过 nohup 启动的进程
要结束通过
nohup 启动的进程,您需要先找到该进程的进程
ID(PID),然后使用
kill 命令终止它。
1. 查找进程ID
ps
aux
|
grep
train.py
这将列出所有包含
train.py 的进程,查找相应的进程ID(通常是列出的第二列)。
2. 结束进程 使用找到的
PID来终止进程
#假设 PID 为 63832
kill
63832
#执行后上述命令后,如果还可以通过 ps aux | grep train.py 看到进程,则需要使用 -9 参数来强制终止
kill
-9
63832
请注意,直接使用
kill 命令通常会发送一个优雅的终止信号
(SIGTERM),允许进程安全地清理和关闭,如果进程没有响应,需要使用
kill -9 PID 强制终止。