腾讯云大模型训推平台TI-ONE OpenClaw 系列

这篇以 Physical Intelligence 开源的 VLA(视觉-语言-动作)模型仓库 openpi 为例,介绍在腾讯云大模型训推平台 TI-ONE 上完成 π0.5(PI05)模型训练的完整流程,机型为 HCCGC50S。

相关产品
腾讯云大模型训推平台TI-ONE 产品页,含版本规格、价格与购买入口。

一、总览

全流程涉及 TI-ONE 的两个模块:

模块 承担的工作
开发机 挂载 CFS,下载数据集与基座权重,创建训练脚本
任务式建模 提交训练任务,环境准备与 DDP 训练由入口脚本自动完成

二、环境规格

项目 配置
模型 PI05_base(3B 参数)
训练框架 openpi(PyTorch 训练路径,scripts/train_pytorch.py)
分布式方式 DDP(torchrun)
数据集 LIBERO(physical-intelligence/libero)
配置文件 pi05_libero
训练精度 BF16
机型 HCCGC50S
训练镜像 ngc26.02-ofed5.8-hccgc50s-vla-v1.0(平台预置镜像,支持 openpi、fastwam 等模型快速启动)
存储 CFS(与训练资源同地域、同 VPC)

三、前置要求

1. 计算资源:已准备 HCCGC50S 资源,并纳管到 TI-ONE 的资源组中。

2. 文件存储:已创建 CFS 文件系统,地域与 VPC 均需与训练资源一致,否则挂载失败。

3. 训练镜像:平台预置的 VLA 镜像已内置 openpi 仓库(容器内路径 /workspace/openpi)与 install_transformers_replace.sh,无需自行克隆代码;数据集与基座权重不在镜像内,需按步骤二准备。

五、步骤一:创建开发机并挂载 CFS

进入 训练工坊 > 开发机,单击新建:

配置项 填写说明
镜像 任意内置镜像,本开发机仅用于准备数据与脚本
机器来源 从已有 TI-ONE 资源组中选择
存储配置 选择前置要求中创建的 CFS,路径默认根目录 /

注意:说明:

六、步骤二:准备数据集与基座权重

本实践所需物料由平台提供,包含数据集、归一化统计量与已转换为 PyTorch 格式的基座权重,下载后即可直接训练,无需自行执行归一化统计与权重格式转换。

七、1. 创建目录

ASSETS=/home/tione/notebook/embodied-ai/openpi-assetsmkdir -p $ASSETS/datasets \\ $ASSETS/assets/pi05_libero/physical-intelligence/libero \\ $ASSETS/checkpoints \\ $ASSETS/code

八、2. 下载并解压

ASSETS=/home/tione/notebook/embodied-ai/openpi-assetsCOS_BASE=https://taco-train-data-1251001002.cos.ap-shanghai.myqcloud.com# 2.1 LIBERO 数据集(约 35 GB,pi05_libero 配置默认加载)cd $ASSETS/datasetswget $COS_BASE/datasets/libero/physical-intelligence.tar.gztar -xf physical-intelligence.tar.gz# 2.2 归一化统计量:state / actions 各维度的均值与标准差,用于把量纲不同的数值缩放到同一尺度(推理时还原);随数据集提供,无需执行 compute_norm_statswget -O $ASSETS/assets/pi05_libero/physical-intelligence/libero/norm_stats.json $COS_BASE/datasets/libero/norm_stats.json# 2.3 分任务数据集(可选,约 4.7 GB,按 LIBERO 子任务拆分)cd $ASSETS/datasetswget $COS_BASE/datasets/libero/libero_mujoco3.3.2.tar.gztar -xf libero_mujoco3.3.2.tar.gz# 2.4 PI05_base 基座权重(约 14 GB,已转换为 PyTorch 格式)cd $ASSETS/checkpointswget $COS_BASE/models/PI05/pi05_base_pytorch.tar.gztar -xf pi05_base_pytorch.tar.gz

九、3. 校验结果

