当前位置: 首页 > news >正文

CANN Pi0.5昇腾训推实践

LeRobot 框架具身 VLA 模型昇腾训推实践

【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence

下表展示了在昇腾 A2 NPU 平台上,基于 LeRobot 框架运行多项 LIBERO 典型任务的推理效果。通过必要的框架适配与环境配置,昇腾平台成功实现了 VLA 模型在多任务场景下的端到端推理,验证了训推方案的可用性和一致性。

libero_spatial:
pick up the black bowl from table center and place it on the plate
libero_object:
pick up the salad dressing and place it in the basket
libero_goal:
put the wine bottle on top of the cabinet
libero_10:
turn on the stove and put the moka pot on it

围绕 LeRobot 在昇腾平台上的训推实践,本文主要介绍环境准备、代码同步、训练、profiling 和评估的使用方式。关于pi05在昇腾上的性能优化细节、保留优化项和量化收益,会在 doc/README.md 中展开。

项目背景

LeRobot是一个面向真实世界机器人应用的前沿机器学习框架,致力于为模仿学习与强化学习提供高质量的模型、数据集和工具链。

  • LeRobot 基于 PyTorch 构建,旨在降低机器人学习的入门门槛,推动社区在真实场景中的模型共享、数据协作与算法复用。
  • 框架集成了多种经验证可在真实机器人系统中有效部署的最先进方法,并已发布一系列预训练模型、人工采集的演示数据集以及仿真实验环境,便于研究者和开发者快速上手。
  • 所有模型与数据均托管于 LeRobot Hugging Face 页面,支持一键加载与复现。

在本案例中,我们在昇腾 A2 AI 加速器上完成了 LeRobot 框架的迁移适配,成功运行了多种视觉-语言-动作(Vision-Language-Action, VLA)模型,在多个机器人基准测试任务上实现了端到端的训练与推理。此外,还围绕 π₀.₅ 模型在 LIBERO 上的模仿学习训练做了针对昇腾平台的性能分析与优化。

环境准备与代码同步

CANN 相关环境配置

安装 CANN 软件包。本样例的编译执行依赖 CANN 开发套件包(cann-toolkit)与 CANN 二进制算子包(cann-kernels),支持的 CANN 软件版本为8.3.RC1。请从软件包下载地址下载Ascend-cann-toolkit_8.3.RC1_linux-aarch64.runAscend-cann-kernels-910b_8.3.RC1_linux-aarch64.run,并参考 CANN 安装文档依次进行安装。

LeRobot 相关环境配置与安装

完成 CANN 环境配置后,可通过以下步骤获取样例代码并初始化环境。setup.sh作为总入口,会编排setup_lerobot.shsetup_cmake.shsetup_deps.sh三个模块,完成 LeRobot 指定版本同步、conda 环境准备、基础依赖安装,以及 PI05 所需额外依赖和脚本覆盖。

cd <your-workdir> git clone https://gitcode.com/cann/cann-recipes-embodied-intelligence.git chmod +x cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts/setup.sh ./cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts/setup.sh

网络受限环境可先指定 CMake 国内镜像备用地址(默认已内置清华镜像,可按需覆盖):

export CMAKE3_MIRROR_URL="https://mirrors.tuna.tsinghua.edu.cn/kitware/cmake/v3.28/cmake-3.28.3.tar.gz" ./cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts/setup.sh

默认目录关系如下:

<your-workdir>/ ├── cann-recipes-embodied-intelligence/ └── lerobot/

