PAI-DLC PyTorchJob 参数配置与使用指南

在执行 dlc submit pytorchjob 命令提交深度学习训练任务时,参数可划分为两大类别:一类是DLC平台的管控参数,用于定义任务的基础属性与资源规格;另一类是Command执行指令,负责描述容器启动后的具体运行逻辑。下文将对每个参数逐一拆解,帮助您快速掌握其用法与最佳实践。
1. DLC 平台基础参数
这些参数位于命令的最外层,直接告知阿里云PAI-DLC平台“这是一个什么类型的任务”以及“需要分配多少计算资源”。简而言之,它们是任务的“身份标识”与“资源清单”。
| 参数 | 说明 | 示例/备注 |
|---|---|---|
--name |
任务名称。用于在控制台管理和搜索该任务。推荐采用描述性命名规范(如:项目_日期_用途_版本),便于后续追溯。 | my_project_train_v1 |
--data_sources |
数据源挂载 ID。指定任务运行时需挂载的云存储(OSS/NAS)ID。容器内默认挂载至 /mnt/data/ 目录。 |
d-xxxxxxxxxxxx |
--workspace_id |
工作空间 ID。指定任务所属的PAI工作空间,用于实现资源隔离与权限管控。 | 123456 |
--priority |
任务优先级。数值越大优先级越高,高优先级任务在资源竞争时将优先获得GPU分配。 | 1 (普通), 10 (高) |
--job_max_running_time_minutes |
最大运行时长,单位分钟。设置超时阈值可防止任务死循环造成资源浪费;超时后任务会被强制终止。 | 43200 (即30天) |
2. Command 执行指令 (--command)
这是任务的核心逻辑——一段Shell脚本,定义了容器启动后具体要执行的操作。通常遵循“环境准备→模型训练→模型导出”三步流程。
A. 环境与依赖安装
以下为常见脚本片段:
pip install
export ODPS_ENDPOINT=
pip install ...——用于安装自定义Python依赖包。由于DLC提供的镜像未涵盖全部业务库(例如推荐算法库tzrec),需通过URL手动安装。
export ODPS_ENDPOINT=...——设置环境变量。若训练数据存储在MaxCompute(ODPS)中,必须配置该Endpoint,项目代码才能正常连接数据服务。
B. 分布式训练启动 (torchrun)
这是启动PyTorch分布式训练的标准方式,具体写法如下:
torchrun \
--master_addr=$MASTER_ADDR \
--master_port=$MASTER_PORT \
--nnodes=$WORLD_SIZE \
--nproc_per_node=$NPROC_PER_NODE \
--node_rank=$RANK \
-m \
[业务参数...]
几个关键变量说明:
$MASTER_ADDR/$MASTER_PORT:PAI自动注入的主节点IP与通信端口,无需手动修改。--nnodes=$WORLD_SIZE:节点总数,由DLC平台的资源配置决定。例如申请4台机器,此处值即为4。--nproc_per_node=$NPROC_PER_NODE:单机上的进程数,通常等于该机器配置的GPU数量(例如每台8卡,此处填8)。--node_rank=$RANK:当前节点编号(从0开始),PAI会自动为每个容器分配唯一的Rank ID。-m:指定要运行的Python模块名,等价于python -m xxx。- 业务参数(如
--pipeline_config_path、--train_input_path)是传递给Python脚本的具体配置,通常包括模型配置文件路径(指向挂载目录下的模型配置)、训练数据输入路径(本地路径/mnt/data/...或ODPS表路径)、模型输出路径(Checkpoint保存位置)。
C. 模型导出/评估(可选)
训练结束后,通常还会执行导出或评估脚本:
INPUT_TILE=2
ODPS_ENDPOINT=
torchrun \
... (同上分布式参数) ...
-m \
--pipeline_config_path \
--export_dir
逻辑复用:导出阶段一般也需要分布式环境(尤其是大模型),因此再次调用torchrun并传入相同的分布式环境变量。
--export_dir:指定最终模型文件(如SavedModel、TorchScript)的输出目录。
关键提示
- 换行符
\:Shell脚本中\表示换行续写。复制命令时务必确保\后面没有空格,且紧跟回车。 - 环境变量:
$MASTER_ADDR、$WORLD_SIZE、$RANK等变量由PAI-DLC平台在任务启动时自动注入到容器中,切勿硬编码具体的IP或数字,否则多机环境下无法正确组网。 - 路径一致性:
--data_sources挂载的路径必须与--command中引用的文件路径(如/mnt/data/deploy/...)保持一致,否则会触发“File not found”错误。