ASSETS=/home/tione/notebook/embodied-ai/openpi-assets# 目录结构(限制层级,避免列出数万个数据文件)find $ASSETS -maxdepth 3 -type d | sort# 关键文件必须存在ls $ASSETS/assets/pi05_libero/physical-intelligence/libero/norm_stats.json \\ $ASSETS/checkpoints/pi05_base_pytorch/config.json# 数据集占用应约 35 GBdu -sh $ASSETS/datasets/physical-intelligence/libero

预期目录结构:

/home/tione/notebook/embodied-ai/openpi-assets/├── datasets/│ ├── physical-intelligence/libero/ # pi05_libero 配置加载的数据集│ │ ├── meta/│ │ ├── data/chunk-000/…│ │ └── videos/chunk-000/…│ └── libero_mujoco3.3.2/ # 分任务数据集(可选)│ ├── libero_10_no_noops_lerobot/│ ├── libero_spatial_no_noops_lerobot/│ ├── libero_object_no_noops_lerobot/│ └── libero_goal_no_noops_lerobot/├── assets/pi05_libero/physical-intelligence/libero/norm_stats.json├── checkpoints/pi05_base_pytorch/ # PyTorch 格式基座权重└── code/ # 训练脚本(步骤三创建)

注意:说明:

注意:以上物料只需准备一次,后续训练任务复用同一份。

十、步骤三:准备训练脚本

在开发机 Terminal 中执行以下命令,创建训练脚本与入口脚本。两段命令均可整段复制粘贴后执行,heredoc 内的变量不会被提前展开。

十一、1. 训练脚本train_pytorch.sh

cat > /home/tione/notebook/embodied-ai/openpi-assets/code/train_pytorch.sh <<'EOF'#!/usr/bin/env bashset -euo pipefailexport JAX_PLATFORMS=cpu# 数据集已预置到 CFS;lerobot 仍会查询 hub refs,放行镜像访问避免卡住export HF_ENDPOINT=https://hf-mirror.comunset HF_HUB_OFFLINE 2>/dev/null || trueexport HF_LEROBOT_HOME=/home/tione/notebook/embodied-ai/openpi-assets/datasetsexport TRANSFORMERS_OFFLINE=1export NCCL_DEBUG=WARNexport NCCL_MIN_CTAS=1export NCCL_NSOCKS_PERTHREAD=2export NCCL_SOCKET_NTHREADS=2export NCCL_P2P_DISABLE=0export NCCL_SHM_DISABLE=0export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:Trueexport OMP_NUM_THREADS=1export MY_CHECKPOINTS_PATH=/home/tione/notebook/embodied-ai/openpi-assets/checkpointsexport NPROC_PER_NODE=${NPROC_PER_NODE:-$(nvidia-smi -L | grep -c '^GPU')}export NNODES=${NNODES:-1} NODE_RANK=${NODE_RANK:-0}export MASTER_ADDR=${MASTER_ADDR:-127.0.0.1} MASTER_PORT=${MASTER_PORT:-29571}cd /workspace/openpimkdir -p ./logsset -exexp_name=pi05_libero_pytorchtorchrun \\ –nnodes=$NNODES \\ –nproc_per_node=$NPROC_PER_NODE \\ –node_rank=$NODE_RANK \\ –master_addr=$MASTER_ADDR \\ –master_port=$MASTER_PORT \\ scripts/train_pytorch.py pi05_libero \\ –exp-name $exp_name \\ –pytorch-weight-path $MY_CHECKPOINTS_PATH/pi05_base_pytorch \\ –pytorch-training-precision bfloat16 \\ –batch-size 256 \\ –num-train-steps 50 \\ –log-interval 10 \\ –save-interval 25 \\ –no-wandb-enabled \\ 2>&1 | tee "./logs/${exp_name}-node${NODE_RANK}-$(date +"%Y%m%d-%H%M%S").log"EOFchmod +x /home/tione/notebook/embodied-ai/openpi-assets/code/train_pytorch.sh

关键约定:

·JAX_PLATFORMS=cpu:本实践走 PyTorch 训练路径,将 JAX 限制在 CPU 上,避免占用 GPU 显存。