当前样例默认锁定到以下经过 Python 3.10 / CANN 8.3 实测兼容的版本组合,避免后续 LeRobot 或 PyTorch 继续更新导致适配失效:

  • LeRobot version:v0.4.4
  • LeRobot commit:8fff0fde7c79f23a93d845d1a50e985de01f8b8a
  • Python:3.10
  • torch:2.8.0
  • torchvision:0.23.0
  • torch_npu:2.8.0.post2
  • torch_npu 运行时依赖:pyyaml attrs psutil decorator cloudpickle scipy tornado ml-dtypes
  • torch_npu 可复用依赖:absl-py;若运行环境中已存在系统预装且只读的absl-py,脚本会检测到后直接复用,不再强制升级
  • torchcodec:固定为0.7.0(对应 git tagv0.7.0),aarch64 下需要源码安装,当前 PI05/transformers 导入链必需
  • torchcodec 源码获取优先级:已安装的torchcodec==0.7.0->TORCHCODEC_LOCAL_DIR/ 默认${ROOT_DIR}/torchcodec本地缓存 ->TORCHCODEC_GIT_PRIMARY_URL(默认 GitCode 镜像)-> GitHub 官方仓库
  • torchcodec 构建前置:在 conda 环境中执行conda install -y -c conda-forge ffmpeg=7.1.1 pkg-config
  • torchcodec 构建参数:设置TORCHCODEC_DISABLE_COMPILE_WARNING_AS_ERROR=1,避免ffmpeg 7.1.1的弃用告警导致v0.7.0编译失败
  • torchcodec 库发现:脚本会导出PKG_CONFIG_PATH=${CONDA_PREFIX}/lib/pkgconfig:${CONDA_PREFIX}/share/pkgconfig:${PKG_CONFIG_PATH}并检查libavdevice libavfilter libavformat libavcodec libavutil libswresample libswscale
  • CMake 源码下载:默认先尝试官方地址,失败后自动回退到CMAKE3_MIRROR_URL(默认清华镜像)
  • CANN:8.3.RC1

如需切换 LeRobot 代码版本,请显式传入--lerobot-ref <commit|tag|branch>;若仅需要同步源码到指定目录,可传入--sync-only --lerobot-dir <path>;若确认要覆盖目标lerobot目录中的本地修改,可追加--force

如需单独手动安装torchcodec,推荐在lerobot环境中执行以下命令:

conda activate lerobot conda install -y -c conda-forge ffmpeg=7.1.1 pkg-config cd /home/ma-user/work/torchcodec git fetch --tags --force git checkout -f v0.7.0 export TORCHCODEC_DISABLE_COMPILE_WARNING_AS_ERROR=1 export CMAKE=/home/ma-user/.local/cmake3/bin/cmake export CMAKE_PREFIX_PATH="$(python -m pybind11 --cmakedir):/home/ma-user/.local/cmake3:${CONDA_PREFIX}:${CMAKE_PREFIX_PATH}" export PKG_CONFIG_PATH="${CONDA_PREFIX}/lib/pkgconfig:${CONDA_PREFIX}/share/pkgconfig:${PKG_CONFIG_PATH}" python -m pip install -e . --no-build-isolation -v

完成上述操作之后,对应的项目文件结构请参考附录部分正确安装后项目文件结构。

分布式训练与 Profiling

本目录下训练与 profiling 的入口脚本分别为:

  • 训练脚本:manipulation/pi05/train/src/scripts/run_train.sh
  • profiling 脚本:manipulation/pi05/train/src/scripts/run_profiling.sh

如果你只是想先把流程跑通,用这里的命令即可;如果你还想知道当前默认训练路径里已经包含了哪些优化、这些优化为什么有效,以及 profiling 结果应该怎么看,再去看 doc/README.md。

从零开始复现时,建议按下面的顺序执行:

  1. 先执行src/scripts/setup.sh完成 LeRobot 代码同步、conda 环境准备和依赖安装。模块化入口分别为:src/scripts/setup_lerobot.shsrc/scripts/setup_cmake.shsrc/scripts/setup_deps.sh(默认由setup.sh自动编排)。
  2. 激活lerobot环境后进入src/scripts/目录。
  3. 训练使用./run_train.sh pi05 --nproc 2 --disable-outer-suffix-checkpoint
  4. profiling 使用./run_profiling.sh pi05 --nproc 2 --foreground --disable-outer-suffix-checkpoint --profile-wait 1 --profile-warmup 1 --profile-active 2 --profile-repeat 1
  5. 如模型和数据已缓存到本地,可再打开HF_HUB_OFFLINE=1TRANSFORMERS_OFFLINE=1HF_DATASETS_OFFLINE=1缩短启动等待时间。

推荐训练命令:

cd cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts ./run_train.sh pi05 --nproc 2 --disable-outer-suffix-checkpoint

