DLC是一站式的云原生深度学习训练平台,为开发者和企业提供灵活、稳定、易用和高性能的机器学习训练环境。本文为您介绍如何在DLC中使用mpirun和Deepspeed方式来提交MPIJob类型的分布式训练任务。
前提条件
-
已开通DLC后付费,并创建默认工作空间。具体操作,请参见开通PAI并创建默认工作空间。
-
已在资源组中购买灵骏智算资源并创建资源配额。具体操作,请参见灵骏智算资源概述。
使用限制
仅支持在华北6(乌兰察布)地域使用灵骏智算资源提交该任务。
提交MPIJob类型的训练任务
提交分布式训练任务的具体操作步骤如下:
步骤一:准备代码源
使用官方Deepspeed examples代码合集创建代码集,其中关键参数配置如下,其他参数取默认配置。具体操作,请参见代码配置。
-
名称:自定义代码集名称,本方案示例为:deepspeed-examples。
-
Git地址:https://github.com/microsoft/DeepSpeedExamples.git。
步骤二:提交分布式训练任务
支持使用以下两种方式提交分布式训练任务:
mpirun方式
-
进入新建任务页面。
-
登录PAI控制台。
-
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
-
在工作空间页面的左侧导航栏选择模型开发与训练 > 分布式训练(DLC),在分布式训练任务页面中单击新建任务,进入新建任务页面。
-
-
在新建任务页面,配置以下关键参数,更多参数配置详情,请参见提交任务(通过控制台)。
-
资源组:选择已创建的资源配额。
-
节点镜像:本方案提供了一个测试镜像
registry.cn-wulanchabu.aliyuncs.com/pai-dlc/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04
,用于提交MPIJob分布式训练任务。 -
任务类型:选择MPIJob。
-
执行命令:在分布式作业的每个POD中执行的脚本命令。本方案使用系统环境变量的默认配置,您也可以在执行命令中配置环境变量来覆盖默认配置。更多详细内容,请参见系统环境变量。
cd /root/code/DeepSpeedExamples/training/cifar/ # --np 2 表示启动两个节点 mpirun -np 2 --allow-run-as-root -bind-to none -map-by slot -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl ^openib python /root/code/DeepSpeedExamples/training/cifar/cifar10_tutorial.py
-
驱动设置:使用上方提供的测试镜像时,建议选择535.54.03版本的驱动。
-
任务资源配置:节点数量配置为2,CPU(核数)配置为4,内存(GB)配置为8 GB,共享内存(GB)配置为8 GB,GPU(卡数)配置为1。
-
-
单击提交。
deepspeed(pdsh)方式
使用该方式提交分布式训练任务,执行命令的配置如下,其他参数与mpirun方式配置相同。
cd /root/code/DeepSpeedExamples/training/pipeline_parallelism
deepspeed --hostfile /etc/mpi/hostfile train.py --deepspeed_config=ds_config.json -p 2 --steps=200
说明
如果您使用自定义镜像来运行Deepspeed作业,您需要在镜像中安装MPIJob和Deepspeed所需的库。另外,您也可以从DockerHub上获取Deepspeed官方镜像,该镜像已经预装了MPIJob和Deepspeed所需的库。
本方案使用系统环境变量的默认配置,您也可以在执行命令中配置环境变量来覆盖默认配置。更多详细内容,请参见系统环境变量。
步骤三:查看任务详情和日志结果
-
任务提交成功后,在分布式训练任务页面,单击任务的名称。
-
在任务详情页面,即可查看任务的基本信息和执行状态。
-
在任务详情页面底部的实例区域,单击launcher类型的实例操作列下的日志,查看作业运行情况。
系统环境变量
在MPI分布式作业中,存在Launcher和Worker两种角色。这两种角色在训练过程中需要进行通信。在DLC中,针对Launcher角色已经设置了默认环境变量,您也可以根据具体场景的需求,在执行命令时配置环境变量以覆盖默认配置。
环境变量 |
描述 |
默认值 |
适用场景 |
OMPI_MCA_btl_tcp_if_include |
为Launcher和Worker指定通信的网卡,多个网卡之间使用半角逗号(,)分隔。 |
eth0 |
适用于使用mpirun方式启动作业。 |
OMPI_MCA_orte_default_hostfile |
为mpirun命令指定hostfile,在PAI-DLC中可以自动生成hostfile,无需手动修改。 |
|
|
OMPI_MCA_plm_rsh_agent |
为Launcher指定如何远程启动Worker任务。 |
|
|
PDSH_RCMD_TYPE |
PDSH的远程命令类型。 |
ssh |
适用于使用deepspeed方式启动作业。 |
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/164393.html