文档首页/ AI开发平台ModelArts/ 模型训练/ 创建训练作业/ 创建训练自定义作业(推荐)
更新时间:2026-02-06 GMT+08:00
分享

创建训练自定义作业(推荐)

场景描述

本章节内容仅适用于“西南-贵阳一”站点。控制台界面为新版样式。

在模型开发过程中,如何高效地优化模型性能是一个关键挑战。传统的模型训练方式往往需要反复尝试不同的模型结构、数据集和超参数组合,这不仅耗时耗力,还可能导致训练效果不理想。针对这一问题,ModelArts的训练模块提供了一套完整的解决方案。它支持创建训练作业、实时监控训练进展以及管理训练版本,帮助用户系统化地优化模型性能。通过ModelArts,用户可以轻松试验不同的模型结构、数据集和超参数组合,从而快速找到最优的模型配置和权重。

创建生产环境的训练作业有2种方式:

  • 通过ModelArts控制台的方式创建生产环境的训练作业。本文提供了新版页面的操作指导,默认页面(即旧版页面)的操作指导请参见创建生产训练作业(旧版)
  • 通过ModelArts提供的API接口创建生产环境的训练作业,详细操作请参见使用API创建训练作业

约束限制

  • “西南-贵阳一”站点支持。
  • 作业额度:默认支持创建10000条训练作业,剩余额度可以在训练作业列表页查看。
    图1 查看训练作业剩余额度
  • 存储限制:ModelArts 不支持已启用桶加密功能的 OBS 桶,请在创建 OBS 桶时勿开启此选项。

前提条件

  • 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。
  • 已经将用于训练作业的数据上传至OBS目录。
  • 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。

    ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。

  • 确保使用的OBS目录与ModelArts在同一区域。
  • 检查是否配置了访问授权。如果未配置,请参见快速配置ModelArts委托授权完成操作

计费影响

在ModelArts进行模型训练时,会产生计算资源和存储资源的累计值计费。计算资源为训练作业运行的费用。存储资源包括数据存储到OBS或SFS的费用。详见模型训练计费项

创建作业操作流程一览

创建训练作业的操作步骤如下所示。

步骤一:进入创建训练作业页面:登录控制台,进入训练作业列表。

步骤二:训练模式:配置训练模式。

步骤三:基本信息:配置作业名称、描述等基本信息。

步骤四:训练配置:配置训练作业的镜像、启动命令和环境变量等参数。

步骤五:资源配置:配置资源池类型、实例规格、实例数、存储挂载、作业优先级和允许被抢占等信息。

步骤六:高可用配置:配置自动重启(无条件自动重启、作业卡死重启)等信息。

步骤七:访问配置:配置调试、SSH远程开发和生成节点间SSH免密互信文件等。

步骤八:可观测配置:配置采集Prometheus指标信息。

步骤九:更多配置:配置日志、作业可见范围、自动停止、事件通知和标签等信息。

步骤九:提交训练作业并查看作业状态

步骤一:进入创建训练作业页面

  1. 登录ModelArts管理控制台
  2. 在左侧导航栏中,选择模型开发与训练 > 模型训练进入训练作业列表。
  3. 单击“创建训练作业”,进入创建训练作业页面,默认进入新版页面,以下内容主要介绍新版创建训练页面操作。

步骤二:训练模式

表1 训练模式

训练模式

解释说明

精调作业

适用于基于已有预训练模型(如盘古大模型、ResNet等)进行微调的场景。

自定义作业

适用于希望完全自定义训练流程,使用自研代码或特定框架镜像的场景。

此处选择“自定义作业”模式。

步骤三:基本信息

在创建训练作业页面选择自定义作业,完成基础配置。
表2 基础配置

参数名称

说明

作业名称

必填,训练作业的名称。

系统会自动生成一个名称,可以根据业务需求重新命名,命名规则如下:

  • 支持1~64位字符。
  • 可以包含大小写字母、数字、中划线(-)或下划线(_)。

