全部产品
Search
文档中心

人工智能平台 PAI:快速提交MPIJob训练任务

更新时间:Jun 03, 2024

DLC是一站式的云原生深度学习训练平台,为开发者和企业提供灵活、稳定、易用和高性能的机器学习训练环境。本文为您介绍如何在DLC中使用mpirun和Deepspeed方式来提交MPIJob类型的分布式训练任务。

前提条件

使用限制

仅支持在华北6(乌兰察布)地域使用灵骏智算资源提交该任务。

提交MPIJob类型的训练任务

提交分布式训练任务的具体操作步骤如下:

步骤一:准备代码源

使用官方Deepspeed examples代码合集创建代码集,其中关键参数配置如下,其他参数取默认配置。具体操作,请参见代码配置

步骤二:提交分布式训练任务

支持使用以下两种方式提交分布式训练任务:

mpirun方式

  1. 进入新建任务页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 分布式训练(DLC),在分布式训练(DLC)页面中单击新建任务,进入新建任务页面。

  2. 新建任务页面,配置以下关键参数,更多参数配置详情,请参见创建训练任务

    • 节点镜像:本方案提供了一个测试镜像,单击镜像地址,在文本框中输入registry.cn-wulanchabu.aliyuncs.com/pai-dlc/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04,用于提交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
    • 资源配额:选择已创建的资源配额。

    • 框架:选择MPIJob

    • 任务资源节点数量配置为2,CPU(核数)配置为4,GPU(卡数)配置为1,内存(GiB)配置为8,共享内存(GiB)配置为8。

    • 驱动设置:使用上方提供的测试镜像时,建议选择535.54.03版本的驱动。

  3. 单击确定

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所需的库。

本方案使用系统环境变量的默认配置,您也可以在启动命令中配置环境变量来覆盖默认配置。更多详细内容,请参见系统环境变量

步骤三:查看任务详情和日志结果

  1. 任务提交成功后,在分布式训练(DLC)页面,单击任务的名称。

  2. 在任务详情页面,即可查看任务的基本信息和执行状态。

  3. 在任务详情页面底部的实例区域,单击launcher类型的实例操作列下的日志,查看作业运行情况。image

系统环境变量

在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,无需手动修改。

/etc/mpi/hostfile

OMPI_MCA_plm_rsh_agent

为Launcher指定如何远程启动Worker任务。

/etc/mpi/kubexec.sh

PDSH_RCMD_TYPE

PDSH的远程命令类型。

ssh

适用于使用DeepSpeed方式启动作业。