AI开发平台ModelArts-使用自定义镜像创建训练作业(GPU):创建训练作业
创建训练作业
进入ModelArts管理控制台,创建训练作业。在使用自定义镜像创建作业时,需关注“算法来源”、“环境变量”和“资源池”参数的设置。
- “算法来源”
选择“自定义”页签。
- “镜像地址”:镜像上传到SWR后生成的地址。
图1 SWR镜像地址
- “代码目录”:训练代码文件存储的OBS路径。
- “运行命令”:镜像启动后的运行命令,基本格式如下所示:
bash /home/work/run_train.sh {UserCommand}
bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}
“run_train.sh”为训练启动引导脚本。执行该脚本后,ModelArts将“代码目录”下的所有内容递归下载到容器本地路径,下载后的容器本地路径为 “/home/work/user-job-dir/${“代码目录”的最后一级名称}/”。
例如,训练代码文件的OBS路径为“obs://obs-bucket/new/train.py”,“代码目录”选择“obs://obs-bucket/new/”时,则下载后的容器本地代码目录对应为“/home/work/user-job-dir/new/”。下载后的容器本地训练代码路径为“/home/work/user-job-dir/new/train.py”,运行命令可以设置为:bash /home/work/run_train.sh python /home/work/user-job-dir/new/train.py {python_file_parameter}
使用自定义镜像创建训练作业过程中,ModelArts 允许用户完全自定义“运行命令”。“运行命令”中提到以下两种基本格式:
bash /home/work/run_train.sh {UserCommand}
bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}
其中,“run_train.sh,”为训练启动引导脚本。用户在制作自定义镜像过程中,可以自主实现训练启动引导脚本,也可以提前将训练代码置于自定义镜像环境中,无需遵循上述两种格式,实现完全的自定义“运行命令”。
- “镜像地址”:镜像上传到SWR后生成的地址。
- “环境变量”
容器启动后,除了用户在训练作业中自行增加的“环境变量”外,其它加载的环境变量如表1所示。用户可以根据需求来确认在自己训练脚本的python中是否要使用这些环境变量,也可以通过运行命令中的“{python_file_parameter}”传入相关参数。
表1 可选环境变量说明 环境变量
说明
DLS_TASK_INDEX
当前容器索引,容器从0开始编号。
DLS_TASK_NUMBER
容器总数。对应“计算节点个数”。
DLS_APP_URL
代码目录。对应界面上“代码目录”配置,会加上协议名。比如,可直接使用“$DLS_APP_URL/*.py”来读取OBS下的文件。
DLS_DATA_URL
数据集位置。对应界面上“数据来源”,会加上协议名。
DLS_TRAIN_URL
训练输出位置。对应界面上“训练输出位置”,会加上协议名。
BATCH_{jobName}.0_HOSTS(单机)
当选择单机时,即计算节点个数为1时,此环境变量为“BATCH_{jobName}.0_HOSTS”。
HOSTS环境变量的格式为“hostname:port”。一个容器可以看到同一个作业中所有容器的HOSTS,根据索引的不同,分别为“BATCH_CUSTOM0_HOSTS”、“BATCH_CUSTOM1_HOSTS”等。当资源池为8GPU规格的专属资源池时, 容器的网络类型为主机网络,并且可以使用主机IB网络加速通信。当使用其他资源池时为容器网络。
说明:使用主机IB网络加速通信时,IPoIB特性需要ip_mapper.py工具获取ib0网卡IP地址。