更新时间:2023-09-06 GMT+08:00

使用自定义镜像创建训练作业(GPU)

基于自定义镜像训练模型仅适用于旧版训练模块(仅对部分存量用户可见,新用户不可见),新版训练请参见使用自定义镜像训练模型(新版训练)

用户将自定义镜像制作完成并上传至SWR后,可在ModelArts管理控制台,使用自定义镜像创建训练作业,完成模型训练操作。

前提条件

创建训练作业

进入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,”为训练启动引导脚本。用户在制作自定义镜像过程中,可以自主实现训练启动引导脚本,也可以提前将训练代码置于自定义镜像环境中,无需遵循上述两种格式,实现完全的自定义“运行命令”

  • “环境变量”

    容器启动后,除了用户在训练作业中自行增加的“环境变量”外,其它加载的环境变量如表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地址。

  • “资源池”

    当用户选择GPU类型的资源池时,ModelArts会挂载高速固态硬盘(NVME SSD)至“/cache”目录,用户可以使用此目录来储存临时文件。

    图2 创建训练作业

运行自定义镜像训练作业

用户上传自定义镜像到SWR后,在创建自定义镜像作业时,默认已经授权ModelArts去获取镜像运行。自定义审核镜像第一次运行的时候,先审核镜像,审核内容请参见训练作业自定义镜像规范,审核失败的原因见于日志,用户根据日志做相应的修改。

图3 审核镜像失败

镜像审核成功后,后台就会开始启动用户自定义镜像容器,开始跑自定义镜像训练作业,用户可根据日志来查看训练情况。

审核成功后,再次使用相同镜像创建训练作业的时候,不会再次审核。

图4 运行日志