进行数据并行训练

本教程演示使用 PyTorchTrainingJob 对 PyTorch 模型进行多工作器同步训练(使用 torch.nn.parallel.DistributedDataParallel 分布式数据并行模块)。本教程对应示例使用 PyTorchTrainingJob 进行数据并行训练

本教程的 Apps 架构如下图所示:

app-arch

准备工作

创建一个名为 tutorial、大小 1 Gi 的 PVC,然后安装一个同样名为 tutorial 的 JupyterLab App 挂载该 PVC,镜像和资源不限。

进入 JupyterLab,启动一个终端,执行以下命令以克隆 t9k/tutorial-examples 仓库:

cd ~
git clone https://github.com/t9k/tutorial-examples.git

启动训练(创建 PyTorchTrainingJob)

安装一个 Job Manager App(如有 Job Manager 则直接复用),进入 Job Manager 的网页 UI(控制台)。在左侧导航菜单点击 Job 进入 Job 管理页面,这里展示了所有已创建的 Job。点击右上角的创建,然后点击 PyTorch 进入 PyTorchTrainingJob 创建页面:

create

在 PyTorchTrainingJob 创建页面,填写配置如下:

  • 基本信息部分:
    • 名称填写 torch-mnist-trainingjob
    • 打开使用 TorchRun最大重启次数填写 3单节点最大进程数填写 4
  • worker 部分:
    • 镜像填写 t9kpublic/pytorch-1.13.0:sdk-0.5.2
    • 参数填写 torch_mnist_trainingjob.py "--save_path=model_state_dict.pt" "--log_dir=log" "--backend=nccl"
    • CPU 上限内存上限分别填写 816GiCPU 请求值内存请求值分别填写 48Gi
    • GPU 选择 nvidia.com/gpuGPU Value 填写 4
    • 工作目录填写 /t9k/mnt/tutorial-examples/job/pytorchtrainingjob/ddp
    • 添加一个存储卷PersistentVolumeClaim 选择 tutorial绑定名称填写 data绑定路径填写 /t9k/mnt

然后点击创建

create-details

查看训练信息(查看 PyTorchTrainingJob 详情)

回到 Job 管理页面,可以看到名为 torch-mnist-trainingjob 的 PyTorchTrainingJob 正在运行,点击其名称进入详情页面:

running

可以看到刚才创建的 PyTorchTrainingJob 的基本信息,以及状况和事件信息:

details

点击上方的副本标签页,查看 PyTorchTrainingJob 的 Pod 信息;点击副本右侧的  > 日志以查看训练脚本执行过程中的日志输出:

replicas
view-log

点击上方的资源监测标签页,查看 PyTorchTrainingJob 运行过程中使用集群计算资源、网络资源和存储资源的情况:

resources

一段时间之后,PyTorchTrainingJob 的状态变为 Succeeded,表示训练成功完成。

done

若 PyTorchTrainingJob 在运行过程中出错,其状态会变为 Error,并在事件信息和 Pod 信息部分显示错误信息,此时需要根据给出的错误信息进行问题排查。

查看训练指标

训练产生的 tfevents 文件保存在 PVC 中。回到 JupyterLab,创建一个 TensorBoard 实例。点击 TensorBoard 图标:

tensorboard1

直接点击 Create TensorBoard

tensorboard2

可以查看可视化展示的训练和验证指标:

tensorboard3

删除 PyTorchTrainingJob

回到 Job 管理页面,点击 PyTorchTrainingJob 右侧的 > 删除,确认以删除 PyTorchTrainingJob:

delete