快速提交MPIJob训练任务

更新时间:2024-12-23 10:18:42

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

前提条件

使用限制

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

提交MPIJob类型的训练任务

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

步骤一:准备代码源

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

  • 名称:自定义代码集名称,本方案示例为:deepspeed-examples。

  • Git地址https://github.com/microsoft/DeepSpeedExamples.git

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

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

mpirun方式
deepspeed(pdsh)方式
  1. 进入新建任务页面。

    1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入DLC

    2. 在分布式训练(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

    代码配置

    选择在线配置,并选择已创建的代码配置,挂载路径保持默认。

    资源信息

    资源类型

    选择灵骏智算

    说明

    仅当工作空间同时支持使用灵骏智算资源和通用计算资源提交DLC任务时,才支持选择资源类型。

    资源来源

    选择资源配额

    资源配额

    选择已创建的灵骏智算资源配额。

    框架

    选择MPIJob

    任务资源

    • 节点数量配置为2。

    • CPU(核数)配置为4。

    • GPU(卡数)配置为1。

    • 内存(GiB)配置为8。

    • 共享内存(GiB)配置为8。

    驱动设置

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

    说明

    目前,只有灵骏智算的资源规格支持驱动设置。

  3. 单击确定

使用该方式提交分布式训练任务,启动命令的配置如下,其他参数与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作业,您需要在镜像中安装MPIJobDeepspeed所需的库。另外,您也可以从DockerHub上获取Deepspeed官方镜像,该镜像已经预装了MPIJobDeepspeed所需的库。

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

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

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

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

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

系统环境变量

MPI分布式作业中,存在LauncherWorker两种角色。这两种角色在训练过程中需要进行通信。在DLC中,针对Launcher角色已经设置了默认环境变量,您也可以根据具体场景的需求,在执行命令时配置环境变量以覆盖默认配置。

环境变量

描述

默认值

适用场景

环境变量

描述

默认值

适用场景

OMPI_MCA_btl_tcp_if_include

LauncherWorker指定通信的网卡,多个网卡之间使用半角逗号(,)分隔。

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方式启动作业。

  • 本页导读 (1)
  • 前提条件
  • 使用限制
  • 提交MPIJob类型的训练任务
  • 步骤一:准备代码源
  • 步骤二:提交分布式训练任务
  • 步骤三:查看任务详情和日志结果
  • 系统环境变量
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等