调试 Job

本教程演示如何使用 Job 的调试模式这一功能来对计算任务进行调试。

运行示例

请按照使用方法准备环境,然后前往本教程对应的示例,参照其 README 文档运行。

通过 SSH 远程连接

对于开启了 SSH 服务的容器,建立 SSH 连接的操作步骤和 Notebook 相同,请参照通过 SSH 远程使用 Notebook进行操作。唯一不同的是端口转发使用 t9k-pf pod 命令,而非 t9k-pf notebook 命令:

t9k-pf pod <POD_NAME> 5001:2222 -n <PROJECT_NAME>

进行调试

不论是进入休眠的容器,还是远程连接开启了 SSH 服务的容器,调试都是通过执行一些命令来进行。例如使用 nvidia-smi 命令检查当前可用的 GPU,再使用 ls 命令检查训练脚本是否存在:

# 在容器中
nvidia-smi
ls

然后使用 torchrun 命令启动训练:

# 在容器中
cd ~/tutorial-examples/job/debug
torchrun --nnodes 1 --nproc_per_node 4 --rdzv_backend c10d torch_mnist_trainingjob.py --save_path model_state_dict.pt --log_dir log --backend nccl

随即分布式训练开始进行。如果训练脚本出错,则可以立即在终端中进行调试,不会造成 Job 的失败。调试完成后禁用 debug 模式(将 spec.runMode.debug.enable 设为 false,或直接注释第 6-12 行),再次创建 PyTorchTrainingJob 则正常启动训练。