
# 跨资源池训练作业配置下发
#### 操作场景
本章节的操作均在本地云进行。跨资源池训练需要基于资源池联邦下发跨资源池训练作业，端到端操作流程和单资源池训练作业类似，支持在资源池联邦下选择一个或多个资源池配置训练任务，同一个资源池仅支持配置一个训练任务。
#### 前提条件
- 在创建跨资源池训练作业前，需要确认资源池联邦状态处于运行中，且至少成功纳管一个物理资源池。
- 资源池联邦纳管的资源池对应的CCE集群已完成环境准备工作。
 
#### 操作步骤
1. 使用租户账号登录ModelArts管理控制台。在左侧导航栏选择"模型训练 \> 训练作业"，进入训练作业界面。
2. 在右上角单击"创建训练作业"，选择"跨资源池训练"，进入创建跨资源池训练作业界面。 
   图1跨资源池训练   
   ![](https://support.huaweicloud.com/bestpractice-ucs/zh-cn_image_0000002584471014.png "点击放大")
   
   
   
   
3. 在创建跨资源池训练作业界面，填写基本信息并选择资源池联邦。可参照下发参数说明进行填写。 
   图2信息填写   
   ![](https://support.huaweicloud.com/bestpractice-ucs/zh-cn_image_0000002614950795.png "点击放大")
   
   图3选择实例规格   
   ![](https://support.huaweicloud.com/bestpractice-ucs/zh-cn_image_0000002614990687.png "点击放大")
   
   表1表1 基本信息 
   | 参数名称    | 参数说明                                                                                                                                                                                                                                                               |
   |:---|:---|
   | 作业名称    | 设置作业名称。                                                                                                                                                                                                                                                            |
   | 描述（可选）  | 作业描述。                                                                                                                                                                                                                                                              |
   | 选择资源池联邦 | 选择已创建的资源池联邦。                                                                                                                                                                                                                                                       |
   | 实例规格    | 规格中描述了服务器类型、型号等信息。创建作业的节点需要预先安装ModelArts插件，因此实际分配的资源会低于申请的资源量，具体的资源数值会根据节点的实际情况动态调整。                                                                                                                                                                               |
   | 实例数     | 必填，根据需要选择实例数的个数。默认值为"1"。                                                                                                                                                                                                                                           |
   | 选择自定义镜像 | 当平台预置的基础镜像中的软件无法满足实际程序运行需求时，支持自定义镜像进行训练，所需镜像需提前上传到SWR容器镜像服务上。 说明： - 本地云：可通过下拉框选择。  - 协同云：需要手动输入。       |
   | 代码目录    | 可选，运行用户ID不填写时默认为1000。 说明： - 本地云：可通过下拉框选择。  - 协同云：需要手动输入。   代码会被下载到/home/ma-user/modelarts/user-job-dir目录下。 |
   | 启动命令    | 必填，镜像的启动命令。具体说明请参见下方"**Pytorch** **训练插件支持**"内容。                                                                                                                                                                                                                    |
   | 运行用户ID  | 容器运行时的用户ID，该参数为选填参数，建议使用默认值1000。 如果运行用户ID配置为0，则训练容器中的运行用户是root。                                                                                                                                                                        |
   | 日志路径    | 建议选择一个空的OBS文件目录存放运行中产生的日志文件，同时需要OBS文件目录的读写权限。 说明： - 本地云：可通过下拉框选择。  - 协同云：需要手动输入。                     |
      
   **Pytorch** **训练插件支持**
   训练平台根据PyTorch训练的业务特点，结合联邦作业的资源调度模型，汇总所有联邦作业实例的信息后，为PyTorch DDP训练注入了相应的环境变量，使训练进程可以直接使用这些参数。
   使用示例：假设启动命令bash start_train.sh，其中start_train.sh中拉起torchrun进程，训练脚本为train.py，则torchrun启动命令为：
   ```
   torchrun --nproc_per_node $NPROC_PER_NODE \      --nnodes $NNODES \      --node_rank $NODE_RANK \      --master_addr $MASTER_ADDR \      --master_port $MASTER_PORT train.py  ...
   ```
   表2表2 Pytorch插件注入的ENV 
   | key            | 解释                           |
   |:---|:---|
   | MASTER_ADDR    | pytorch master节点通信地址         |
   | NNODES         | 参与训练的节点（POD）数                |
   | NPROC_PER_NODE | 每个训练节点需要拉起的进程数（对应节点上的卡数）     |
   | MASTER_PORT    | pytorch master节点监听端口，默认29500 |
   | NODE_RANK      | 当前节点（POD）在全局中的顺序             |
      
   
   
4. 配置环境变量。 
   1. PSM路由优化功能需要的参数信息需要通过环境变量进行配置。
      图4环境变量   
      ![](https://support.huaweicloud.com/bestpractice-ucs/zh-cn_image_0000002584630942.png "点击放大")
      
      - 环境变量名称：MA_PSM_STRATEGY
      
      - 环境变量值：PSM相关参数。
       
   
   2. Moxing版本指定。在跨云训练作业场景下，需要通过环境变量**MA_MOXING_FWVER** 指定moxing版本，用于下载训练代码。
      - 环境变量名称：MA_MOXING_FWVER
      
      - 环境变量值：2.4.0rc11
       
   
   3. 平台镜像版本指定。跨云训练作业需要通过环境变量**MA_CUSTOM_TOOL_IMAGE_VERSION** 指定平台工具容器的镜像版本，用于下载训练代码（为moxing提供容器环境执行下载）、上传训练日志等。
      - 环境变量名称：MA_CUSTOM_TOOL_IMAGE_VERSION
      
      - 环境变量值：1.0.0-7.2.0-b065.3
       
   
   
   
   
5. 增加训练任务并提交作业。 
   图5增加和提交作业   
   ![](https://support.huaweicloud.com/bestpractice-ucs/zh-cn_image_0000002584471018.png "点击放大")
   
   
   
 
