创建训练任务
训练任务支持两种创建方式:- 通过 Python 参数创建,适合在脚本或流水线中动态组合任务配置。
- 通过 YAML 文件创建,适合复用已有任务配置文件。
0.3.27 为准。
创建示例
以下两个页签使用相同的基础配置创建 PyTorchJob。请按实际环境替换镜像地址、实例规格和<RESOURCE_POOL>,并确保启动命令引用的训练脚本已包含在镜像中,或通过 Volume 挂载到任务环境。
- Python
- YAML
先构建任务配置,再调用
client.tasks.create 提交。下文的 Python 补充配置示例沿用这里的 task_config,请在提交前加入所需配置。参数说明
两种创建方式的主要参数说明如下。参数列使用 Python 命名;命名不同的 YAML 字段在说明中注明。补充任务配置
以下补充配置适用于 Python 参数和 YAML 两种创建方式。通用配置
以下示例补充 Volume 挂载、任务环境变量、资源调度和标签。请按需选用,并替换 Volume ID、调度策略 ID 和环境变量值。- Python
- YAML
在创建示例的
client.tasks.create(**task_config) 调用前加入:按任务类型配置
PyTorchJob 通常只需要配置workers、instances、启动命令和挂载资源。资源预检、任务 VSCS 访问和抢占通知仅对 pytorchjob 生效,配置方式请参见 配置增强能力。
RayJob 支持为 Head 节点单独指定实例规格。未配置 head_instances(YAML 中的 headInstances)时,Head 与 Worker 使用同一实例规格。
以下示例将基础创建配置改为 RayJob。Python 片段需在提交前执行;YAML 片段需合并到 task.yml,替换同名字段,保留镜像和资源池等其他基础配置。
- Python
- YAML
配置增强能力
增强能力按需启用,不必为每个任务都配置。以下说明共用于两种创建方式。 使用 Python 参数创建时,在提交任务前初始化增强能力配置,再加入所需的能力片段:enhancements 对象。YAML 片段需要合并到 task.yml 的 enhancements 对象中;启用多项能力时,只保留一个顶层 enhancements 字段,并在其下合并各能力配置。
自动容错
Python 的fault_tolerance 对应 YAML 的 faultTolerance。
max_retry_count(maxRetryCount)设置任务异常后的最大重试次数。auto_replace_enabled(autoReplaceEnabled)控制是否启用故障自动换机。fault_strategy_enabled(faultStrategyEnabled)控制是否启用容错策略。省略时由服务端默认策略决定。replace_pod_notify_max_wait(replacePodNotifyMaxWait)设置通知训练进程后等待确认的最长时间。- 单位为秒,取值范围为
0~600;0表示不等待,省略时使用服务端默认值。 - 仅在服务端最终配置中的
enabled和fault_strategy_enabled均为True时生效。 - 等待发生在发送
SIGTERM之前,不占用 Pod 的terminationGracePeriodSeconds。
- 单位为秒,取值范围为
- Python
- YAML
自定义指标采集
Python 的metrics_monitor 对应 YAML 的 metricsMonitor。单端点采集使用 port 和 path;多端点采集使用 endpoints,最多配置 16 项,且优先于 port 和 path。
- 每个
TaskMetricsEndpoint需要指定port,取值范围为1~65535。单端点模式的port不能使用保留端口8080。 path为指标路径,需以/开头,默认值为/metrics。remark为端点备注,仅用于展示,最多 128 字符。
- Python
- YAML
endpoints 替换为 port=9090, path="/metrics";YAML 中使用 port: 9090 和 path: /metrics。
任务运行后,可通过 使用 Python SDK 查询指标 发现已采集的自定义指标。
资源预检
precheck 仅支持 pytorchjob。开启后,预检失败会使任务失败;可通过 envs 向预检脚本传入环境变量。
- Python 的
env_key、env_value对应 YAML 的envKey、envValue。 env_key仅允许 ASCII 字母、数字和下划线,不能以数字或KUBERNETES_开头。env_value不能为空,不能包含换行符或 NUL 字符,最大 8 KiB。precheck.envs仅传给预检脚本,不会写入训练容器环境变量,请勿填写敏感信息。
- Python
- YAML
任务 VSCS 访问
vscs 仅支持 pytorchjob。开启后,可从网页打开 VSCS 访问任务环境。
Python 的 extension_dir、user_data_dir 对应 YAML 的 extensionDir、userDataDir。建议使用持久化路径,避免扩展和用户配置随任务环境丢失。以下路径需先通过 Volume 挂载。
- Python
- YAML
抢占通知
Python 的preempt_notify 对应 YAML 的 preemptNotify,仅支持 pytorchjob。
port为训练进程监听通知的端口,取值范围为9000~9999。max_wait(maxWait)为最长存盘等待秒数。
enabled 设置为 True(YAML 中为 true)。
- Python
- YAML
查询训练任务
根据任务 UUID 查询详情:sub_task 用于区分父任务和子任务,root_task_name 用于将子任务关联到父任务。父任务处于终态,不代表重试子任务已经结束;应查看子任务自身的 status。
分页结果可能将父任务和子任务分开。如需获取完整关联链,可调用 client.tasks.get_related(uuid="<TASK_UUID>")。
管理员如需查询更大范围的任务,可按所有者过滤或拉取全量分页结果:
