
# 管理训练容器环境变量
#### 什么是环境变量
本章节展示了训练容器环境中预置的环境变量，方便用户查看，主要包括以下类型。
- 路径相关环境变量
- 分布式训练作业环境变量
- NCCL（Nvidia Collective multi-GPU Communication Library）环境变量
- OBS环境变量
- PIP源环境变量
- API网关地址环境变量
- 作业元信息环境变量
 
#### 约束限制
为了避免新设置的环境变量与系统环境变量冲突，而引起作业运行异常或失败，请在定义自定义环境变量时，不要使用"MA_"开头的名称。
#### 如何修改环境变量
用户可以在创建训练作业页面增加新的环境变量，也可以设置新的取值覆盖当前训练容器中预置的环境变量值。
![](https://support.huaweicloud.com/usermanual-standard-modelarts/public_sys-resources/note_3.0-zh-cn.png)
为保证数据安全，请勿输入敏感信息，例如明文密码。
#### 训练容器中预置的环境变量
训练容器中预置的环境变量如下面表格所示，包括[表1]、[表2]、[表3]、[表4]、[表5]、[表6]、[表7]。
此处的环境变量取值仅为示例，涉及不同规格、引擎、Region可能取值不一样，此处仅供参考。
 表1路径相关环境变量 
| 变量名                   | 说明                                               | 示例                                                                                                                                                     | 默认值                                  |
|:---|:---|:---|:---|
| PATH                  | 可执行文件路径，已包含常用的可执行文件路径。                           | "PATH=/usr/local/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"                                                 | 可执行文件路径，不固定                          |
| LD_LIBRARY_PATH       | 动态链接库路径，已包含常用的动态库路径。                             | "LD_LIBRARY_PATH=/usr/local/seccomponent/lib:/usr/local/cuda/lib64:/usr/local/cuda/compat:/root/miniconda3/lib:/usr/local/lib:/usr/local/nvidia/lib64" | 动态链接库路径，不固定                          |
| LIBRARY_PATH          | 静态库路径，已包含常用的静态库路径。                               | "LIBRARY_PATH=/usr/local/cuda/lib64/stubs"                                                                                                             | 静态库路径，不固定                            |
| MA_HOME               | 训练作业的主目录。                                        | "MA_HOME=/home/ma-user"                                                                                                                                | /home/ma-user                        |
| MA_JOB_DIR            | 训练算法文件夹所在的父目录。                                   | "MA_JOB_DIR=/home/ma-user/modelarts/user-job-dir"                                                                                                      | /home/ma-user/modelarts/user-job-dir |
| MA_MOUNT_PATH         | ModelArts挂载至训练容器内的路径，用于临时存放训练算法、算法输入、算法输出、日志等文件。 | "MA_MOUNT_PATH=/home/ma-user/modelarts"                                                                                                                | /home/ma-user/modelarts              |
| MA_LOG_DIR            | 训练日志目录。                                          | "MA_LOG_DIR=/home/ma-user/modelarts/log"                                                                                                               | /home/ma-user/modelarts/log          |
| MA_SCRIPT_INTERPRETER | 训练脚本解释器。                                         | "MA_SCRIPT_INTERPRETER="                                                                                                                               | 未设置                                  |
   
 表2分布式训练作业环境变量 
| 变量名                                           | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 默认值                                                         |
|:---|:---|:---|:---|
| MA_CURRENT_IP                                 | 作业容器IP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | "MA_CURRENT_IP=192.168.23.38"                                                                                                                                                                                                                                                                                                                                                                                                                                      | 作业容器IP，不固定                                                  |
| MA_NUM_GPUS                                   | 作业容器的加速卡数量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | "MA_NUM_GPUS=8"                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 0                                                           |
| MA_TASK_NAME                                  | 作业容器的角色名，例如： - MindSpore、PyTorch为worker  - 强化学习引擎为learner，worker  - TensorFlow为ps，worker   | "MA_TASK_NAME=worker"                                                                                                                                                                                                                                                                                                                                                                                                                                              | worker                                                      |
| MA_NUM_HOSTS                                  | 实例数。系统自动从资源参数的"实例数"中读取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                | "MA_NUM_HOSTS=4"                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 1                                                           |
| VC_TASK_INDEX                                 | 当前容器索引，容器从0开始编号。单机训练的时候，该字段无意义。在多机作业中，用户可以根据这个值来确定当前容器运行的算法逻辑。                                                                                                                                                                                                                                                                                                                                                                                                                         | "VC_TASK_INDEX=0"                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 0                                                           |
| VC_WORKER_NUM                                 | 训练作业使用的实例数量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | "VC_WORKER_NUM=4"                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 1                                                           |
| VC_WORKER_HOSTS                               | 多节点训练时，每个节点的域名地址，按顺序以英文逗号分隔，可以通过域名解析获取IP地址。                                                                                                                                                                                                                                                                                                                                                                                                                                            | "VC_WORKER_HOSTS=modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-0.modelarts-job-a0978141-1712-4f9b-8a83-000000000000,modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-1.ob-a0978141-1712-4f9b-8a83-000000000000,modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-2.modelarts-job-a0978141-1712-4f9b-8a83-000000000000,modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-3.modelarts-job-a0978141-1712-4f9b-8a83-000000000000" | 节点的域名地址，不固定                                                 |
| ${MA_VJ_NAME}-${MA_TASK_NAME}-N.${MA_VJ_NAME} | 表示不同节点的通信域名，例如0号节点的通信域名为 "${MA_VJ_NAME}-${MA_TASK_NAME}-0.${MA_VJ_NAME}"。 N表示实例数。 警告： 此方法拼接的通信域名不适用于超节点资源池。 所有资源池（包含超节点资源池）均可直接通过VC_WORKER_HOSTS获取所有节点的通信域名。                                                                                                                        | 例如，实例数为4时，此环境变量分别为 "${MA_VJ_NAME}-${MA_TASK_NAME}-0.${MA_VJ_NAME}"、 "${MA_VJ_NAME}-${MA_TASK_NAME}-1.${MA_VJ_NAME}"、 "${MA_VJ_NAME}-${MA_TASK_NAME}-2.${MA_VJ_NAME}"、 "${MA_VJ_NAME}-${MA_TASK_NAME}-3.${MA_VJ_NAME}"。                                               | 节点的通信域名， 不固定 |
   
 表3NCCL环境变量 
| 变量名                | 说明                           | 示例                              | 默认值          |
|:---|:---|:---|:---|
| NCCL_VERSION       | NCCL版本。                      | "NCCL_VERSION=2.7.8"            | NCCL库版本，不固定  |
| NCCL_DEBUG         | NCCL日志等级。                    | "NCCL_DEBUG=INFO"               | INFO         |
| NCCL_IB_HCA        | 指定NCCL使用的IB网卡。               | "NCCL_IB_HCA=\^mlx5_bond_0"     | IB网卡，不固定     |
| NCCL_IB_TIMEOUT    | InfiniBand传输超时时间。            | "NCCL_IB_TIMEOUT=18"            | 18           |
| NCCL_IB_RETRY_CNT  | InfiniBand传输最大重试次数。          | "NCCL_IB_RETRY_CNT=15"          | 15           |
| NCCL_IB_GID_INDEX  | InfiniBand在RoCE模式下使用的全局ID索引。 | "NCCL_IB_GID_INDEX=3"           | 3            |
| NCCL_IB_TC         | InfiniBand的流量类型。             | "NCCL_IB_TC=128"                | 128          |
| NCCL_SOCKET_IFNAME | 指定NCCL使用的SOCKET网卡。           | "NCCL_SOCKET_IFNAME=bond0,eth0" | SOCKET网卡，不固定 |
| NCCL_NET_PLUGIN    | 指定NCCL使用的网络插件。               | "NCCL_NET_PLUGIN=none"          | none         |
   
 表4OBS环境变量 
| 变量名            | 说明                                             | 示例                                                    | 默认值       |
|:---|:---|:---|:---|
| MA_S3_ENDPOINT | OBS地址，确保应用程序能够正确地连接到指定的OBS。                    | "MA_S3_ENDPOINT=https://obs.region.myhuaweicloud.com" | OBS地址，不固定 |
| S3_VERIFY_SSL  | 访问OBS是否使用SSL。如果设置为0，则不验证SSL证书；如果设置为1，则验证SSL证书。 | "S3_VERIFY_SSL=0"                                     | 0         |
| S3_USE_HTTPS   | 访问OBS是否使用HTTPS。如果设置为1，则使用HTTPS；如果设置为0，则使用HTTP。 | "S3_USE_HTTPS=1"                                      | 1         |
   
 表5PIP源和API网关地址环境变量 
| 变量名               | 说明                 | 示例                                                           | 默认值                   |
|:---|:---|:---|:---|
| MA_PIP_HOST       | PIP源域名。            | "MA_PIP_HOST=repo.example.com"                               | 华为内部PIP源域名            |
| MA_PIP_URL        | PIP源地址。            | "MA_PIP_URL=http://repo.example.com/repository/pypi/simple/" | 华为内部PIP源地址            |
| MA_APIGW_ENDPOINT | ModelArts API网关地址。 | "MA_APIGW_ENDPOINT=https://modelarts.region.xxx.example.com" | ModelArts API网关地址，不固定 |
   
 表6作业元信息环境变量 
| 变量名                      | 说明              | 示例                                                                                     | 默认值         |
|:---|:---|:---|:---|
| MA_CURRENT_INSTANCE_NAME | 多节点训练时，当前节点的名称。 | "MA_CURRENT_INSTANCE_NAME=modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-1" | 当前节点的名称，不固定 |
   
 表7预检相关环境变量 
| 变量名                  | 说明                                                                                                                       | 示例  | 默认值 |
|:---|:---|:---|:---|
| MA_SKIP_IMAGE_DETECT | ModelArts预检是否开启。1和不设置表示开启预检，0表示关闭预检。 推荐开启预检，预检可提前发现节点故障、驱动故障。默认不设置（开启预检）。 | "1" | 未设置 |
   
表8卡死检测相关环境变量 
| 变量名                 | 说明                                                                                                                                                                                                 | 示例   | 默认值 |
|:---|:---|:---|:---|
| MA_HANG_DETECT_TIME | 卡死检测时间。在这段时间内IO无变化则判定为任务卡死。 取值范围：10\~720 单位：分钟 默认值：30 | "30" | 30  |
   
#### 如何查看训练环境变量
训练环境变量可能在容器中注入，也可能在进程中注入，取决于具体的业务。进程中注入的环境变量在CloudShell中不可见。
推荐使用方式[1]查看全量的环境变量。
1. 通过启动命令查看训练环境变量
   在创建训练作业时，创建方式选择"自定义算法"，启动方式选择"自定义"，"启动命令"输入为"env"，其他参数保持不变。
   图1启动命令   
   ![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000002355234958.png "点击放大")
   
   当训练作业执行完成后，在训练作业详情页面中查看"日志"。日志中即为所有的环境变量信息。
   图2查看日志   
   ![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000002388875117.png "点击放大")
   
   
2. 通过CloudShell查看训练环境变量 在CloudShell中，使用命令env获取环境变量。
   这种方式无法获取训练平台在进程中注入的环境变量（如超节点场景的VC_TASK_INDEX、VC_WORKER_NUM、VC_WORKER_HOSTS等），不推荐使用。
   
 
