GenStudio 推出 Infini 编码套餐(Coding Plan)GenStudio 推出 Infini 编码套餐(Coding Plan) ,接入多家顶尖厂商的主流编程模型了解更多
Skip to content

发起 MPI 分布式训练

AIStudio 任务功能支持发起 MPI 的分布式训练任务,同时也支持常见的 Horovod、DeepSpeed 等基于 MPI 的训练框架。本文详细描述了如何配置和启动 MPI 分布式训练任务。

基本流程

在AIStudio 任务中,通过以下步骤启动 MPI 分布式训练任务:

  1. 创建训练任务:配置任务 Worker 规格、Worker 数量,设置「分布式框架」为 MPI
  2. 初始化:平台为创建对应的 pod,配置各种训练角色(launcher worker),并注入必要环境变量,供用户代码获取环境信息。
  3. 容错检查:训练开始前,平台发起自检,确保所有 Worker 之间网络通畅、GPU、存储工作正常。
  4. 训练执行
    • 若任意 pod 失败(退出码非 0),训练任务失败。
    • 若所有 pod 成功完成(退出码为 0),训练任务成功。

平台内置环境变量

平台自动在 /etc/mpi/hostfile 生成节点列表,您无需手动构建 hostfile。

针对 Open MPIMPICH 框架,平台自动生成了默认的 hostfile 路径,并注入了需要用到的环境变量,供用户在训练代码或者入口命令中使用。

  • OMPI_MCA_orte_default_hostfile=/etc/mpi/hostfile:OpenMPI 的默认 hostfile 路径,用 mpirun 启动任务时无需再指定 hostfile
  • MPICH_HOSTFILE=/etc/mpi/hostfile: MPICH 的默认 hostfile 路径,用 mpiexec 启动任务时无需再指定 hostfile

例如,对于 2 个 Worker,每个 Worker 1 个 GPU 的 MPI 训练任务,在任务运行后,登录 launcher 角色的节点,可看到如下环境变量:

shell
root@jo-da4r6pellvvq4tmz-launcher-0:~# env | grep mpi
OMPI_MCA_orte_default_hostfile=/etc/mpi/hostfile
MPICH_HOSTFILE=/etc/mpi/hostfile

root@jo-da4r6pellvvq4tmz-launcher-0:~# cat /etc/mpi/hostfile 
jo-da4r6pellvvq4tmz-launcher-0 slots=1
jo-da4r6pellvvq4tmz-worker-0 slots=1

启动命令

通过网页提交训练任务时,可以在界面中填写 Bash 启动命令(entrypoint)。以下是简单实例详细说明:

shell
/usr/local/openmpi/bin/mpirun --allow-run-as-root \
--np 16
-x ... \
-x ... \
...

注意

请注意添加 --allow-run-as-root 允许 root 用户运行。

重要

推荐阅读优化训练任务启动命令

故障排除

  • 在任务运行过程中,可从网页端登录任务 Worker,访问 Web Terminal。在任务详情页底部可看到登录按钮。
  • 任务功能提供 atlctl 命令行调试工具,您可以从 Web Terminal 登录任意的任务 Worker,执行停止任务、统一下发测试命令等调试工作。

常见问题

我应该用 MPI 还是 PyTorch DDP?

  • 推荐 PyTorch DDP:如果您进行的是标准的 PyTorch 模型训练(如 LLM 训练),推荐使用 PyTorch DDP 模式(基于 torchrun)。它对云原生环境支持更好,容错性更强。
  • 使用 MPI:如果您运行的是传统科学计算应用(如流体力学),或者使用了依赖 MPI 的特定 AI 框架(如 Horovod、DeepSpeed 的 MPI 模式),请使用本篇文档介绍的 MPI 模式。