描述(可选)

训练作业的简介,便于在训练作业列表了解作业信息。

步骤四:训练配置

表3 训练配置

参数名称

说明

选择镜像

指定运行训练代码的容器镜像,有以下两种镜像:

预置镜像:选择平台提供的常用框架镜像(如 PyTorch 1.8、TensorFlow 2.1),适合大多数常见场景。

自定义镜像:使用您自己制作并推送至 SWR 镜像仓库的镜像,注意该镜像需要在ModelArts镜像管理内注册。

当平台预置的基础镜像无法满足您的依赖需求时,支持自定义镜像进行训练,所需镜像需提前注册到ModelArts镜像管理上。

启动命令

容器启动后执行的命令,用以启动您的训练脚本。
  • 如果训练启动脚本用的是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目录,以实际情况为准。

说明:

为保证数据安全,请勿输入敏感信息,例如明文密码。

代码目录(可选)

选择训练代码文件所在的OBS目录。当“选择镜像”选择“预置镜像”时,该参数必填;当“选择镜像”选择“自定义镜像”时,该参数可选。

  • 需要提前将代码上传至OBS桶中,目录内文件总大小必须小于或等于5GB,文件数必须小于或等于1000个,文件深度必须小于或等于32。如果有预训练模型也请放置在代码目录下。
  • 训练代码文件会在训练作业启动的时候被系统自动下载到训练容器的“${MA_JOB_DIR}/demo-code”目录中,“demo-code”为存放代码目录的最后一级OBS目录。例如,“代码目录”选择的是“/test/code”,则训练代码文件会被下载到训练容器的“${MA_JOB_DIR}/code”目录中。

本地代码目录

用于指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。