推荐 profiling 命令:

cd cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts ./run_profiling.sh pi05 \ --nproc 2 \ --foreground \ --disable-outer-suffix-checkpoint \ --profile-wait 1 \ --profile-warmup 1 \ --profile-active 2 \ --profile-repeat 1

补充说明:

  • --disable-outer-suffix-checkpoint是当前建议显式保留的启动参数,是性能优化收益最大的一项。
  • 其他已经验证保留的优化,例如sample_betafast path、PaliGemma QKV fusionnpu_fusion_attention、Gemma MLP grouped GEMM 以及 PI05 的 DDP 默认配置,已经吸收到当前脚本和模型实现中,不需要额外手工打开。

评估脚本使用说明

本案例提供了一个通用的评估启动脚本run_eval.sh,用于在昇腾单机环境下启动 VLA 模型的评估任务。该脚本对以下功能进行了统一封装:

  • 自动配置无头渲染环境(Xvfb + OSMesa)
  • 支持多种评估环境(libero/aloha/pusht等)
  • 自动加载评估配置并执行推理
  • 输出目录与日志自动管理

快速开始

确保已激活包含lerobot和 PyTorch 的 conda 环境,并完成 Ascend 驱动与 CANN 环境配置后,执行以下命令:

cd cann-recipes-embodied-intelligence/manipulation/pi05/train/src/scripts chmod +x run_eval.sh ./run_eval.sh

支持的命令行选项

脚本支持两种使用方式:

  1. 默认评估:无参数时,运行官方smolvlalibero评估任务。
  2. 自定义评估:传入参数时,直接透传给lerobot_eval脚本,支持所有lerobot_eval的命令行选项。

常用lerobot_eval选项包括:

选项说明
--policy.path <path>指定模型策略路径,例如 Hugging Face 模型或本地 checkpoint
--env.type <type>评估环境类型,例如liberoalohapusht
--env.task <task>具体任务名称,例如libero_objectlibero_spatial
--eval.batch_size <N>评估批次大小,默认1
--eval.n_episodes <N>评估回合数,默认1
--policy.device <device>指定设备,例如npucuda
--output_dir <path>输出目录路径
-h,--help显示lerobot_eval的帮助信息

使用示例

# 示例 1:运行默认评估任务(smolvla libero_object) ./run_eval.sh # 示例 2:评估自定义模型在 libero_spatial 任务上 ./run_eval.sh --policy.path="/path/to/your/model" --env.type="libero" --env.task="libero_spatial" --eval.n_episodes=10 --output_dir="./my_eval_output" # 示例 3:评估 aloha 环境中的任务 ./run_eval.sh --policy.path="HuggingFaceVLA/smolvla_aloha" --env.type="aloha" --env.task="aloha_mobile" --policy.device=npu # 示例 4:查看所有可用选项 ./run_eval.sh --help

补充说明:

  • 脚本会自动启动虚拟显示(Xvfb)并配置 OSMesa 无头渲染,确保在无 GUI 环境下正常运行。
  • 评估结果会保存在指定的output_dir中,包括日志、视频和性能指标。
  • 如需保存控制台日志,可使用./run_eval.sh > eval.log 2>&1的方式重定向。
  • 在昇腾环境上执行时,请确认--policy.device=npu已正确设置。

Citation

@misc{cadene2024lerobot, author = {Cadene, Remi and Alibert, Simon and Soare, Alexander and Gallouedec, Quentin and Zouitine, Adil and Palma, Steven and Kooijmans, Pepijn and Aractingi, Michel and Shukor, Mustafa and Aubakirova, Dana and Russi, Martino and Capuano, Francesco and Pascal, Caroline and Choghari, Jade and Moss, Jess and Wolf, Thomas}, title = {LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch}, howpublished = "\url{https://github.com/huggingface/lerobot}", year = {2024} }

附录

正确安装后项目文件结构

