DLC Tutorial (PPU + MaxCompute Table)
此文档提供在阿里云的PAI-DLC(分布式训练容器)中使用PPU加速卡,配合TorchEasyRec读取MaxCompute(MC)表进行模型训练的步骤和配置示例。
PPU是阿里云自研的AI加速卡,兼容CUDA生态,可低成本迁移现有训练代码,详见PPU简介。TorchEasyRec在PPU上的使用方式与GPU基本一致,仅需更换节点镜像与对应的tzrec安装包。
环境准备
创建数据集
进入PAI控制台,点击 AI资源管理-数据集 -> 创建数据集。选择数据存储为阿里云文件存储(NAS),挂载到/mnt/data下。任务运行时,会从挂载路径下读取训练数据和配置文件以及写入模型检查点等。
加载训练数据到MaxCompute
获取并执行脚本来创建数据表并上传数据至MaxCompute
wget https://tzrec.oss-accelerate.aliyuncs.com/data/quick_start/upload_data.sh
bash upload_data.sh ${ODPS_PROJECT_NAME}
前置条件
在MaxCompute控制台的「租户管理」->「租户属性」页面打开开放存储(Storage API)开关。
「租户管理」->「新增成员」给相应用户授予「admin」权限;或参考租户权限文档,精细授予用户Quota的使用权限
创建DLC任务
配置文件
配置文件以DIN为例 multi_tower_din_taobao_dlc_mc.config
配置任务
进入PAI控制台,并选择需要使用的工作空间,点击 模型开发与训练-分布式训练(DLC),点击创建任务。
节点镜像 选择官方镜像torcheasyrec:1.1.0-pytorch2.10.0-ppu-py312-cu130-ubuntu24.04
数据集配置 选择刚新建的NAS数据集
资源配置 选择框架为PyTorch,任务资源选择PPU规格的机型(建议优先选择单机多卡机型,需要多机多卡训练时建议选择带RDMA的机型)
角色信息 选择PAI默认角色
执行命令 如下
训练命令
设置ODPS_ENDPOINT为对应的MaxCompute服务地址,执行训练命令:
cd /mnt/data
wget https://tzrec.oss-accelerate.aliyuncs.com/config/quick_start/multi_tower_din_taobao_dlc_mc.config
# 安装tzrec并启动训练
pip install tzrec==1.1.18+20260526.47763cf -f http://tzrec.oss-accelerate.aliyuncs.com/release/nightly/repo.html --trusted-host tzrec.oss-accelerate.aliyuncs.com
ODPS_ENDPOINT=http://service.{region}-vpc.maxcompute.aliyun-inc.com/api \
torchrun --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT \
--nnodes=$WORLD_SIZE --nproc-per-node=$NPROC_PER_NODE --node_rank=$RANK \
-m tzrec.train_eval \
--pipeline_config_path /mnt/data/multi_tower_din_taobao_dlc_mc.config \
--train_input_path odps://{project_name}/tables/taobao_data_train \
--eval_input_path odps://{project_name}/tables/taobao_data_test \
--model_dir /mnt/data/multi_tower_din_odps_dlc
--pipeline_config_path: 训练用的配置文件路径。--train_input_path: 指定训练用的MaxCompute的表。--eval_input_path: 指定评估用的MaxCompute表。
MaxCompute表按如下格式设置: odps://{project}/tables/{table_name}/{partition},多表按逗号分隔 如果单表需要设置多个分区,可以用&简写,来分隔多个分区,odps://{project}/tables/{table_name}/{partition1}&{partition2}
nproc-per-node: 如果是cpu训练,则设置为固定值1
评估命令
完成模型训练后,进行模型评估:
pip install tzrec==1.1.18+20260526.47763cf -f http://tzrec.oss-accelerate.aliyuncs.com/release/nightly/repo.html --trusted-host tzrec.oss-accelerate.aliyuncs.com
ODPS_ENDPOINT=http://service.{region}-vpc.maxcompute.aliyun-inc.com/api \
torchrun --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT \
--nnodes=$WORLD_SIZE --nproc-per-node=$NPROC_PER_NODE --node_rank=$RANK \
-m tzrec.eval \
--pipeline_config_path /mnt/data/multi_tower_din_odps_dlc/pipeline.config \
--eval_input_path odps://{project_name}/tables/taobao_data_test
–pipeline_config_path: 评估用的配置文件
–checkpoint_path: 指定要评估的checkpoint, 默认评估model_dir下面最新的checkpoint
–eval_input_path: 指定评估用的MaxCompute表
导出模型
导出训练好的模型:
pip install tzrec==1.1.18+20260526.47763cf -f http://tzrec.oss-accelerate.aliyuncs.com/release/nightly/repo.html --trusted-host tzrec.oss-accelerate.aliyuncs.com
ODPS_ENDPOINT=http://service.{region}-vpc.maxcompute.aliyun-inc.com/api \
torchrun --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT \
--nnodes=$WORLD_SIZE --nproc-per-node=$NPROC_PER_NODE --node_rank=$RANK \
-m tzrec.export \
--pipeline_config_path /mnt/data/multi_tower_din_odps_dlc/pipeline.config \
--export_dir /mnt/data/multi_tower_din_odps_dlc/exported_model
–pipeline_config_path: 导出用的配置文件
–checkpoint_path: 指定要导出的checkpoint, 默认导出model_dir下面最新的checkpoint
–export_dir: 导出到的模型目录
预测
使用导出的模型进行预测:
pip install tzrec==1.1.18+20260526.47763cf -f http://tzrec.oss-accelerate.aliyuncs.com/release/nightly/repo.html --trusted-host tzrec.oss-accelerate.aliyuncs.com
ODPS_ENDPOINT=http://service.{region}-vpc.maxcompute.aliyun-inc.com/api \
torchrun --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT \
--nnodes=$WORLD_SIZE --nproc-per-node=$NPROC_PER_NODE --node_rank=$RANK \
-m tzrec.predict \
--scripted_model_path /mnt/data/multi_tower_din_odps_dlc/exported_model \
--predict_input_path odps://{project_name}/tables/taobao_data_test \
--predict_output_path odps://{project_name}/tables/taobao_data_test_output \
--reserved_columns user_id,adgroup_id,clk
–scripted_model_path: 要预测的导出模型
–predict_input_path: 指定预测用的MaxCompute表
–predict_output_path: 预测结果的输出MaxCompute表
–reserved_columns: 预测结果中要保留的输入列
–output_columns: 预测结果中的模型输出列
注意事项
确保在MaxCompute控制台中已为相关用户授予必要的权限以访问数据表。
在训练命令中,
ODPS_ENDPOINT环境变量需设置为对应的MaxCompute服务地址。PPU镜像内置了适配PPU的PyTorch等依赖,安装tzrec时请勿覆盖升级这些底层依赖。