·NPROC_PER_NODE / NNODES / NODE_RANK / MASTER_ADDR / MASTER_PORT:由入口脚本从平台注入的变量传入,并带默认值兜底,便于在开发机单机调试。

·CUDA_VISIBLE_DEVICES:默认对应单节点 8 卡,若申请卡数不同需相应调整。

·–batch-size 256:全局 batch size,单节点 8 卡下每卡 32。

·–num-train-steps 50、–save-interval 25:用于快速跑通链路,正式训练按需调整。

十二、2. 入口脚本 run.sh

cat > /home/tione/notebook/embodied-ai/openpi-assets/code/run.sh <<'EOF'#!/usr/bin/env bash# TI-ONE 任务式建模入口:环境准备 -> 资产校验 -> DDP 训练set -euo pipefailASSETS=/home/tione/notebook/embodied-ai/openpi-assetscd /workspace/openpi# 1. 环境准备:patch 作用于容器内 Python 环境,每次任务都需执行bash install_transformers_replace.sh# 2. 资产校验:缺失时立即失败,避免训练启动后才报错NORM_STATS=/workspace/openpi/assets/pi05_libero/physical-intelligence/libero/norm_stats.json[ -f "$NORM_STATS" ] || { echo "[error] 未找到 $NORM_STATS,请检查步骤二物料与存储挂载配置"; exit 1; }[ -d "$ASSETS/checkpoints/pi05_base_pytorch" ] \\|| { echo "[error] 未找到 $ASSETS/checkpoints/pi05_base_pytorch,请检查步骤二物料与存储挂载配置"; exit 1; }# 3. 启动训练(分布式参数由 TI-ONE 注入)cd /workspace/openpi/codeNPROC_PER_NODE=$GPU_NUM_PER_NODE NNODES=$WORLD_SIZE NODE_RANK=$RANK bash train_pytorch.shEOFchmod +x /home/tione/notebook/embodied-ai/openpi-assets/code/run.sh

注意:说明:

十三、步骤四:创建训练任务

进入 训练工坊 > 任务式建模,单击新建。

十四、1. 基本信息

配置项 填写说明
任务名称 自定义,支持中英文、数字、下划线、短横,需以中英文或数字开头
地域 与 CFS、资源组所在地域一致
训练镜像 在预置镜像中选择 ngc26.02-ofed5.8-hccgc50s-vla-v1.0
训练模式 选择 DDP
算力规格 机型选择 HCCGC50S,例如 128C1024G HCC-N50p-72G*8;节点数量按训练规模填写
自动重启 可选

选择镜像(镜像中心 > 预置镜像):

训练模式与算力规格(示例为 2 节点):

注意:说明:

注意:多机训练建议选择整机资源,避免碎片化影响通信性能。

十五、2. 存储路径设置

按用途分别挂载 CFS 子目录,共四行。四行都需配置,缺少任一行会导致任务启动即失败:

存储类型 用途 源路径(CFS) 容器内路径
CFS 用户自有数据 <CFS 根目录>/embodied-ai/openpi-assets /home/tione/notebook/embodied-ai/openpi-assets
CFS 训练输出 <CFS 根目录>/embodied-ai/openpi-assets/checkpoints /workspace/openpi/checkpoints
CFS 用户自有数据 <CFS根目录>/embodied-ai/openpi-assets/assets /workspace/openpi/assets
CFS 用户自有代码 <CFS根目录>/embodied-ai/openpi-assets/code /workspace/openpi/code

配置示例:

注意:说明:

十六、3. 启动命令

启动命令在每个节点上执行。环境准备与训练启动已收敛到入口脚本,因此只需一行:

bash /home/tione/notebook/embodied-ai/openpi-assets/code/run.sh

十七、4. 提交任务

确认配置后提交。此后环境准备、资产校验、训练与产物落盘全部在任务内自动完成。

注意:说明:

注意:DDP 模式包含 Master 和 Worker 两种角色,编号 0 的是 Master(RANK=0),负责保存模型。单节点任务只有 Master 一个实例,多节点任务才会有 Worker。任意实例退出码非 0 则整个任务失败。