├── cann-recipes-embodied-intelligence/ # CANN 具身智能案例仓库主目录 │ └── manipulation/ │ └── pi05/ │ └── train/ # pi05 模型昇腾训推项目目录 │ ├── assets/ # 示例图片资源 │ ├── doc/ │ │ └── README.md # 性能优化、profiling 与最佳实践统一说明 │ ├── src/ │ │ ├── scripts/ # 一键部署与运行脚本 │ │ │ ├── setup.sh # 总入口:调用模块脚本完成初始化与依赖安装 │ │ │ ├── setup_lerobot.sh # LeRobot 同步与基础环境准备 │ │ │ ├── setup_cmake.sh # CMake 3.x 检查、下载与安装 │ │ │ ├── setup_deps.sh # PI05/Libero/torchcodec/torch_npu 依赖安装 │ │ │ ├── run_train.sh # 分布式训练启动脚本 │ │ │ ├── run_eval.sh # 模型评估启动脚本 │ │ │ └── run_profiling.sh # 分布式训练性能采集脚本 │ └── README.md # LeRobot 昇腾训推项目使用说明 │ └── lerobot/ # LeRobot 智能机器人基础框架 ├── configs/ │ ├── pi05.yaml # Pi05 模型训练配置文件 │ └── xxx.yaml # 其他模型配置文件 └── src/ └── lerobot/ ├── policies/ │ └── pi05/ │ └── modeling_pi05.py # Pi05 模型架构代码 ├── scripts/ │ ├── lerobot_train.py # LeRobot 通用训练入口 │ ├── lerobot_eval.py # LeRobot 通用评估入口 │ └── lerobot_train_profiling.py # 支持 Ascend Profiling 的训练脚本 └── utils/ └── utils.py # 工具函数(适配昇腾NPU)

【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783962/

相关文章:

  • Ubuntu 20.04 + ROS2 Foxy 环境下,手把手搞定 Swarm-SLAM 多机器人协同建图环境(附常见编译报错解决)
  • MoE模型多语言路由优化实战:37%延迟降低方案
  • 为Hermes Agent自定义配置Taotoken提供方并写入环境变量
  • 2025届毕业生推荐的六大降重复率工具推荐
  • 元宇宙数据安全与AI隐私保护:从联邦学习到差分隐私的实战架构
  • 国内合规亲子鉴定机构排行:3家靠谱机构盘点 - 奔跑123
  • cann/catlass多核切K矩阵乘法
  • CANN / cann-recipes-infer: NPU DeepSeek-V3.2-Exp Ascend C 融合算子优化
  • 全域无感时空管控,解锁智慧港口集卡AGV全自主调度新模式
  • llocal框架:本地化AI应用开发实战与RAG实现指南
  • 基于LLM与Telegram API构建智能聊天摘要机器人:从原理到部署
  • 【2026收藏版】小白程序员必看!大模型从入门到进阶全攻略,告别焦虑快速上岸
  • Hyper-V虚拟机网络配置避坑指南:从‘网络不可达’到流畅上网,手把手教你配置CentOS/Ubuntu静态IP和DNS
  • 基于可解释AI的微射流速度预测:FNN与SHAP解析空化气泡位置影响机制
  • 全国主流亲子鉴定机构排行:资质与服务实测盘点 - 奔跑123
  • CANN/HCCL环境变量配置资源信息
  • 基于纯文本的极简个人信息管理:plain命令行工具实践指南
  • 基于RAG的企业级智能问答系统:从原理到Azure云部署实战
  • CANN/CATCCOS预提交代码检查指南
  • 2026高效之选:专业的液压压滤机厂家推荐 - 品牌2025
  • CANN/ops-tensor算子调试调优指南
  • Java 设计模式:最佳实践与应用
  • 经验分享:工业采购必须了解的旋进旋涡流量计选型知识 - 速递信息
  • 为AI智能体构建持久化记忆:Stratum架构设计与工程实践
  • 基于LoRA与指令微调的中文Vicuna大模型本地部署与优化指南
  • WALAR:基于强化学习的低资源机器翻译优化方案
  • 给RK3568的Linux 4.19内核打RT-Preempt补丁,我踩过的那些坑都帮你填好了
  • FISSION-GRPO:基于强化学习的智能错误恢复系统
  • 台州普金办公设备:椒江打印机租赁公司电话 - LYL仔仔
  • CANN Ascend C算子开发套件