MPI 是一种基于信息传递的并行编程技术。机器学习平台支持用户发起 MPI 的分布式训练任务,同时也支持常见的 Horovod、DeepSpeed 等基于 MPI 的训练框架。本文以上述两种框架为例,介绍如何在机器学习平台上发起分布式训练任务。
MPI
,按需配置各种训练角色并提交任务表单进入任务创建环节。MPI 仅包含 worker 这一种角色用于训练模型,其中编号为 0
的 worker(worker0)负责执行入口命令(其它 worker 不会执行入口命令)及保存 checkpoint 或日志的任务。0
)则训练任务失败。0
)则训练任务成功。平台为用户注入了有可能在训练代码或者入口命令需要用到的环境变量,分别通过 Horovod 和 DeepSpeed 官方提供的启动命令(horovodrun
和 deepspeed
)结合环境变量启动训练任务。
环境变量
172.22.128.95 slots=2 172.22.128.94 slots=2
如需使用【自定义训练】模块的通用环境变量详见通用环境变量列表。
关键参数
使用如下命令启动 Horovod 和 DeepSpeed 分布式训练任务:
-H
或者 -hostfile
启动任务。horovodrun -np $MLP_MPI_NP -H $MLP_MPI_HOSTS python <代码文件的绝对路径> horovodrun -np $MLP_MPI_NP -hostfile $MLP_MPI_HOSTFILE python <代码文件的绝对路径>
--hostfile
启动任务。多机任务:deepspeed --hostfile=$MLP_MPI_HOSTFILE <代码文件的绝对路径>
deepspeed --hostfile $MLP_MPI_HOSTFILE --master_addr ${MLP_WORKER_0_HOST} --force_multi
当用户在 MPI 的任务容器中调试时,通常需要在所有容器中安装相同的依赖包或者执行相同的代码,平台提供了对应的工具用于该场景,详见如何使用 MPI 的 allrun 工具。
具体的示例代码详见 GitHub。