PyTorch 2.8镜像实战教程使用screennohup保障长时间训练任务不中断1. 环境准备与快速验证1.1 镜像基础信息确认首先让我们确认这个PyTorch 2.8镜像的基本配置# 查看系统基本信息 cat /etc/os-release # 查看GPU信息 nvidia-smi # 验证PyTorch环境 python -c import torch; print(PyTorch版本:, torch.__version__); print(CUDA可用:, torch.cuda.is_available())这个镜像已经预装了所有必要的深度学习组件PyTorch 2.8 (CUDA 12.4编译版)CUDA Toolkit 12.4 cuDNN 8常用工具包xFormers、FlashAttention-2等系统工具screen、htop等1.2 工作目录结构说明镜像预设了合理的目录结构/workspace # 主工作目录 ├── output # 训练输出目录 ├── models # 模型存放目录 /data # 数据盘挂载点建议将大型数据集放在/data目录模型文件放在/workspace/models训练输出放在/workspace/output。2. 长时间训练任务面临的问题2.1 常见中断场景在深度学习训练过程中我们经常会遇到SSH连接超时断开导致训练终止网络波动造成连接中断本地电脑休眠或关机训练脚本因终端关闭而被终止2.2 传统解决方案的不足常见的解决方法是使用让任务后台运行 → 但终端关闭后仍会终止使用tmux→ 学习曲线较陡使用Jupyter Notebook → 不适合长时间训练3. screennohup组合方案详解3.1 screen基础使用screen是一个终端复用工具可以创建持久会话# 安装screen如果未预装 sudo apt-get install screen # 创建新会话 screen -S training_session # 查看现有会话 screen -ls # 恢复会话 screen -r training_session3.2 nohup确保进程持续运行nohup可以让命令忽略挂断信号# 基本用法 nohup python train.py train.log 21 3.3 组合使用最佳实践推荐的工作流程创建screen会话screen -S pytorch_train在screen会话中启动训练nohup python train.py --batch_size 32 --epochs 100 train.log 21 查看日志tail -f train.log暂时分离会话(按CtrlA然后按D)重新连接screen -r pytorch_train4. 实战案例图像分类任务4.1 准备训练脚本示例train.pyimport torch import torchvision from torch import nn, optim # 检查GPU可用性 device torch.device(cuda if torch.cuda.is_available() else cpu) print(fUsing device: {device}) # 准备数据集 transform torchvision.transforms.Compose([ torchvision.transforms.ToTensor(), torchvision.transforms.Normalize((0.5,), (0.5,)) ]) trainset torchvision.datasets.CIFAR10(root/data, trainTrue, downloadTrue, transformtransform) trainloader torch.utils.data.DataLoader(trainset, batch_size32, shuffleTrue) # 定义模型 model torchvision.models.resnet18(pretrainedTrue) model.fc nn.Linear(512, 10) model model.to(device) # 训练循环 criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lr0.001) for epoch in range(100): for i, (inputs, labels) in enumerate(trainloader): inputs, labels inputs.to(device), labels.to(device) optimizer.zero_grad() outputs model(inputs) loss criterion(outputs, labels) loss.backward() optimizer.step() if i % 100 0: print(fEpoch {epoch}, Batch {i}, Loss: {loss.item()})4.2 启动长时间训练使用screennohup组合screen -S cifar10_train cd /workspace nohup python train.py cifar10.log 21 4.3 监控训练状态即使断开SSH也可以通过以下方式监控重新连接后查看screen会话screen -ls screen -r cifar10_train直接查看日志tail -f /workspace/cifar10.log使用htop监控资源htop5. 高级技巧与问题排查5.1 内存与显存管理在长时间训练中需要注意定期检查显存使用watch -n 1 nvidia-smi如果显存不足可以减小batch size使用梯度累积启用混合精度训练5.2 训练中断后的恢复如果训练意外停止检查日志找出中断原因修改脚本支持从检查点恢复# 保存检查点 torch.save({ epoch: epoch, model_state_dict: model.state_dict(), optimizer_state_dict: optimizer.state_dict(), loss: loss, }, checkpoint.pth) # 加载检查点 checkpoint torch.load(checkpoint.pth) model.load_state_dict(checkpoint[model_state_dict]) optimizer.load_state_dict(checkpoint[optimizer_state_dict]) start_epoch checkpoint[epoch]5.3 常见问题解决screen会话丢失screen -D -r session_name # 强制恢复nohup输出不更新 检查磁盘空间df -hGPU内存泄漏 定期添加torch.cuda.empty_cache()6. 总结与最佳实践通过本教程我们学习了如何利用screennohup组合来保障PyTorch长时间训练任务的稳定性。以下是关键要点标准工作流程始终通过screen创建会话在会话中使用nohup启动训练定期保存检查点资源监控建议# 查看GPU状态 watch -n 1 nvidia-smi # 查看系统资源 htop # 查看训练日志 tail -f training.log扩展建议考虑使用更专业的工具如Slurm集群环境对于超长训练设置自动检查点和重启机制使用TensorBoard等工具远程监控训练进度获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
PyTorch 2.8镜像实战教程:使用screen+nohup保障长时间训练任务不中断
PyTorch 2.8镜像实战教程使用screennohup保障长时间训练任务不中断1. 环境准备与快速验证1.1 镜像基础信息确认首先让我们确认这个PyTorch 2.8镜像的基本配置# 查看系统基本信息 cat /etc/os-release # 查看GPU信息 nvidia-smi # 验证PyTorch环境 python -c import torch; print(PyTorch版本:, torch.__version__); print(CUDA可用:, torch.cuda.is_available())这个镜像已经预装了所有必要的深度学习组件PyTorch 2.8 (CUDA 12.4编译版)CUDA Toolkit 12.4 cuDNN 8常用工具包xFormers、FlashAttention-2等系统工具screen、htop等1.2 工作目录结构说明镜像预设了合理的目录结构/workspace # 主工作目录 ├── output # 训练输出目录 ├── models # 模型存放目录 /data # 数据盘挂载点建议将大型数据集放在/data目录模型文件放在/workspace/models训练输出放在/workspace/output。2. 长时间训练任务面临的问题2.1 常见中断场景在深度学习训练过程中我们经常会遇到SSH连接超时断开导致训练终止网络波动造成连接中断本地电脑休眠或关机训练脚本因终端关闭而被终止2.2 传统解决方案的不足常见的解决方法是使用让任务后台运行 → 但终端关闭后仍会终止使用tmux→ 学习曲线较陡使用Jupyter Notebook → 不适合长时间训练3. screennohup组合方案详解3.1 screen基础使用screen是一个终端复用工具可以创建持久会话# 安装screen如果未预装 sudo apt-get install screen # 创建新会话 screen -S training_session # 查看现有会话 screen -ls # 恢复会话 screen -r training_session3.2 nohup确保进程持续运行nohup可以让命令忽略挂断信号# 基本用法 nohup python train.py train.log 21 3.3 组合使用最佳实践推荐的工作流程创建screen会话screen -S pytorch_train在screen会话中启动训练nohup python train.py --batch_size 32 --epochs 100 train.log 21 查看日志tail -f train.log暂时分离会话(按CtrlA然后按D)重新连接screen -r pytorch_train4. 实战案例图像分类任务4.1 准备训练脚本示例train.pyimport torch import torchvision from torch import nn, optim # 检查GPU可用性 device torch.device(cuda if torch.cuda.is_available() else cpu) print(fUsing device: {device}) # 准备数据集 transform torchvision.transforms.Compose([ torchvision.transforms.ToTensor(), torchvision.transforms.Normalize((0.5,), (0.5,)) ]) trainset torchvision.datasets.CIFAR10(root/data, trainTrue, downloadTrue, transformtransform) trainloader torch.utils.data.DataLoader(trainset, batch_size32, shuffleTrue) # 定义模型 model torchvision.models.resnet18(pretrainedTrue) model.fc nn.Linear(512, 10) model model.to(device) # 训练循环 criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lr0.001) for epoch in range(100): for i, (inputs, labels) in enumerate(trainloader): inputs, labels inputs.to(device), labels.to(device) optimizer.zero_grad() outputs model(inputs) loss criterion(outputs, labels) loss.backward() optimizer.step() if i % 100 0: print(fEpoch {epoch}, Batch {i}, Loss: {loss.item()})4.2 启动长时间训练使用screennohup组合screen -S cifar10_train cd /workspace nohup python train.py cifar10.log 21 4.3 监控训练状态即使断开SSH也可以通过以下方式监控重新连接后查看screen会话screen -ls screen -r cifar10_train直接查看日志tail -f /workspace/cifar10.log使用htop监控资源htop5. 高级技巧与问题排查5.1 内存与显存管理在长时间训练中需要注意定期检查显存使用watch -n 1 nvidia-smi如果显存不足可以减小batch size使用梯度累积启用混合精度训练5.2 训练中断后的恢复如果训练意外停止检查日志找出中断原因修改脚本支持从检查点恢复# 保存检查点 torch.save({ epoch: epoch, model_state_dict: model.state_dict(), optimizer_state_dict: optimizer.state_dict(), loss: loss, }, checkpoint.pth) # 加载检查点 checkpoint torch.load(checkpoint.pth) model.load_state_dict(checkpoint[model_state_dict]) optimizer.load_state_dict(checkpoint[optimizer_state_dict]) start_epoch checkpoint[epoch]5.3 常见问题解决screen会话丢失screen -D -r session_name # 强制恢复nohup输出不更新 检查磁盘空间df -hGPU内存泄漏 定期添加torch.cuda.empty_cache()6. 总结与最佳实践通过本教程我们学习了如何利用screennohup组合来保障PyTorch长时间训练任务的稳定性。以下是关键要点标准工作流程始终通过screen创建会话在会话中使用nohup启动训练定期保存检查点资源监控建议# 查看GPU状态 watch -n 1 nvidia-smi # 查看系统资源 htop # 查看训练日志 tail -f training.log扩展建议考虑使用更专业的工具如Slurm集群环境对于超长训练设置自动检查点和重启机制使用TensorBoard等工具远程监控训练进度获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。