【自定义训练】除了支持单机训练任务之外,还预置了 TensorFlowPS、PyTorchDDP、BytePS 等多种分布式训练范式的配置模板,用户简单配置训练角色的数量及实例规格后即可发起大规模的分布式训练任务。
相关概念
使用前提
- 使用预付费(专有)队列时,拥有 >= 1 个预付费队列的使用权限。
操作步骤
平台支持通过控制台(Web 页面)和命令行工具发起训练任务,下文将分别介绍两种方式的操作步骤。
控制台
- 登录机器学习平台,单击左侧导航栏中的【模型训练】-【自定义训练】进入列表页面。
- 单击列表页面左上方的【+ 创建自定义训练】进入创建页面。
- 在创建页面填写相关参数,具体参数如下:
参数名称 | 参数说明 |
---|
任务名称 | - 填写训练任务的名称。 必填 。
- 支持 1~200 位可见字符,且只包含大小写字母、中文、数字、中划线、下划线。
- 默认生成合规的名称,用户根据规范自行修改,名称可重复。
|
描述 | - 填写对训练任务的适当描述。 选填 。
- 支持 1~500 位可见字符。
|
标签 | - 填写任务标签。 选填 。
- 支持 1~100 位可见字符,只包含大小写字母、中文、数字、中划线、下划线且不允许以符号开头。
|
可见范围 | - 配置该任务能够在哪些账号范围内可见。选填。
- 主账号内可见:主账号下所有用户均可查看该任务及详情。
- 队列内成员可见:拥有任务所属队列权限的用户均可查看该任务及详情。
- 指定子账号可见:在指定账号列表中的用户有权限查看到该任务及详情。
- 仅创建人可见:仅任务创建人有权限查看该任务及详情。
|
镜像 | - 选择训练任务的镜像。 必填 。
- 支持
预置镜像 、自定义镜像 、火山引擎镜像 以及公网镜像 (私有的镜像仓库需要填写用户名和密钥)。
|
源代码 | - 上传训练代码。 选填 。
- 支持上传单个文件或目录并挂载到容器中的指定目录下(默认为
/root/code )。
- 仅支持上传 10000 个文件、单文件在 100MB 内且总文件在 2GB 内,否则请用命令行工具发起训练。
- 当代码中包含 .gitignore 文件时将根据该文件进行过滤。
- 由于代码将上传至对象存储 TOS 中,因此在上传代码前请参考开通相关服务一键授予机器学习平台访问用户 TOS 的权限。
|
入口命令 | |
参数 | - 填写入口命令的额外参数。 选填 。
- 该参数将拼接在入口命令后。
|
环境变量 | - 将被注入到训练容器中的环境变量。 选填 。
- 环境变量的 key 值仅支持大小写字母、数字、下划线,且不能以数字作为开头。
- 支持配置最多 20 个环境变量。
- 支持指定某个环境变量仅创建人可见。
|
TensorBoard | - 选择是否采集 TensorBoard 日志。 选填 。
- 开启后用户需要编写代码将日志写入环境变量
TENSORBOARD_LOG_PATH 对应的地址,然后在任务的列表页 / 详情页启动 TensorBoard 查看对应的日志。
|
所属队列 | 选择运行任务的队列。可参考相关概念中的 “资源组” 章节进行配置。 必填。 |
优先级 | - 配置任务的优先级。选填。
- 优先级的完整范围为 1~9,取值越大,优先级越高。提交任务时仅支持部分档位,队列管理员可在任务列表(包含队列详情页的任务列表)中自由调整正在排队的自定义任务的优先级,除此之外还能为任务做资源预留以避免出现资源量小的任务频繁插队高优大资源量任务的问题,详见任务的优先级调度策略。
- 对于同一队列中所有排队的负载(包括开发机、自定义任务、在线服务),平台会尝试根据优先级从高到低、创建时间从早到晚的顺序进行调度,同时结合实际的资源情况决定最终的调度顺序。基本保证在资源充足、相同优先级下,先提交的任务先调度。
- 支持队列管理员在队列层面配置各种类型负载的默认优先级。
- 如:配置开发机的默认优先级为 5,自定义任务为 4,在不调整优先级的情况下,默认创建的开发机总是会比默认创建的自定义任务先获得资源。
|
使用闲时资源 | - 是否允许任务使用各队列的闲时资源(原可抢占开关)。选填。
- 闲时任务能够使用各队列出借的空闲资源,一定程度上减少排队时间,提升总体资源利用率,详见预付费场景下的闲时任务。
|
实例配置 | - 一种类型的 GPU 对应梯度丰富的 CPU 和内存规可供选择,在为用户提升资源利用率的同时,提供尽可能高的支配灵活性。
|
最长运行时间 | - 任务的最长运行。 选填。
- 当该配置与资源组中的长时间任务配置不同时,取两者中的较小值。当填
0 时则关闭该功能,即在程序不出错的前提下始终运行。
- 如:创建任务时配置最长运行
1 小时,资源组中配置为 2 小时,则任务将在运行 1 小时后被停止。
|
实例保留时长 | - 实例容器的保留时长。选填。
- 当某个实例运行失败或者成功后可以将对应的容器保留一段时间,便于通过 WebShell 进入容器定位问题。
- 如:创建任务时配置保留时长为
5 分钟,当实例运行失败时会进入 失败(保留中) 的状态,在接下来的 5 分钟内允许通过 WebShell 进入容器,5 分钟后该实例转为 失败 状态,此时 WebShell 入口将关闭。
|
环境诊断 | - 开启该配置后,当环境运行失败时,将自动触发当前任务环境健康状态诊断。选填。
- 诊断预计将占用一段时间用于验证环境的可用性以及稳定性。单机检测预计占用5-10分钟,多机检测预计占用15-20分钟。
- 环境诊断的结果您可通过列表中的诊断标识查看,也可通过诊断事件进行查看。诊断失败结果将不影响任务运行状态。
|
进程巡检 | - 支持在任务稳定运行过程中持续检查
Python 进程数量,以判断任务是否异常,推荐您在做大模型训练任务中使用。选填。 - 您可根据任务运行情况设置
巡检时机 ,平台将根据您设定的诊断时间再触发巡检。默认诊断时间为 60 分钟。但请确保在该段时间内,任务已完成初始化、数据处理等操作并且进入了稳定训练阶段,否则会出现误检事件。 - 环境诊断的结果您可通过列表中的诊断标识查看,也可通过诊断事件进行查看。诊断失败结果将不影响任务运行状态。
|
任务 Hang(挂起)检测 | - 支持检测任务是否出现 Hang(挂起)现象。选填。
- 支持配置挂起时长,默认为
30 分钟。超过该设定时长阈值,平台将判断该任务 Hang(挂起)。 - 环境诊断的结果您可通过列表中的诊断标识查看,也可通过诊断事件进行查看。诊断失败结果将不影响任务运行状态。
|
自动重试 | - 支持配置任务的自动重试。选填。
- 支持配置最大重试次数及重试间隔(上个任务终止到新任务提交之间的时长)。
- 支持配置触发重试的条件:任务失败、闲时资源回收(针对使用闲时资源的任务)、节点故障、进程巡检不通过、任务 Hang(挂起)。触发重试后,若当前任务原本状态为运行中,将变更为已停止。
|
- 完成上述表单的配置后勾选同意协议,单击【确认订单】提交启动训练任务。后续用户即可在【自定义训练】的列表页 / 详情页中管理训练任务。
命令行
安装机器学习平台命令行工具并完成配置,具体详见命令行工具。
编写训练任务的配置文件(.yaml),配置文件的编写规范详见volc ml_task submit,也可以通过 volc ml_task list
指令以及操作提示导出现有任务的 yaml 做参考。
使用如下命令从本地提交训练任务:
volc ml_task submit --conf <配置文件的路径>
# 示例:
volc ml_task submit --conf ./tf_custom_mnist_random_1worker-2c4g.yaml
100% |████████████████| (1/1, 826 it/s)
创建任务成功,task_id=t-20211011193917-vzjm4
任务通知
当任务完成、失败或出现异常等情况时,平台能够发送消息及时通知用户,具体的配置过程详见配置任务的消息通知。