
SmolVLA 在昇腾 Atlas A2 上的训练样例【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence本目录提供 SmolVLA 在 LIBERO 数据集上的昇腾训练样例包含环境初始化、分布式训练、评测启动脚本以及 Ascend 侧专用 patch。当前样例基于以下原则整理cann-recipes仓库仅保存 recipe、配置、文档和补丁lerobot作为外部依赖仓单独 clone并固定到已验证 commit通用 Ascend 训练补丁与 SmolVLA 专属补丁分离管理数据集、基础模型和 VLM 权重均通过工作区相对路径引用。1. 适用场景硬件昇腾 Atlas A2CANN8.3.0 及以上任务LIBERO 离线训练数据集HuggingFaceVLA/libero外部训练框架huggingface/lerobot2. 外部依赖与固定版本本样例不内嵌lerobot源码默认使用如下 commit58f70b6bd370864139a3795ac3497a9eae8c42d53. 目录说明manipulation/smolvla/train/ ├── README.md ├── doc/ │ └── README.md └── src/ ├── configs/ │ ├── smolvla_libero.yaml │ └── smolvla_libero_smoke.yaml ├── patches/ │ ├── lerobot_ascend_train_common.patch │ └── lerobot_smolvla_ascend.patch └── scripts/ ├── run_eval.sh ├── run_train.sh └── setup.sh4. 环境准备4.1 clone 代码git clone https://gitcode.com/cann/cann-recipes-embodied-intelligence.git cd cann-recipes-embodied-intelligence4.2 准备lerobotchmod x manipulation/smolvla/train/src/scripts/setup.sh ./manipulation/smolvla/train/src/scripts/setup.sh该脚本会在cann-recipes同级目录下准备lerobot代码仓checkout 到固定 commit58f70b6bd370864139a3795ac3497a9eae8c42d5应用通用 Ascend 训练补丁与 SmolVLA 专属补丁安装 LeRobot 通用依赖、LIBERO 训练依赖和 SmolVLA 依赖默认复用当前已激活环境中的torch/torch_npu支持--create-conda与本地 wheel 注入的初始化方式。说明setup.sh默认通过git clone https://github.com/huggingface/lerobot.git拉取上游lerobot若处于企业内网或受限网络环境无法直接访问 GitHub可提前在工作区同级目录手动准备lerobot/或改用内部镜像 / 代理源再重新执行setup.sh若LEROBOT_ROOT已存在且是有效 git 仓库脚本会直接复用该目录。若检测到本地lerobot工作树已被其他改动覆盖、补丁无法干净应用setup.sh会直接报错退出避免在未完成 Ascend 适配的状态下继续训练。常见用法./manipulation/smolvla/train/src/scripts/setup.sh --help ./manipulation/smolvla/train/src/scripts/setup.sh ./manipulation/smolvla/train/src/scripts/setup.sh \ --create-conda \ --env-name lerobot-smolvla \ --python-version 3.10 \ --torch-wheel /path/to/torch.whl \ --torchvision-wheel /path/to/torchvision.whl \ --torch-npu-wheel /path/to/torch_npu.whl4.3 推荐工作区布局workspace/ ├── cann-recipes-embodied-intelligence/ ├── lerobot/ ├── dataset/ │ └── HuggingFaceVLA/ │ └── libero/ ├── models/ │ ├── HuggingFaceTB/ │ │ └── SmolVLM2-500M-Video-Instruct/ │ └── lerobot/ │ └── smolvla_base/ └── ckpt/其中dataset/HuggingFaceVLA/libero需要直接指向包含data/、meta/的数据集根目录models/lerobot/smolvla_base需要是本地可直接加载的 SmolVLA base 模型目录models/HuggingFaceTB/SmolVLM2-500M-Video-Instruct需要是本地可直接加载的 VLM 权重目录。注意dataset、models、ckpt这三个目录需要自行创建和填充本仓库只负责训练脚本和配置。5. 训练配置5.0 YAML 格式约束run_train.sh会读取配置里的output_dir与job_name并自动追加时间戳。当前脚本仅支持解析这两个字段的“单行简单键值”写法因此这里不是建议而是必须遵守例如output_dir: ../ckpt/smolvla_libero job_name: smolvla_libero约束要求必须将output_dir/job_name写成顶层单行简单键值不要将output_dir/job_name写成多行值如|或块标量不要把它们写到嵌套结构里不要使用 YAML 锚点引用anchor/*alias来定义这两个字段可以保留单行行内注释但建议避免复杂 YAML 展开写法。若配置不满足上述格式run_train.sh会直接报错并退出。5.1 smoke 配置配置文件src/configs/smolvla_libero_smoke.yaml作用验证本地模型目录、空相机补齐以及多卡训练链路关键参数steps: 20batch_size: 32num_workers: 0wandb.enable: false启动./manipulation/smolvla/train/src/scripts/run_train.sh smolvla_libero_smoke --port 295105.2 长训配置配置文件src/configs/smolvla_libero.yaml关键参数batch_size: 32num_workers: 4steps: 1600policy.empty_cameras: 1policy.pretrained_path/policy.vlm_model_name均使用本地目录启动./manipulation/smolvla/train/src/scripts/run_train.sh smolvla_libero --port 29510说明当前长训配置按官方100k steps batch_size4的样本预算换算在 8 卡、每卡batch_size32时全局 batch 为256对应约1563steps样例中取整为1600steps便于统一管理当前已验证在 910b 上可进一步放开到num_workers4且不会成为主要瓶颈当前训练配置默认不带rename_map保留policy.empty_cameras: 1若自有数据集键名不一致可按doc/README.md的说明手动补充映射。6. 评测说明run_eval.sh对lerobot-eval做了轻量封装并默认设置MUJOCO_GLosmesa仿真在 CPU 侧执行policy 在 NPU 侧执行当传入--policy.devicenpu/--policy.devicenpu:x时脚本会在启动前同步设置LEROBOT_EVAL_NPU_DEVICE避免评测脚本内部硬编码设备号。若需要在 CUDA 主机上对训练出的 checkpoint 做 LIBERO 在线评测可参考以下命令export PYOPENGL_PLATFORMegl export MUJOCO_GLegl export TOKENIZERS_PARALLELISMfalse REPOworkspace/lerobot EVAL_BIN$(command -v lerobot-eval) CKPTworkspace/ckpt/smolvla_libero/checkpoints/100000/pretrained_model VLMworkspace/models/HuggingFaceTB/SmolVLM2-500M-Video-Instruct OUT_ROOTworkspace/evals/smolvla_libero_$(date %Y%m%d_%H%M%S) cd $REPO for suite in libero_spatial libero_object libero_goal libero_10; do $EVAL_BIN \ --policy.path$CKPT \ --policy.devicecuda \ --policy.vlm_model_name$VLM \ --env.typelibero \ --env.task$suite \ --seed3000 \ --eval.batch_size1 \ --eval.n_episodes1 \ --rename_map{observation.images.image:observation.images.camera1,observation.images.image2:observation.images.camera2} \ --output_dir$OUT_ROOT/$suite done7. 已验证结果摘要910b 上已完成 smoke 和按预算对齐的正式训练启动训练链路已验证的关键配置为empty_cameras1本地smolvla_base本地SmolVLM2-500M-Video-Instructnum_workers4当前 910b 训练口径不带rename_map训练吞吐对比平台训练硬件训练配置全局 batch稳定阶段updt_s训练吞吐910b昇腾 Atlas A28卡每卡batch_size: 322561.05 ~ 1.10s233 ~ 244 samples/sh202卡每卡batch_size: 8160.176 ~ 0.181s88.4 ~ 90.9 samples/s910b 训练吞吐参考训练硬件昇腾 Atlas A28卡训练配置每卡batch_size: 32全局 batch256稳定阶段updt_s约1.05 ~ 1.10s对应训练吞吐约233 ~ 244 samples/s基于100000step checkpoint、seed3000、eval.n_episodes1的一轮 LIBERO 在线评测结果libero_spatial:90.0%libero_object:100.0%libero_goal:90.0%libero_10:80.0%平均成功率90.0%说明上述samples/s为总吞吐不是单卡吞吐910b吞吐来自8卡 x 每卡32的稳定阶段日志换算当前不同仓库版本对rename_map的需要不完全一致建议以样例目录内配置与日志结论为准。8. WB 记录占位9. 常用命令查看训练日志# 以下路径以推荐工作区中的 cann-recipes-embodied-intelligence/ 目录为起点 cd ../lerobot tail -f ../ckpt/logs/train_smolvla_*.logresume 训练./manipulation/smolvla/train/src/scripts/run_train.sh smolvla_libero --resume --port 2951010. 相关说明当前样例目录不包含lerobot源码详细的迁移原因、关键问题和配置建议见doc/README.md若后续lerobot上游吸收了相关修复可考虑缩减src/patches中的补丁范围。【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考