创建调试训练作业并使用JupyterLab调试
在AI模型开发过程中,高效的调试环境是确保模型质量的关键环节。传统开发模式中,开发人员需要在本地环境中完成模型调试,再进行云端部署,这一过程往往面临环境配置复杂、资源利用率低等问题。
ModelArts调试模式的训练作业提供了一套完整的云端开发解决方案,有效解决了上述问题。该方案主要包含以下核心功能:
- 云化开发环境支持
- 集成JupyterLab等主流开发工具链,提供开箱即用的云端开发环境
- 支持本地IDE通过SSH远程连接,保持开发习惯的同时实现云端调试
- 灵活的调试方式
- 提供分布式算法调试能力,满足复杂模型开发需求
- 调试完成的代码可无缝衔接创建生产训练作业,实现开发到生产的快速转换
- 便捷的资源管理
- 云上调试环境即开即用,无需关注安装配置
- 本地IDE调试模式下,调试完成的代码可零成本迁移至生产环境
通过以上功能,ModelArts调试模式的训练作业为开发人员提供了高效、灵活的云端开发体验,显著提升了模型开发效率和质量。
约束限制
默认支持创建10000条训练作业,剩余额度可以在训练作业列表页查看。
前提条件
- 已经将用于训练作业的数据上传至OBS目录。
- 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。
ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。
- 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。
- 确保使用的OBS目录与ModelArts在同一区域。
- 检查是否配置了访问授权。如果未配置,请参见快速配置ModelArts委托授权完成操作。
- 已经上传镜像到SWR服务中,具体操作请参见如何登录并上传镜像到SWR。
- 已经准备好训练作业的专属资源池。
计费影响
在ModelArts进行模型训练时,会产生计算资源和存储资源的累计值计费。计算资源为训练作业运行的费用。存储资源包括数据存储到OBS或SFS的费用。详见模型训练计费项。
操作流程介绍
创建训练作业的操作步骤如下所示。
步骤二:基础配置:配置基础信息,例如作业模式、作业名称、描述、实验等。
步骤三:环境配置:配置环境信息,例如创建方式(算法选择)、启动方式、引擎及版本等。
步骤四:训练配置:配置训练作业的输入、输出、超参、环境变量等参数。
步骤五:资源配置:配置资源池类型、实例规格、实例数、挂载存储等信息。
步骤六:容错与恢复:配置自动重启(无条件自动重启、作业卡死重启)等信息。
步骤七:调度配置:调整作业优先级、是否允许被抢占、自动停止等。
步骤八:更多配置:配置日志、事件通知和标签等信息。
步骤一:进入创建训练作业页面
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择进入训练作业列表。
- 单击“创建训练作业”,进入创建训练作业页面,默认进入新版页面,以下内容主要介绍新版创建训练页面操作。
步骤二:基础配置
在创建训练作业页面填写调试训练作业的基础配置。
|
参数名称 |
说明 |
|---|---|
|
作业模式 |
创建调试训练作业时,必须选择“调试模型”。 训练作业支持在云上和本地对训练代码进行调试,调试完成的代码可直接创建生产训练作业。
“生产模式”,则请参考创建生产训练作业(新版页面)创建生产训练作业。 |
|
作业名称 |
必填,训练作业的名称。 系统会自动生成一个名称,可以根据业务需求重新命名,命名规则如下:
|
|
描述(可选) |
训练作业的简介,便于在训练作业列表了解作业信息。 |
|
实验设置 |
勾选“实验设置”后,可以将训练作业放入实验中分类,并有序地进行管理,常用于多任务的版本管理等场景。 实验功能有助于管理和优化训练作业,如通过重建作业时微调超参得到的新作业,可在实验中有序归纳与比较作业结果,从而有效地寻找最佳训练配置。
不勾选实验设置,表示训练作业不在实验中进行统一管理。 |
|
训练应用程序 |
创建调试作业时,SSH远程开发和JupyterLab至少启用一个。
|
|
密钥对 |
启用SSH远程开发时,必须配置密钥对。 可以选择已有密钥对,也可以单击“立即创建”新建密钥对,具体操作请参见创建密钥对。
说明:
创建好的密钥对,请下载并妥善保管,使用本地IDE远程连接到调试训练作业时需要使用密钥对进行鉴权认证。 |
步骤三:环境配置
|
参数名称 |
说明 |
|---|---|
|
创建方式 |
固定选择“自定义算法”。 |
|
启动方式 |
固定选择“自定义”。 |
|
镜像 |
必填,填写容器镜像的地址。
容器镜像地址的填写支持如下方式。
|
|
代码来源 |
选择代码来源。默认是“对象存储服务OBS”。
|
|
代码目录 |
选择训练代码文件所在的OBS目录。如果自定义镜像中不含训练代码则需要配置该参数,如果自定义镜像中已包含训练代码则不需要配置。
说明:
如果您的OBS桶中有需要特别保护的敏感数据,请自行对数据加密后再存 放到OBS桶。 |
|
启动命令 |
必填,镜像的启动命令。
运行训练作业时,当“代码目录”下载完成后,“启动命令”会被自动执行。
启动命令支持使用“;”和“&&”拼接多条命令,命令中的“demo-code”为存放代码目录的最后一级OBS目录,以实际情况为准。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
|
运行用户ID |
容器运行时的用户ID,该参数为选填参数,建议使用默认值1000。 如果需要指定uid,则uid数值需要在规定范围内,专属资源池的uid范围是0~65535。同时,自定义镜像必须存在“/home/ma-user”目录,且“/home/ma-user”目录的属主为指定uid,属组为指定uid对应的gid。 如果运行用户ID配置为0,则训练容器中的运行用户是root。 |
|
本地代码目录 |
仅当“代码来源”选择“对象存储服务OBS”时才显示该参数。可选参数。 用于指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 本地代码目录不支持在/home/ma-user/modelarts/*,/home/ma-user/modelarts-dev/*,/home/ma-user/infer/*目录下,也不支持配置成/home/ma-user。 单击页面右上角的“运行环境预览”,可以查看训练作业的工作目录。 |
|
容器运行目录 |
指定训练容器的本地目录,训练时系统会自动cd到此目录下执行启动文件。 容器运行目录是训练作业运行过程中执行启动命令的本地目录,可用于存储生成的一些临时文件。为确保该目录存在,容器运行目录必须是启动文件本地目录的父目录。 |
步骤四:训练配置
训练过程中可以从OBS桶或者数据集中获取输入数据进行模型训练,训练输出的结果也支持存储至OBS桶中。创建训练作业时可以参考表3配置输入、输出、超参、环境变量等参数。
|
参数名称 |
说明 |
|---|---|
|
输入 |
单击“添加”,配置训练作业输入信息。
|
|
输出 |
单击“添加”,配置训练作业输出信息。
|
|
超参 |
超参用于训练调优。此参数由选择的算法决定,如果在算法中已经定义了超参,则此处会显示算法中所有的超参。 超参支持修改和删除,状态取决于算法中的超参“约束”设置,详情请参见表6。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
|
环境变量 |
根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量。
说明:
为保证数据安全,请勿输入敏感信息,例如明文密码。 |
步骤五:资源配置
|
参数名称 |
说明 |
|---|---|
|
资源池类型 |
仅支持“专属资源池”。 专属资源池需要提前单独创建,不与其他租户共享,具体创建操作请参见创建Standard专属资源池。 |
|
资源池 |
仅选择“专属资源池”后出现此参数,在“资源池”中单击“选择专属资源池”,在右侧弹窗中选择要使用的专属资源池或者逻辑子池。此时,支持查看当前专属资源池的名称、节点池规格、可用节点数/最大节点数、可用NPU/GPU设备数、可用CPU(vCPUs)、可用内存(GiB)以及资源碎片。单击资源碎片列的“查看”可以查看碎片详情,确认资源池是否满足训练需求。 选择完成后,此处会展示所选资源池信息,也可单击“重新选择”再次选择资源池。 |
|
规格类型 |
当选择“专属资源池”时,会显示此参数。支持以下2种规格类型:
图3 实例规格
|
|
实例规格 |
资源池类型为“专属资源池”时,需要先选定“资源池”且规格类型选择“预置规格”后方可选择,资源池类型为“公共资源池”时直接选择。
说明:
|
|
实例数 |
必填,根据需要选择实例数的个数。默认值为“1”。
|
|
存储挂载 |
资源规格选择“专属资源池”时,支持添加多种存储挂载方式,以提高数据的访问效率。
图4 存储挂载
|
|
超节点亲和组实例数 |
|
步骤六:容错与恢复
创建训练作业时,支持设置训练作业自动重启。
|
参数名称 |
说明 |
|---|---|
|
自动重启 |
设置训练作业是否设置自动重启。 |
|
最大重启次数 |
当勾选“自动重启”时可配置。 当训练作业的自动重启次数达到最大重启次数,且训练作业依旧异常,则直接停止作业。
提交创建训练作业后不支持修改重启次数,请合理设置次数。 |
|
无条件自动重启 |
当勾选“自动重启”时可配置。勾选无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。 |
|
作业卡死重启 |
当勾选“自动重启”时可配置。系统支持自动监控作业进程的状态和资源利用率来判定作业是否卡死,开启此开关后,支持将标记为卡死的作业进行进程级自动重启,以提高资源使用率。 CPU规格不支持作业卡死重启。 因系统无法核实代码逻辑且检测存在周期性,卡死检测存在一定的误报概率,开启开关即表示接受误报率。为了避免无效重启浪费算力资源,系统最多只支持连续作业卡死重启3次。 |
|
算子重执行 |
默认不展示,需要符合一定的条件才会展示“算子重执行”开关。 开启算子重执行,可以解决当超节点网络链路故障时导致的训练作业通信异常的问题。 开启对训练任务的性能有较大影响。 详细介绍和约束条件请参见配置算子重执行章节。 |
步骤七:调度配置
创建训练作业时,支持配置作业调度策略,例如提高作业调度优先级、允许被抢占、自动停止等,用于提高作业调度效率。
|
参数名称 |
说明 |
|---|---|
|
作业优先级 |
|
|
允许被抢占 |
|
|
自动停止 |
选择是否启用训练作业自动停止。
|
步骤八:更多配置
|
参数名称 |
说明 |
|---|---|
|
永久保存日志 |
当实例规格选择Ascend资源时,默认开启“永久保存日志”,不允许修改。 当实例规格选择CPU或GPU资源时,支持选择是否打开“永久保存日志”开关。
|
|
日志路径 |
当开启“永久保存日志”时,必须配置“日志路径”,用于存放训练作业产生的日志文件。 建议选择一个空的OBS文件目录存放运行中产生的日志文件,同时需要OBS文件目录的读写权限。 |
|
事件通知 |
选择是否启用训练作业的事件通知。
说明:
|
|
生成节点间SSH免密互信文件 |
选择是否生成节点间SSH免密互信文件。
|
|
标签 |
当需要使用同一标签标识多种云资源时,即所有服务均可在标签输入框下拉选择同一标签,则建议在TMS中创建预定义标签。标签详细用法请参见使用TMS标签实现资源分组管理。 最多支持添加20条标签。 |
步骤九:提交训练作业并调试
- 当创建训练作业的参数配置完成后,单击“提交”,在信息确认页面单击“确定”,提交调试训练作业。
在训练作业列表中,刚创建的训练作业状态为“等待中”。
- 在训练作业列表中,当训练作业的状态变为“运行中”时,单击训练作业名称进入训练详情页,在训练详情页单击JupyterLab地址,弹出JupyterLab页面,即可进行训练代码调试。
JupyterLab页面左侧会显示训练代码文件,JupyterLab的使用请参见JupyterLab简介及常用操作。
当创建的调试训练作业开启了SSH远程开发时,在训练作业详情页获取“SSH远程开发”参数后的“密钥对”和SSH地址信息后,可以使用本地IDE远程连接到调试训练作业中进行代码调试。