平台注入的 DDP 环境变量

变量名 描述
GPU_NUM_PER_NODE 单个节点的 GPU 卡数
WORLD_SIZE DDP 训练任务的节点数
RANK 当前节点编号(Master 为 0)
MASTER_ADDR Master 节点地址
MASTER_PORT Master 节点端口
GPU_NUM 任务包含的 GPU 卡总数
NODE_LIST 任务节点列表及各节点 GPU 卡数
INDEX 当前节点在 NODE_LIST 中的索引

十八、步骤五:观察训练与获取产物

在任务式建模页面单击任务名称进入详情,通过 日志 页观察训练状态。多机训练可切换「节点」下拉框分别查看:

正常流程的日志顺序:

1. 环境检测(Health Check Summary → PASS);

2. Start command: bash …/run.sh;

3. transformers_replace applied -> …;

4. 进入训练,按 –log-interval 打印 loss 与吞吐,按 –save-interval 保存 checkpoint。

注意:说明:

任务结束后,产物位于 CFS。目录名为训练步数,由 –save-interval 与 –num-train-steps 决定(这篇配置下为 25、49、50):

<openpi-assets>/checkpoints/pi05_libero/pi05_libero_pytorch/├── 25│ ├── assets/physical-intelligence/libero/norm_stats.json│ ├── metadata.pt│ ├── model.safetensors│ └── optimizer.pt├── 49/…└── 50/…

在开发机中即可直接查看与复用,也可作为下一次训练或评测任务的输入。

十九、步骤六:扩展到多机训练

将节点数量调整为 N(N ≥ 2)即可发起多机训练,脚本无需修改——分布式参数均由平台注入。

·整机与 RDMA:建议每节点配置 8 卡整机资源。节点数 ≥ 2 且每节点 8 卡整机时,平台默认配置 RDMA,无需额外设置。

·NCCL 环境变量:平台已为 HCC 机型内置 NCCL_IB_*、NCCL_SOCKET_IFNAME、GLOO_SOCKET_IFNAME 等变量,无需显式设置。

·确认 RDMA 生效:日志出现下列内容即表示 RDMA 通信已启用。

[0] NCCL INFO Channel 00/0 : 8[0] -> 0[0] [receive] via NET/IBext/0/GDRDMA

·自定义镜像:需自行确保镜像已安装用户态 RDMA 驱动;平台预置镜像默认支持常见 HCC 机型。

20、附录:开启 TACO 训练加速

平台提供 taco-train 训练加速库,以 wheel 包形式安装到训练容器中,通过环境变量零代码接入,无需改动 openpi 训练脚本或切换镜像。

建议先按这篇步骤一至步骤五跑通训练基线,再开启加速并对比效果。

前置条件:容器内 Python 为 3.12(该 wheel 为 cp312 构建,Requires-Python >=3.12),可用 python3 –version 确认。

21、1. 在入口脚本中安装并注入 prelude

在 run.sh 中、调用 train_pytorch.sh 之前加入以下片段。加速库安装到容器临时目录,任务结束随容器释放:

# ===== taco-train 加速接入 =====TACO_WHL="https://taco-train-data-1251001002.cos.ap-shanghai.myqcloud.com/taco-train/taco_train-0.1.0%2Bnv-cp312-cp312-linux_x86_64.whl"TACO_SP=/tmp/taco_train/site-packagesmkdir -p "$TACO_SP"pip install -q –target "$TACO_SP" "$TACO_WHL"export PYTHONPATH=$TACO_SP:$TACO_SP/taco_train/prelude:$PYTHONPATHexport TACO_TRAIN_FEATURES=openpi_skip_outer_checkpoint,openpi_compile,tf32export TACO_TRAIN_REPORT=1echo "[taco] prelude=$TACO_SP/taco_train/prelude"

prelude 目录中的 sitecustomize.py 会在 Python 解释器启动时自动加载,并按 TACO_TRAIN_* 环境变量激活加速特性。由于环境变量会被 torchrun 拉起的各个 rank 及 DataLoader 子进程继承,整条训练链路均可生效。