本地代码目录不支持在/home/ma-user/modelarts/*,/home/ma-user/modelarts-dev/*,/home/ma-user/infer/*目录下,也不支持配置成/home/ma-user。

单击右侧的“运行环境预览”,可以查看训练作业的工作目录。

环境变量

根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量

  • 单击“添加”,添加环境变量信息,总数不超过100条。
  • 单击“本地上传”可以本地批量导入环境变量,需要按模板填写环境变量且总数不能超过100条,否则会导入失败。
说明:

为保证数据安全,请勿输入敏感信息,例如明文密码。

步骤五:资源配置

表4 资源配置

参数名称

说明

资源池类型

  • “公共资源池”:公共资源池由系统提供,供平台所有租户共享使用,不需要用户创建。
  • “专属资源池”:专属资源池需要提前单独创建,不与其他租户共享,具体创建操作请参见创建专属资源池

资源池

仅选择“专属资源池”后出现此参数,在“资源池”中单击“选择资源池”,在右侧弹窗中选择要使用的专属资源池或者逻辑子池后,单击“确定”。

选择界面支持查看当前专属资源池的名称、节点池规格、可用节点数/最大节点数、可用NPU/GPU设备数、可用CPU(vCPUs)、可用内存(GiB)以及资源碎片。单击资源碎片列的“查看”可以查看碎片详情,确认资源池是否满足训练需求。

选择完成后,此处会展示所选资源池信息,也可单击“重新选择”再次选择资源池。

实例规格

资源池类型为“专属资源池”时,需要先选定“资源池”,资源池类型为“公共资源池”时直接单击,然后在右侧弹窗中选择实例规格后,单击“确定”。

  • 最上方显示了CPU、NPU和GPU规格类型,下方表格可查看规格名称、内存、规格参考价等详情。
  • 规格名称中体现了节点规格的卡数、卡型号、CPU/GPU以及内存大小等信息。
  • 如果部分资源类型不可见或不可选,表示不支持。
    说明:
    • 实例规格为“GPU:n*tnt004”(n表示具体数字)的资源不支持多进程的训练作业。
    • 资源池类型为“公共资源池”时:使用自定义镜像(创建方式为自定义算法,启动方式为自定义)创建作业时,请确保您的“镜像”类型、“资源类型”“实例规格”类型保持一致(例如:均为GPU类型)。否则会导致训练作业失败。

实例数

必填,根据需要选择实例数的个数。默认值为“1”

  • “实例数 = 1”时,创建的是单机训练作业,ModelArts只会在一个节点上启动一个训练容器,该训练容器独享所选规格的计算资源。
  • “实例数 > 1”时,创建的是分布式训练作业,更多分布式训练配置请参见分布式训练功能介绍

    如果用户开启了对应集群的高可用节点特性,资源池可供训练作业调度的总节点数为实际可用节点数与高可用节点数之和。高可用节点由系统预留,用户作业无法直接调度,仅在节点发生异常时用于故障恢复。

    在创建分布式训练作业前,建议提前安装所有的pip依赖(请参见在镜像中安装pip依赖),因为当节点数大于10时,系统会自动删除pip源配置,当训练过程中涉及pip install操作时可能会训练失败。

挂载存储

资源规格选择“专属资源池”时,支持添加多种存储挂载方式,以提高数据的访问效率。两种区别可参见表1

  • “添加拓展存储SFS Turbo”

    当ModelArts和SFS Turbo间网络直通时,训练作业支持挂载多个SFS Turbo存放训练数据。文件系统支持重复挂载,但是挂载路径不可重复。最多可以挂载5个盘。配置ModelArts和SFS Turbo间网络直通,具体操作请参见配置ModelArts和SFS Turbo间网络直通

    图2 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
      说明:

      当用户配置拓展存储SFS Turbo时,前端页面会自动从SFS Turbo服务获取最新的存储容量和配置信息,以确保数据有效性和准确性。

      1. 查询文件系统详细信息
      2. 获取文件系统列表
  • “添加拓展存储OBS”

    训练作业支持挂载一个 OBS 桶用于存放训练数据。

    警告:

    由于对象存储(OBS)的对象语义与POSIX文件系统不同,rclone通过FUSE方式提供“类文件系统”访问,存在以下限制:

    • 写入语义限制:不支持随机写入和追加写入,不支持对已有文件进行原地修改,包括随机写(seek write)和追加写(append)。例如,以 r+、w+、a 或 a+ 模式打开并修改同一文件,或不断追加写入日志文件(如 bash while true; do echo "$(date) line" >> app.log; sleep 1; done)。
    • 权限限制:挂载显示的权限多为rclone伪造(或统一映射),不能作为真实的多用户权限系统使用,因此无法使用 chmod 或 chown 修改文件权限。
    • 并发写入限制:并发写入同一路径的行为不可控,多个进程写入同一文件时无法确认最终内容。
    • 链接限制:不支持硬链接,符号链接可能被当作普通文件存储(保存链接文本)。例如,ln -s target.txt link.txt 可能会导致直接失败,或者 link.txt 被当成普通文件上传,内容是字符串 target.txt。

作业优先级

  • 使用专属资源池创建训练作业时,支持使用和修改训练作业的调度优先级。使用公共资源池时,不支持此参数配置。
  • 作业默认按照优先级从高到低依次处理,对于相同优先级的任务,则根据提交时间的先后顺序进行调度,最终结合实际的资源情况决定调度顺序(保证在资源充足、相同优先级下,先提交的任务先调度)。
  • 修改选择数字后可修改作业进入队列的优先级。优先级可以设置数字1-3,数字越大,优先级越高,默认优先级为“1”,最高优先级为“3”
  • 设置优先级为“3”时,还需要配置用户权限才会生效。用户权限设置请参见“设置作业为高优先级权限”。
  • 如果训练作业长时间处于“等待中”的状态,则可以通过修改作业优先级来减少排队时长,请参见修改训练作业优先级

允许被抢占

  • 使用专属资源池创建训练作业时,允许设置训练作业被抢占。使用公共资源池时,不支持此参数配置。
  • 开启后,当资源池剩余资源不足时,允许被抢占的作业可能会被终止并重新排队。为避免训练进度丢失,请在开启此功能前完成断点续训的设置,操作指导请参考设置断点续训练

步骤六:高可用配置

表5 高可用配置

参数名称

说明

容错与恢复

设置训练作业是否设置自动重启。

  • 不勾选(默认):表示不启用自动重启,训练异常则直接停止作业。
  • 勾选:当训练作业因环境问题、作业卡死等原因异常时,系统将自动检测故障并根据相应策略进行处理,提高训练成功率。系统支持进程级、容器级、作业级自动重启恢复策略,无需额外配置,可自动匹配与升级恢复策略。

    为了避免丢失训练进度、浪费算力,开启此功能前请确认代码已适配断点续训,操作指导请参见设置断点续训练

    当训练过程中触发了自动重启,则系统会记录重启信息,在训练作业详情页可以查看故障恢复详情,具体请参见训练作业容错检查

最大重启次数

当勾选“自动重启”时可配置。

当训练作业的自动重启次数达到最大重启次数,且训练作业依旧异常,则直接停止作业。

  • 缺省值:3
  • 取值范围:1~128

提交创建训练作业后不支持修改重启次数,请合理设置次数。

无条件自动重启

当勾选“自动重启”时可配置。勾选无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。

作业卡死重启

当勾选“自动重启”时可配置。系统支持自动监控作业进程的状态和资源利用率来判定作业是否卡死,开启此开关后,支持将标记为卡死的作业进行进程级自动重启,以提高资源使用率。

CPU规格不支持作业卡死重启。

因系统无法核实代码逻辑且检测存在周期性,卡死检测存在一定的误报概率,开启开关即表示接受误报率。为了避免无效重启浪费算力资源,系统最多只支持连续作业卡死重启3次。

步骤七:访问配置

表6 访问配置

参数名称

说明

JupyterLab

开启后,可支持JupyterLab等开发工具进行在线调试。

SSH远程开发

勾选开启后,可以通过本地 IDE 远程连接到训练作业实例,进行代码的在线调试与运行。系统将自动为每个实例启动 SSHD 服务,并配置实例间的 SSH 免密登录,以便于跨节点协同操作。

需创建密钥对。

勾选后,“生成节点间SSH免密互信文件”功能不可用。

生成实例间SSH免密互信文件

选择是否生成实例间SSH免密互信文件。

  • 不勾选(默认):表示不生成实例间SSH免密互信文件。
  • 勾选:表示生成实例间SSH免密互信文件。在使用基于MPI和Horovod框架的自定义镜像进行分布式训练时,为确保实例间的通信顺畅,必须配置实例间SSH免密互信,确保分布式训练任务顺利进行。

    同时还需配置“SSH免密互信文件目录”,即自动生成的SSH密钥文件在训练容器中所在的目录,默认值为“/home/ma-user/.ssh”。更多操作指导请参见自定义镜像训练作业配置实例间SSH免密互信

    勾选后,“SSH远程开发”功能不可用。

步骤八:可观测配置

表7 可观测配置

参数名称

说明

监控指标对接AOM

选择是否启用采集Prometheus指标。通过在训练容器里配置采集Prometheus指标的参数,在训练过程中,系统会定时获取指标数据上传到AOM,您可以直接在AOM控制台查看自定义的Prometheus指标。

ModelArts提供了2种配置方式。

  • 方式一:用户提供一个可被平台调用的HTTP进程来定时获取指标。操作指导请参见通过Prometheus指标采集到AOM(HTTP)
    • “获取指标类型”选择“http获取指标”
    • 填写“采集URL”“端口号”

    该方式要确保配置的URL和端口号与指标采集进程一致,否则可能导致指标无法上报,同时,训练作业所在的网络环境要允许访问配置的URL和端口号,避免因网络问题导致指标采集失败。

  • 方式二:用户提供一个可被平台执行的Linux命令来定时执行获取指标。操作指导请参见通过Prometheus指标采集到AOM(Command)
    • “获取指标类型”选择“命令行获取指标”
    • “执行命令”:读取指标的Linux命令,例如填写“cat”
    • “执行命令参数”:填写自定义指标文件的路径,例如“/XXX/a.prom”

    该方式要确保配置的执行命令和执行命令参数是可以稳定输出指标的,且响应要在秒级,否则指标可能会采集失败。

步骤九:更多配置

参数名称

说明

永久保存日志

当实例规格选择Ascend资源时,默认开启“永久保存日志”

当实例规格选择CPU或GPU资源时,支持选择是否打开“永久保存日志”开关。

  • 勾选(默认):表示永久保存日志,此时必须配置“日志路径”,平台会将训练日志永久保存至指定的OBS路径。
  • 不勾选:表示不永久保存日志,则训练日志会在30天后会被清理。可以在作业详情页下载全部日志至本地。

日志路径

当开启“永久保存日志”时,必须配置“日志路径”,用于存放训练作业产生的日志文件。

建议选择一个空的OBS文件目录存放运行中产生的日志文件,同时需要OBS文件目录的读写权限。

作业可见范围

分为“工作空间内可见”“仅创建者可见”

  • “工作空间内可见”:创建的训练作业在当前工作空间内,默认其他子用户均可看到该训练作业。
  • “仅创建者可见”:默认创建者可见,其他人希望查看该作业需要额外申请“modelarts:trainJob:listAll”权限(查看训练作业列表(包含仅创建者可见的作业)权限)。

自动停止

选择是否启用训练作业自动停止。

  • 不勾选(默认):表示训练作业将一直运行直至训练完成。
  • 勾选:表示启用自动停止功能,此时必须配置自动停止时间,支持设置为“1小时”“2小时”“4小时”、6小时或“自定义”,自定义时间取值范围为1~720小时。启用该参数并设置时间后,运行时长到期后将会自动终止训练,准备排队等状态不扣除运行时长。

事件通知

选择是否启用训练作业的事件通知。

  • 不勾选(默认):表示不启用消息通知服务。
  • 勾选:表示订阅消息通知服务,当训练作业发生特定事件(如作业状态变化或疑似卡死)时会发送通知。此时必须配置“主题名”“事件”
    • “主题名”:事件通知的主题名称。单击“创建主题”,前往消息通知服务中创建主题,并为主题添加订阅。当订阅状态为“已确认”后,方可收到事件通知。订阅主题的详细操作请参见添加订阅
    • “事件”:选择要订阅的事件类型。例如“作业开始”“作业结束”“作业失败”“”“作业终止”“”“作业疑似卡死”“”“作业重启”“作业抢占”等。
说明:
  • 使用消息通知服务会产生相关服务费用,详细信息请参见消息通知服务计费说明
  • 只有资源类型为GPU或NPU的训练作业才支持通知“作业疑似卡死”的事件。

标签

当需要使用同一标签标识多种云资源时,即所有服务均可在标签输入框下拉选择同一标签,则建议在TMS中创建预定义标签。标签详细用法请参见使用TMS标签实现资源分组管理

最多支持添加20条标签。

步骤九:提交训练作业并查看作业状态

当参数配置完成后,单击“提交”,创建训练作业任务。

训练作业一般需要运行一段时间,前往训练作业列表,可以查看训练作业的基本情况。

  • 在训练作业列表中,刚创建的训练作业状态为“等待中”
  • 当训练作业的状态变为“已完成”时,表示训练作业运行结束,其生成模型将存放至模型资产供后续使用。
  • 当训练作业的状态变为“运行失败”“异常”时,可以单击训练作业的名称进入详情页面,通过查看日志等手段处理问题。

相关文档