创建生产训练作业
模型训练是一个不断迭代和优化模型权重的过程。ModelArts的训练模块支持创建训练作业、查看训练情况以及管理训练版本。通过模型训练试验模型结构、数据和超参的各种组合,便于找到最佳的模型结构和权重。
创建生产环境的训练作业有2种方式:
- 通过ModelArts Standard控制台的方式创建生产环境的训练作业,详细操作请参考本章节以下内容。
- 通过ModelArts提供的API接口创建生产环境的训练作业,详细操作请参见使用API创建训练作业。
前提条件
- 已经将用于训练作业的数据上传至OBS目录。
- 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。
ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。
- 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。
- 确保使用的OBS目录与ModelArts在同一区域。
- 检查是否配置了访问授权。如果未配置,请参见配置ModelArts Standard访问授权完成操作。
- 已经准备好训练算法,具体操作请参见创建算法。
操作流程介绍
创建训练作业的操作步骤如下所示。
- 进入创建训练作业页面。
- 配置训练作业基本信息。
- 根据不同的算法来源,选择不同的训练作业创建方式。
- 使用已有算法创建训练作业:选择创建方式(使用我的算法)
- 使用订阅算法创建训练作业:选择创建方式(使用订阅算法)
- 使用预置镜像创建训练作业:选择创建方式(自定义算法)
- 使用自定义镜像创建训练作:选择创建方式(使用自定义镜像)
- 配置训练参数:配置训练作业的输入、输出、超参、环境变量等参数。
- 根据需要选择不同的资源池用于训练作业,推荐使用专属资源池,两者的差异说明请参见专属资源池和公共资源池的能力差异。
- (可选)选择训练模式:当训练作业的算法框架选用的是预置框架的MindSpore类引擎、资源池类型选用的是Ascend资源时,则支持选择训练模式。
- (可选)设置标签:如果需要对训练作业进行资源分组管理,可以设置标签。
- 后续操作。
配置训练作业基本信息
在创建训练作业页面填写训练作业基本信息。
参数名称 |
说明 |
---|---|
名称 |
必填,训练作业的名称。 系统会自动生成一个名称,可以根据业务需求重新命名,命名规则如下:
|
描述 |
训练作业的简介,便于在训练作业列表了解作业信息。 |
选择创建方式(使用订阅算法)
如果选择使用订阅算法创建训练作业,则“创建方式”选择“订阅算法”,在算法列表中选择算法。如果没有满足条件的算法,也可以前往AI Gallery中订阅算法。
- 登录AI Gallery。
- 选择“模型”,进入模型列表页面,该页面展示了所有共享的模型,包括ModelArts算法。
- 单击目标算法进入详情页面。
- 在详情页面选择“训练 > ModelArts”,在弹出的“选择ModelArts的云服务区域”页面选择需要使用算法的区域,单击“确认”跳转至ModelArts控制台的“算法管理 > 订阅算法”页面。
订阅后的算法,将自动展现在“算法管理 > 订阅算法”页面中。
选择创建方式(自定义算法)
参数名称 |
说明 |
---|---|
创建方式 |
必选,选择“自定义算法”。 |
启动方式 |
必选,选择“预置框架”,并选择训练作业要使用的预置框架引擎和引擎版本。 如果引擎版本选择“自定义”,则需要配置“镜像”参数,选择自定义镜像用于训练作业。 |
镜像 |
仅当预置框架的引擎版本选择“自定义”时才显示该参数,且是必填参数。
容器镜像地址的填写支持如下方式。
|
代码来源 |
选择训练代码来源。
|
代码目录 |
仅当“代码来源”选择“对象OBS存储”时才显示该参数。 必填,选择训练代码文件所在的OBS目录。
|
启动文件 |
必填,选择代码目录中训练作业的Python启动脚本。 ModelArts只支持使用Python语言编写的启动文件,因此启动文件必须以“.py”结尾。 |
本地代码目录 |
仅当“代码来源”选择“对象OBS存储”时才显示该参数。 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 |
工作目录 |
训练时,系统会自动cd到此目录下执行启动文件。 |
- 系统将会自动注入一系列环境变量
PATH=${MA_HOME}/anaconda/bin:${PATH} LD_LIBRARY_PATH=${MA_HOME}/anaconda/lib:${LD_LIBRARY_PATH} PYTHONPATH=${MA_JOB_DIR}:${PYTHONPATH}
- 您选择的启动文件将会被系统自动以python命令直接启动,因此请确保镜像中的Python命令为您预期的Python环境。注意到系统自动注入的PATH环境变量,您可以参考下述命令确认训练作业最终使用的Python版本:
export MA_HOME=/home/ma-user; docker run --rm {image} ${MA_HOME}/anaconda/bin/python -V docker run --rm {image} $(which python) -V
- 系统将会自动添加预置框架关联的超参
选择创建方式(使用自定义镜像)
参数名称 |
说明 |
---|---|
创建方式 |
必选,选择“自定义算法”。 |
启动方式 |
必选,选择“自定义”。 |
镜像 |
必填,填写容器镜像的地址。
容器镜像地址的填写支持如下方式。
|
代码目录 |
选择训练代码文件所在的OBS目录。如果自定义镜像中不含训练代码则需要配置该参数,如果自定义镜像中已包含训练代码则不需要配置。
|
运行用户ID |
容器运行时的用户ID,该参数为选填参数,建议使用默认值1000。 如果需要指定uid,则uid数值需要在规定范围内,不同资源池的uid范围如下:
|
启动命令 |
必填,镜像的启动命令。
运行训练作业时,当“代码目录”下载完成后,“启动命令”会被自动执行。
启动命令支持使用“;”和“&&”拼接多条命令,命令中的“demo-code”为存放代码目录的最后一级OBS目录,以实际情况为准。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
本地代码目录 |
仅当“代码来源”选择“对象OBS存储”时才显示该参数。 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 |
工作目录 |
训练时,系统会自动cd到此目录下执行启动文件。 |
训练支持的自定义镜像使用说明请参考自定义镜像的启动命令规范。
配置训练参数
训练过程中可以从OBS桶或者数据集中获取输入数据进行模型训练,训练输出的结果也支持存储至OBS桶中。创建训练作业时可以参考表4配置输入、输出、超参、环境变量等参数。
创建训练作业时选择的创建方式不同,训练作业的输入、输出和超参显示不同。如果参数值置灰,即表示该参数已经在算法代码中配置了且不支持修改。
参数名称 |
子参数 |
说明 |
---|---|---|
输入 |
参数名称 |
算法代码需要通过“输入”的“参数名称”去读取训练的输入数据。 建议设置为“data_url”。训练输入参数要与所选算法的“输入”参数匹配,请参见创建算法时的表4。 |
数据集 |
单击“数据集”,在ModelArts数据集列表中勾选目标数据集并选择对应的版本。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。
说明:
ModelArts数据管理模块在重构升级中,对未使用过数据管理的用户不可见。建议新用户将训练数据存放至OBS桶中使用。 |
|
数据存储位置 |
单击“数据存储位置”,从OBS桶中选择训练输入数据的存储位置。文件总大小要小于或等于10GB,文件数要小于或等于1000个,单个文件大小要小于或等于1GB。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。 |
|
获取方式 |
以参数名称为“data_path”的训练输入为例,说明获取方式的作用。
|
|
输出 |
参数名称 |
算法代码需要通过“输出”的“参数名称”去读取训练的输出目录。 建议设置为“train_url”。训练输出参数要与所选算法的“输出”参数匹配,请参见创建算法时的表5。 |
数据存储位置 |
单击“数据存储位置”,从OBS桶中选择训练输出数据的存储位置。文件总大小要小于或等于1GB,文件数要小于或等于128个,单个文件大小要小于或等于128MB。 训练过程中,系统将自动从训练容器的本地代码目录下同步文件到数据存储位置。
说明:
数据存储位置仅支持OBS路径。为避免数据存储冲突,建议选择一个空目录用作“数据存储位置”。 |
|
获取方式 |
以参数名称为“train_url”的训练输出为例,说明获取方式的作用。
|
|
预下载至本地目录 |
选择是否将输出目录下的文件预下载至本地目录。
|
|
超参 |
- |
超参用于训练调优。此参数由选择的算法决定,如果在算法中已经定义了超参,则此处会显示算法中所有的超参。 超参支持修改和删除,状态取决于算法中的超参“约束”设置,详情请参见表6。 单击“本地上传”可以本地批量导入超参,需要按模板填写超参且总数不能超过100条,否则会导入失败。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
环境变量 |
- |
根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量。 单击“本地上传”可以本地批量导入环境变量,需要按模板填写环境变量且总数不能超过100条,否则会导入失败。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
自动重启 |
- |
打开开关后,可以设置重启次数和是否启用无条件自动重启。 打开自动重启开关后,当由于环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力,开启此功能前请确认代码已适配断点续训,操作指导请参见设置断点续训练。 “重启次数”的取值范围是1~128,缺省值为3。创建训练后不支持修改重启次数,请合理设置次数。 勾选“无条件自动重启”后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。 系统支持自动监控作业进程的状态和资源利用率来判定作业是否卡死,开启“作业卡死重启”开关后,支持将标记为卡死的作业进行进程级自动重启,以提高资源使用率。因系统无法核实代码逻辑且检测存在周期性,卡死检测存在一定的误报概率,开启开关即表示接受误报率。为了避免无效重启浪费算力资源,系统最多只支持连续作业卡死重启3次。 当训练过程中触发了自动重启,则系统会记录重启信息,在训练作业详情页可以查看故障恢复详情,具体请参见训练作业重调度。 |
配置资源池(公共资源池)
参数名称 |
说明 |
---|---|
资源池 |
必选,选择“公共资源池”。 |
资源类型 |
必选,选择训练需要的资源类型。当训练代码中已定义资源类型时,则根据算法的约束条件选择合适的资源类型。例如,训练代码中定义的资源类型为CPU,这里选择其他类型时会导致训练失败。如果部分资源类型不可见或不可选,表示不支持。 Ascend资源仅在“华北-北京四”可用。 |
实例规格 |
必选,根据不同的资源类型,选择所需的资源规格。 当“输入”参数选择“数据存储位置”时,在选择资源池规格时可以单击右侧的“获取输入数据大小”,检查输入数据的大小是否超出数据盘的容量限制,避免训练过程中出现内存不足的情况。
须知:
资源规格为“GPU:n*tnt004”(n表示具体数字)的资源不支持多进程的训练作业。 |
实例数 |
必填,根据需要选择实例数的个数。默认值为“1”。
|
永久保存日志 |
选择CPU或者GPU资源时,支持选择是否关闭“永久保存日志”开关。
|
作业日志路径 |
选择Ascend资源时或者打开“永久保存日志”开关时,必须配置“作业日志路径”,用于存放训练作业产生的日志文件。 建议选择一个空的OBS文件目录存放运行中产生的日志文件,同时需要OBS文件目录的读写权限。 |
事件通知 |
选择是否打开“事件通知”开关。
|
自动停止 |
当使用付费资源时,可以选择是否打开“自动停止”开关。
|
配置节点间SSH免密互信 |
选择是否打开“配置节点间SSH免密互信”开关。
|
配置资源池(专属资源池)
参数名称 |
说明 |
---|---|
资源池 |
必选,选择“专属资源池”并选择要使用的资源池。 选择专属资源池时,支持查看当前资源池的状态、节点规格、空闲/碎片节点数、可用节点/总节点数以及卡数信息。单击“空闲/碎片节点数”列的“查看”可以查看碎片详情,确认资源池是否满足训练需求。 |
实例规格 |
必选,根据不同的资源类型,选择所需的资源规格。 当“输入”参数选择“数据存储位置”时,在选择资源池规格时可以单击右侧的“获取输入数据大小”,检查输入数据的大小是否超出数据盘的容量限制,避免训练过程中出现内存不足的情况。
须知:
资源规格为“GPU:n*tnt004”(n表示具体数字)的资源不支持多进程的训练作业。 |
实例数 |
必填,根据需要选择实例的个数。默认值为“1”。
|
作业优先级 |
使用专属资源池创建训练作业时,支持设置训练作业的优先级。取值为1~3,默认优先级为1,最高优先级为3。
|
SFS Turbo |
当ModelArts和SFS Turbo间网络直通时,训练作业支持挂载多个SFS Turbo存放训练数据。单击“增加挂载配置”,填写如下参数。
说明:
|
永久保存日志 |
选择CPU或者GPU资源时,支持选择是否关闭“永久保存日志”开关。
|
作业日志路径 |
选择Ascend资源时或者打开“永久保存日志”开关时,必须配置“作业日志路径”,用于存放训练作业产生的日志文件。 建议选择一个空的OBS文件目录存放运行中产生的日志文件,同时需要OBS文件目录的读写权限。 |
事件通知 |
选择是否打开“事件通知”开关。
|
自动停止 |
当使用付费资源时,可以选择是否打开“自动停止”开关。
|
配置节点间SSH免密互信 |
选择是否打开“配置节点间SSH免密互信”开关。
|