22、2. 加速特性配置

上一节的脚本片段已包含 openpi 的推荐配置,无需额外设置即可使用。本节说明可选特性与按模型的推荐配置,便于按需调整。

环境变量 说明 上节脚本中的取值
PYTHONPATH 加速库与 prelude 目录,须在脚本中设置并保留原值 $TACO_SP:$TACO_SP/taco_train/prelude:$PYTHONPATH
TACO_TRAIN_FEATURES 启用的优化特性,多个以逗号分隔 openpi_skip_outer_checkpoint,openpi_compile,tf32
TACO_TRAIN_REPORT 训练结束时打印各特性状态 1
TACO_TRAIN_LOGLEVEL 日志级别,可选 debug/info/warning/error 未设置(默认 warning)

调整特性时,修改 run.sh 中 TACO_TRAIN_FEATURES 一行即可,可选值如下:

·openpi 专属:openpi_compile、openpi_sdpa、openpi_skip_outer_checkpoint

·通用:tf32、compile、cudnn_benchmark、dataloader、cuda_prefetch、thread_affinity、gc_tuning、memory、fused_adamw、split_k_batchnorm、ulimit

此外,将 TACO_TRAIN_FEATURES 设为 auto 可由加速库自动检测可用特性;设置 TACO_TRAIN_ALL=1 则开启全部特性(会覆盖 TACO_TRAIN_FEATURES),建议仅用于对比测试。

注意:说明:

注意:以上变量均在 run.sh 中 export,不要填入平台的环境变量配置项。

按模型的推荐配置

不同模型可启用的加速特性不同,按下表设置 TACO_TRAIN_FEATURES 即可,其余接入方式(prelude 路径、环境变量注入)完全一致。

模型 / 训练形态 推荐 TACO_TRAIN_FEATURES 说明
openpi(PyTorch 版本) openpi_skip_outer_checkpoint,openpi_compile,tf32 这篇采用的配置,bw1000 与 HCCGC50S(pro5000)通用,已实测
wan2.2 wan_disable_addmm,wan_compile,wan_vae_chunk,wan_fused_padcat,wan_rope_f32,wan_rmsnorm 
其他模型 auto 自动检测可开启的通用特性

注意:说明:

注意:auto 只开启检测为可用的特性,风险低;TACO_TRAIN_ALL=1 会强制开启全部特性(覆盖 TACO_TRAIN_FEATURES),建议仅用于对比测试。

23、3. 验证加速效果

·日志中出现 [taco] prelude=… 且随后无报错,说明加速库已安装、prelude 路径已注入。

·训练结束时 rank 0 会打印特性状态表(由 TACO_TRAIN_REPORT=1 开启),据此确认各特性是否真正生效:

┌─ taco-train — optimization summary│ tf32 applied ×1│ openpi_compile applied ×1│ openpi_skip_outer_checkpoint applied ×1│ … off└────────────────────────────────────────────

applied 表示已生效,off 表示未启用。若显示 n/a (openpi not installed),说明容器内无法导入 openpi,通常是 PYTHONPATH 被平台环境变量配置项覆盖,按上一节注意事项处理。

·加速失败不会中断训练:prelude 激活异常时解释器仍会正常启动,训练照常执行但无加速效果。因此不能以「任务是否成功」判断,必须结合状态表或吞吐数据确认。

·吞吐对比:保持 batch size 与基线一致(这篇为 –batch-size 256),对比开启前后日志中的单步耗时与 samples/s。如需上调 batch size,以不出现 OOM 为准。

24、4. 支持范围

模型 HCCGC50S(pro5000) bw1000 推荐配置(见上一节)
openpi PyTorch 版本(这篇) 支持 支持 openpi(PyTorch 版本)
wan2.2 支持 支持 wan2.2
fastwam 支持 支持 其他模型
其他模型 以 auto 试跑为准 以 auto 试跑为准 其他模型
赞 (0)
上一篇 4天前
下一篇 4天前