创建生产训练作业(新版页面)
为了提升创建训练作业的效率,ModelArts对创建页面进行了一系列的易用性改进。现推出新版页面,旨在简化操作流程并增强界面的直观性。
模型训练是一个不断迭代和优化模型权重的过程。ModelArts的训练模块支持创建训练作业,通过模型训练试验模型结构、数据和超参的各种组合,便于找到最佳的模型结构和权重。
创建生产环境的训练作业有2种方式:
- 通过ModelArts Standard控制台的方式创建生产环境的训练作业。本文提供了新版页面的操作指导,默认页面(即旧版页面)的操作指导请参见创建生产训练作业(默认页面)。
- 通过ModelArts提供的API接口创建生产环境的训练作业,详细操作请参见使用API创建训练作业。
约束限制
默认支持创建10000条训练作业,剩余额度可以在训练作业列表页查看。

前提条件
- 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。
- 已经将用于训练作业的数据上传至OBS目录。
- 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。
说明:
ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。
- 确保使用的OBS目录与ModelArts在同一区域。
- 检查是否配置了访问授权。如果未配置,请参见快速配置ModelArts委托授权完成操作。
创建训练作业
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择 进入训练作业列表。
- 单击“创建训练作业”,进入创建训练作业页面,默认进入旧版页面,右侧单击“前往新版”进入新版创建训练作业页面。
图2 切换新版页面
- 在创建训练作业页面,完成基础配置。
表1 基础配置 参数名称
说明
作业名称
必填,训练作业的名称。
系统会自动生成一个名称,可以根据业务需求重新命名,命名规则如下:
- 支持1~64位字符。
- 可以包含大小写字母、数字、中划线(-)或下划线(_)。
描述(可选)
训练作业的简介,便于在训练作业列表了解作业信息。
- 完成作业配置。训练作业支持多种创建方式。
- 自定义算法:使用平台预置的训练常用框架、镜像或自定义镜像的方式创建训练作业。
表2 作业配置(自定义算法) 参数名称
说明
创建方式
必选,选择“自定义算法”。
启动方式
必选,选择自定义算法的启动方式。
- “预置框架”:通过预置框架或镜像创建训练作业。
- “自定义”:通过自定义镜像创建训练作业。
当平台预置的基础镜像中的软件无法满足实际程序运行需求时,支持自定义镜像进行训练,所需镜像需提前上传到SWR容器镜像服务上,详细镜像制作指导请参见准备模型训练镜像。
引擎及版本
当“启动方式”选择“预置框架”时,需要选择训练作业要使用的预置框架引擎和引擎版本。
选择的AI引擎和编写算法代码时使用的框架必须一致。例如编写算法代码使用的是TensorFlow,则在创建作业时也要选择TensorFlow。
镜像
- 当“启动方式”选择“预置框架”,且引擎版本选择“自定义”时,需要从容器镜像中选择合适的镜像。
- 当“启动方式”选择“自定义”时,需要从容器镜像中选择合适的镜像。
容器镜像地址的填写支持如下方式。- 选择自有镜像或他人共享的镜像:单击右边的“选择”,从容器镜像中选择用于训练的容器镜像。所需镜像需要提前上传到SWR服务中。
- 选择公开镜像:直接输入SWR服务中公开镜像的地址。地址直接填写“组织名称/镜像名称:版本名称”,不需要带域名信息(swr.<region>.myhuaweicloud.com),系统会自动拼接域名地址。例如:某公开镜像的SWR地址为“swr.<region>.myhuaweicloud.com/test-image/tensorflow2_1_1:1.1.1”,则此处填写“test-images/tensorflow2_1_1:1.1.1”。
- 我的算法:使用算法管理中的算法创建训练作业。
如果选择使用已有算法创建训练作业,则“创建方式”选择“我的算法”,在算法列表中选择算法。如果没有满足条件的算法,也可以新建算法,具体操作请参见创建算法。
- 自定义算法:使用平台预置的训练常用框架、镜像或自定义镜像的方式创建训练作业。
- 完成资源配置。
资源池分为公共资源池与专属资源池。根据需要选择不同的资源池用于训练作业,推荐使用专属资源池,两者的具体差异说明请参见专属资源池和公共资源池的能力差异。
表3 选择公共资源池 参数名称
说明
资源来源
必选,选择“公共资源池”。
实例规格
必选,选择资源规格,规格名称中体现了服务器类型、型号等信息。
- 当训练代码中已定义资源类型时,则根据算法的约束条件选择合适的资源类型。例如,训练代码中定义的资源类型为CPU,这里选择其他类型时会导致训练失败。
- 如果部分资源类型不可见或不可选,表示不支持。
- 当“输入”参数选择“数据存储位置”时,在选择资源池规格时可以单击右侧的“获取输入数据大小”,检查输入数据的大小是否超出数据盘的容量限制,避免训练过程中出现内存不足的情况。
须知:实例规格为“GPU:n*tnt004”(n表示具体数字)的资源不支持多进程的训练作业。
实例数
必填,根据需要选择实例数的个数。默认值为“1”。
- 当“实例数 = 1”时,创建的是单机训练作业,ModelArts只会在一个节点上启动一个训练容器,该训练容器独享所选规格的计算资源。
- 当“实例数 > 1”时,创建的是分布式训练作业,更多分布式训练配置请参见分布式训练功能介绍。
其他配置
单击
展开更多资源配置。
模式选择
当训练作业的“预置框架”选择的是MindSpore类镜像、“资源池”选择的是Ascend资源时,ModelArts提供多种训练模式,支持根据实际训练场景选择模式。
- 普通模式:默认训练场景。
- 高性能模式:将关闭或调整部分运维功能,以最大程度提升运行速度,此模式下故障定位能力将会下降,适合于网络稳定并追求高性能的场景。
- 故障诊断模式:将开启或调整部分运维功能,以收集更多的信息用于故障定位,适合于执行出现问题需要收集故障信息进行定位的场景。
表4 选择专属资源池 参数名称
说明
资源来源
必选,选择“专属资源池”,单击“选择资源池”,在弹窗中选择要使用的专属资源池。
- 在选择资源池弹窗中,支持查看当前资源池的状态、节点规格、空闲/碎片节点数、可用节点/总节点数以及卡数信息。单击“空闲/碎片节点数”列的“查看”可以查看碎片详情,确认资源池是否满足训练需求。
- 当训练代码中已定义资源类型时,则根据算法的约束条件选择合适的资源类型。例如,训练代码中定义的资源类型为CPU,这里选择其他类型时会导致训练失败。
实例规格
必选,选择资源规格,规格名称中体现了服务器类型、型号等信息。
当“输入”参数选择“数据存储位置”时,在选择资源池规格时可以单击右侧的“获取输入数据大小”,检查输入数据的大小是否超出数据盘的容量限制,避免训练过程中出现内存不足的情况。
须知:资源规格为“GPU:n*tnt004”(n表示具体数字)的资源不支持多进程的训练作业。
实例数
必填,根据需要选择实例的个数。默认值为“1”。
- 当“实例数 = 1”时,创建的是单机训练作业,ModelArts只会在一个节点上启动一个训练容器,该训练容器独享所选规格的计算资源。
- 当“实例数> 1”时,创建的是分布式训练作业,更多分布式训练配置请参见分布式训练功能介绍。
其他配置
单击
展开更多资源配置。
模式选择
当训练作业的“预置框架”选择的是MindSpore类镜像、“资源池”选择的是Ascend资源时,ModelArts提供多种训练模式,支持根据实际训练场景选择模式。
- 普通模式:默认训练场景。
- 高性能模式:将关闭或调整部分运维功能,以最大程度提升运行速度,此模式下故障定位能力将会下降,适合于网络稳定并追求高性能的场景。
- 故障诊断模式:将开启或调整部分运维功能,以收集更多的信息用于故障定位,适合于执行出现问题需要收集故障信息进行定位的场景。
- 完成训练配置。
表5 训练配置 参数名称
说明
代码存储方式
选择代码存储方式。
- “对象OBS存储”:如果训练代码存放在OBS中,则选择“对象OBS存储”。
- “文件存储”:如果训练代码存放在文件存储中,则选择“文件存储”。如果不可见,则表示不支持文件存储。
代码目录
仅当“代码来源”选择“对象OBS存储”时才显示该参数。
选择训练代码文件所在的OBS目录。当“启动方式”选择“预置框架”时,该参数必填;当“启动方式”选择“自定义”时,该参数可选。
- 需要提前将代码上传至OBS桶中,目录内文件总大小要小于或等于5GB,文件数要小于或等于1000个,文件深度要小于或等于32。
- 训练代码文件会在训练作业启动的时候被系统自动下载到训练容器的“${MA_JOB_DIR}/demo-code”目录中,“demo-code”为存放代码目录的最后一级OBS目录。例如,“代码目录”选择的是“/test/code”,则训练代码文件会被下载到训练容器的“${MA_JOB_DIR}/code”目录中。
启动文件
选择或输入代码目录中训练作业的Python启动脚本。当“启动方式”选择“预置框架”时,该参数必填;当“启动方式”选择“自定义”时,不涉及该参数。
ModelArts只支持使用Python语言编写的启动文件,因此启动文件必须以“.py”结尾。
启动命令
镜像的启动命令。当“启动方式”选择“预置框架”时不涉及该参数;当“启动方式”选择“自定义”时,该参数必填。
运行训练作业时,当“代码目录”下载完成后,“启动命令”会被自动执行。- 如果训练启动脚本用的是py文件,例如“train.py”,则启动命令如下所示。
python ${MA_JOB_DIR}/demo-code/train.py
- 如果训练启动脚本用的是sh文件,例如“main.sh”,则启动命令如下所示。
bash ${MA_JOB_DIR}/demo-code/main.sh
启动命令支持使用“;”和“&&”拼接多条命令,命令中的“demo-code”为存放代码目录的最后一级OBS目录,以实际情况为准。
当存在输入管道、输出管道、或是超参的情况下,请保证启动命令的最后一条命令是运行训练脚本。
原因:系统会将输入管道、输出管道、以及超参添加到启动命令的末尾,如果最后一条命令不是运行训练脚本则会报错。
例如:启动命令的最后一条是python train.py,且存在--data_url超参,系统正常运行会执行python train.py --data_url=/input。但是当启动命令python train.py后面有其他命令时,如下所示:
python train.py pwd #反例,启动命令的最后一条命令不是运行训练脚本,而是pwd
此时,如果拼接了输入管道、输出管道、以及超参,系统运行实际执行的是python train.py pwd --data_url=/input,就会报错。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。
日志存储
将训练日志存储到OBS中,当资源池选择CPU或GPU资源时,支持选择是否关闭“日志存储”开关。
- 开关打开(默认打开):表示永久保存日志,此时必须配置“日志路径”,平台会将训练日志永久保存至指定的OBS路径。
- 开关关闭:表示不永久保存日志,则训练日志会在30天后会被清理。可以在作业详情页下载全部日志至本地。
日志存储方式
默认选择“OBS对象存储”。
日志路径
打开“日志存储”开关时,必须配置“日志路径”,用于存放训练作业产生的日志文件。
建议选择一个空的OBS文件目录存放运行中产生的日志文件,同时需要OBS文件目录的读写权限。
输入
单击“增加训练输入”,添加输入信息。
- “参数名称”
算法代码需要通过“输入”的“参数名称”去读取训练的输入数据。
建议设置为“data_url”。训练输入参数要与所选算法的“输入”参数匹配。
- “输入路径”:训练输入支持来源数据集和OBS桶。
- 单击“数据集”,在ModelArts数据集列表中勾选目标数据集并选择对应的版本。
- 单击“数据存储位置”,从OBS桶中选择训练输入数据的存储位置。文件总大小要小于或等于10GB,文件数要小于或等于1000个,单个文件大小要小于或等于1GB。
训练启动时,系统将自动下载输入路径中的数据到训练运行容器。
- “获取方式”
以参数名称为“data_path”的训练输入为例,说明获取方式的作用。
- 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。
import argparse parser = argparse.ArgumentParser() parser.add_argument('--data_path') args, unknown = parser.parse_known_args() data_path = args.data_path
- 当参数的“获取方式”为“环境变量”时,可以参考如下代码来读取数据。
import os data_path = os.getenv("data_path", "")
- 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。
输出
单击“增加训练输出”,添加输出信息。
- “参数名称”
算法代码需要通过“输出”的“参数名称”去读取训练的输出目录。
建议设置为“train_url”。训练输出参数要与所选算法的“输出”参数匹配。
- “输入路径”
单击“数据存储位置”,从OBS桶中选择训练输出数据的存储位置。文件总大小要小于或等于1GB,文件数要小于或等于128个,单个文件大小要小于或等于128MB。
训练过程中,系统将自动从训练容器的本地代码目录下同步文件到数据存储位置。
说明:
数据存储位置仅支持OBS路径。为避免数据存储冲突,建议选择一个空目录用作“数据存储位置”。
- “获取方式”
以参数名称为“train_url”的训练输出为例,说明获取方式的作用。
- 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。
import argparse parser = argparse.ArgumentParser() parser.add_argument('--train_url') args, unknown = parser.parse_known_args() train_url = args.train_url
- 当参数的“获取方式”为“环境变量”时,可以参考如下代码来读取数据。
import os train_url = os.getenv("train_url", "")
- 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。
- “预下载至本地目录”
选择是否将输出目录下的文件预下载至本地目录。
- 不下载:表示启动训练作业时不会将输出数据的存储位置中的文件下载到训练容器的本地代码目录中。
- 下载:表示系统会在启动训练作业时自动将输出数据的存储位置中的所有文件下载到训练容器的本地代码目录中。下载时间会随着文件变大而变长,为了防止训练时间过长,请及时清理训练容器的本地代码目录中的无用文件。
超参
超参用于训练调优。此参数由选择的算法决定,如果在算法中已经定义了超参,则此处会显示算法中所有的超参。
超参支持修改和删除,状态取决于算法中的超参“约束”设置,详情请参见表6。
单击“增加超参”,添加超参信息。单击“本地上传”可以本地批量导入超参,需要按模板填写超参且总数不能超过100条,否则会导入失败。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。
环境变量
根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量。
单击“增加环境变量”,添加环境变量信息。单击“本地上传”可以本地批量导入环境变量,需要按模板填写环境变量且总数不能超过100条,否则会导入失败。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。
其他配置
单击
展开更多训练配置,可以选择是否配置存储挂载、本地代码目录、容器运行目录和作业优先级。
存储挂载(可选)
单击“增加”可以添加多种存储挂载方式,以提高数据的访问效率。
- SFS Turbo
当ModelArts和SFS Turbo间网络直通时,训练作业支持挂载多个SFS Turbo存放训练数据。
- “文件系统”:选择一个SFS Turbo。
- “云上挂载路径”:输入SFS Turbo对应在训练容器内的云上挂载路径。不能为“/”目录,不能为“/cache”、“/home/ma-user/modelarts”等系统已经默认挂载的路径。
- “存储位置”:选择SFS Turbo的存储位置。如果用户配置了文件夹控制权限,请选择存储位置;如果用户未配置文件夹控制权限,可以保持默认值“/”或者自定义位置。
- “挂载方式”:显示挂载SFS Turbo的权限。根据SFS Turbo存储位置的权限显示“读写”或“只读”,如果用户未配置文件夹控制权限,则该参数不可见。如果需要设置SFS Turbo的文件夹权限,请参考权限管理文档配置。
- “挂载参数”:支持配置SFS挂载参数实现训练加速优化,具体参数说明请参见设置极速文件存储挂载参数。不设置时,默认配置如下参数:
mountOptions: - vers=3 - timeo=600 - nolock - hard
说明:
- 文件系统支持重复挂载,但是挂载路径不可重复。最多可以挂载5个盘。
运行用户ID
容器运行时的用户ID。当“启动方式”选择“预置框架”时不涉及该参数;当“启动方式”选择“自定义”时,该参数可选。
如果需要指定uid,则uid数值需要在规定范围内,不同资源池的uid范围如下:
- 公共资源池:1000-65535
- 专属资源池:0-65535
建议使用默认值1000。
本地代码目录
仅当“代码来源”选择“对象OBS存储”时才显示该参数。可选参数。
用于指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。
单击“预览运行环境”,可以查看训练作业的工作目录。
容器运行目录
指定训练容器的本地目录,训练时系统会自动cd到此目录下执行启动文件。
容器运行目录是训练作业运行过程中执行启动命令的本地目录,可用于存储生成的一些临时文件。为确保该目录存在,容器运行目录必须是启动文件本地目录的父目录。
作业优先级
使用专属资源池创建训练作业时,支持设置训练作业的优先级。取值为1~3,默认优先级为1,最高优先级为3。
- 默认用户权限可选择优先级1和2,配置了“设置作业为高优先级权限”的用户可选择优先级1~3。
- 如果训练作业长时间处于“等待中”的状态,则可以通过修改作业优先级来减少排队时长,请参见修改训练作业优先级。
- 完成容错与恢复的配置。
表6 自动重启配置 参数名称
说明
自动重启
设置训练作业是否设置自动重启。
最大重启次数
当训练作业的自动重启次数达到最大重启次数,且训练作业依旧异常,则直接停止作业。
- 缺省值:3
- 取值范围:1~128
提交创建训练作业后不支持修改重启次数,请合理设置次数。
无条件自动重启
开启无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。
作业卡死重启
系统支持自动监控作业进程的状态和资源利用率来判定作业是否卡死,开启此开关后,支持将标记为卡死的作业进行进程级自动重启,以提高资源使用率。
因系统无法核实代码逻辑且检测存在周期性,卡死检测存在一定的误报概率,开启开关即表示接受误报率。为了避免无效重启浪费算力资源,系统最多只支持连续作业卡死重启3次。
- 完成更多配置。
表7 更多配置 参数名称
说明
事件通知
选择是否启用训练作业的事件通知。
- 开关关闭(默认关闭):表示不启用消息通知服务。
- 开关打开:表示订阅消息通知服务,当训练作业发生特定事件(如作业状态变化或疑似卡死)时会发送通知。此时必须配置“主题名”和“事件”。
- “主题名”:事件通知的主题名称。单击“创建主题”,前往消息通知服务中创建主题。
- “事件”:选择要订阅的事件类型。例如“作业开始”、“作业结束”、“作业失败”、“作业终止”、“作业疑似卡死”等。
自动停止
当使用付费资源时,可以选择是否启用训练作业自动停止。
- 开关关闭(默认关闭):表示训练作业将一直运行直至训练完成。
- 开关打开:表示启用自动停止功能,此时必须配置自动停止时间,支持设置为“1小时”、“2小时”、“4小时”、6小时或“自定义”,自定义时间取值范围为1~720小时。启用该参数并设置时间后,运行时长到期后将会自动终止训练,准备排队等状态不扣除运行时长。
启用自动停止时,必须阅读费用说明和使用说明,并勾选“我已阅读、知晓并同意以上的内容”。
生成节点间SSH免密互信文件
选择是否生成节点间SSH免密互信文件。
- 开关关闭(默认关闭):表示不生成节点间SSH免密互信文件。
- 开关打开:表示生成节点间SSH免密互信文件,此时必须配置“SSH免密互信文件目录”,即自动生成的SSH密钥文件在训练容器中所在的目录,默认值为“/home/ma-user/.ssh”。
标签
当需要使用同一标签标识多种云资源时,即所有服务均可在标签输入框下拉选择同一标签,则建议在TMS中创建预定义标签。标签详细用法请参见使用TMS标签实现资源分组管理。
最多支持添加20条标签。
- 当参数配置完成后,单击“提交”,创建训练作业任务。
训练作业一般需要运行一段时间,前往训练作业列表,可以查看训练作业的基本情况。
- 在训练作业列表中,刚创建的训练作业状态为“等待中”。
- 当训练作业的状态变为“已完成”时,表示训练作业运行结束,其生成的模型将存储至对应的“输出”目录中。
- 当训练作业的状态变为“运行失败”或“异常”时,可以单击训练作业的名称进入详情页面,通过查看日志等手段处理问题。
说明:
训练作业运行过程中将按照选择的资源进行计费。