AY-Robots 训练矩阵,其中五种策略作为行,四只机械臂作为列,每个单元格都是特定微调指南的链接
Pi0.5流匹配VLA 训练LeRobot微调

如何在您自己的机器人数据上训练 Pi0.5

AY-Robots ResearchAugust 23, 202616 分钟阅读

在您自己的机器人数据上微调来自 Physical Intelligence 的流匹配 VLA 模型 Pi0.5。包含 openpi 和 lerobot pi05 的实际命令、数据集格式陷阱、VRAM 和延迟限制。

Pi0.5 是当策略必须在从未见过的房间中工作时,您会选择的模型。它也是这里五种可训练策略中最难处理的一种,需要手动微调:上游仓库优先使用 JAX,LeRobot 端口在 0.6.0 版本中将部署从 lerobot-record 移出,并使基础安装包过小而无法用于训练,并且完整的微调无法在 4090 上进行。下面:流匹配在推理时的成本、两种命令路径,以及决定结果是否可用的 485 毫秒数字。

您需要了解什么

  • 一个流匹配 VLA:一个 3B PaliGemma VLM 加上一个 300M 动作专家,用于解码连续动作块。有两种微调路径,openpi 和 LeRobot pi05,在 LIBERO 平均值上相差 0.65 点。
  • 完整的微调需要超过 70 GB 的显存。openpi 列出的 LoRA 在 JAX 路径上需要 22.5 GB。
  • 数据集必须是 LeRobotDataset v3.0,并在 meta/stats.json 中包含 q01 和 q99 分位数,否则批处理会报错。
  • 首先检查您的 lerobot 版本:0.6.0 使基础包变得轻量化,并将部署从 lerobot-record 中移出。
  • 它在这里以每个动作步 485 毫秒的速度运行,需要 50 个 episode,每次运行成本约为 4 到 12 美元。

Pi0.5 到底是什么

Physical Intelligence 于 2024 年 10 月发布了 pi0:一个流匹配视觉-语言-动作模型,基于预训练的 VLM:PaliGemma 拥有 30 亿参数,加上一个从头开始初始化的 3 亿动作专家,总计 33 亿参数。该论文报告了在 7 种机器人配置和 68 项任务上,超过 10,000 小时的机器人数据进行的预训练。更多内容请参见pi0 文章

Pi0.5 (arXiv 2504.16054, 2025年4月22日) 保留了该骨架并改变了训练“食谱”:网络数据、目标检测、人类指导机器人的口头指令、子任务标签、来自许多家庭机器人的跨具身数据。结果是机器人能够在不在训练集中的房屋中清洁厨房。openpi 的 README 添加了一个标题中没有的细节:发布的 pi0.5 是通过知识隔离 (arXiv 2505.23705) 进行训练的。

属性pi0pi0.5
VLM 主干变体gemma_2b (PaliGemma)gemma_2b (PaliGemma)
动作专家变体gemma_300mgemma_300m
action_dim3232
默认动作范围5050
max_token_len48200
discrete_state_inputfalsetrue,状态在提示中离散化为多个 bin
基础检查点gs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
公开的并非论文的全部

openpi 的 README 明确指出:该仓库仅支持流匹配头,用于 pi0.5 的训练和推理。论文描述了两个阶段,而代码只包含了第二个阶段:预训练通过 FAST 分词器将每个动作表示为离散 token,在部署时模型在每个动作块之前推断一个高级子任务。这两个阶段都不在仓库中。lerobot/pi05_base 卡片给出了相同的列表并添加了 RL,尽管 pi0.5 论文根本没有描述任何强化学习阶段。LeRobot 端口继承了该范围,其上托管的每个训练器也如此,包括此处的训练器。许可也存在分歧:pi05 文档页面显示 Apache 2.0,而 lerobot/pi05_base 卡片标记为 license: gemma

流匹配对训练和推理的改变

一个策略,您可以在SO-100上训练,它要么直接回归动作(ACT)或将其标记化并自回归解码(pi0-FAST)。流匹配则不然:它学习一个矢量场,将噪声传输到一个干净的动作块,然后对其进行积分。pi0论文使用10个积分步,步长为0.1;LeRobot的pi05配置也包含相同的`num_inference_steps: int = 10`。

  • 训练:损失回归一个带噪声的动作块。无需调整分词器,无需对关节角度进行离散化。
  • 推理:一个动作块需要通过动作专家进行十次前向传播。这是结构性的,而非调优问题。
  • 输出:维度为32的连续动作,内部填充,损失取自机器人所拥有的维度。一个6-DoF自由度机械臂加上夹持器使用7个维度。
python
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
    dtype: str = "bfloat16"
    paligemma_variant: _gemma.Variant = "gemma_2b"
    action_expert_variant: _gemma.Variant = "gemma_300m"

    action_dim: int = 32
    action_horizon: int = 50
    max_token_len: int = None      # 200 if pi05 else 48

    pi05: bool = False             # flips discrete_state_input to True
摘自 openpi 主分支上的 src/openpi/models/pi0_config.py,2026年8月23日。

PaliGemma 主干网络及其前端的门控

PaliGemma (arXiv 2407.07726) 是一个基于 Gemma-2B 语言模型的 SigLIP-So400m 视觉编码器,大约有 3B 个参数。Pi0.5 继承了它的分词器,并且该分词器位于一个受限的仓库中。这是首次运行最常见的失败方式,在第一次 训练步骤 之前。

在租用 GPU 之前接受受限许可

LeRobot pi05 文档明确指出:pi0.5 使用受限的 google/paligemma-3b-pt-224 分词器,因此请先在 Hub 上接受其许可并运行 hf auth login。访问权限是手动授予的,而非即时。如果跳过此步骤,开始付费云运行,你将为一个无法下载分词器的 Pod 付费。

开始之前:数据集格式、剧集、硬件

LeRobot 中的 Pi0.5 读取 LeRobot 数据集 的 v3.0 布局,该布局随 lerobot 0.4.0 于 2025 年 10 月发布:每个 Parquet 和 MP4 文件包含多个剧集,而不是每个 剧集 一个文件,并且边界信息位于 meta/episodes/ 中,而非文件名。使用 桌面客户端 录制,或者遵循 录制你的第一个数据集 即可获得。

模式所需 GPU 内存示例 GPU
推理more than 8 GBRTX 4090
微调 (LoRA)more than 22.5 GBRTX 4090
微调 (完整)more than 70 GBA100 80 GB or H100
耗时一天的版本陷阱

Pi0.5 和 SmolVLA 需要 LeRobot v3.0GR00T N1.7 和 GR00T N1.5 需要 v2.0 或 v2.1,并且在 v3.0 数据集上会崩溃。一次录制会话无法在不进行转换的情况下同时满足两者,并且错误信息不会显示“数据集版本错误”。请参阅 数据集被拒绝:需要 v3

bash
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>

# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ...         -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsets
摘自 LeRobotDataset v3.0 文档。

该平台要求 Pi0.5 至少有 50 个 episode,与 GR00T 和 ACT 的最低要求相同。预训练承担了大部分工作,因此 50 个高质量的 episode 胜过 200 个粗糙的 episode。刚接触这个?请从数据收集指南开始。

AY-Robots 策略页面,比较了五种可训练策略的参数、GPU 层级、延迟和最低 episode 数
Pi0.5 在 A100 和 H100 层级中,每个动作步长为 485 毫秒,最低 50 个 episode。

路线 A:使用 openpi 仓库进行微调

参考实现:JAX 优先,仅在 Ubuntu 22.04 上测试,由配置对象而非标志驱动。PyTorch 路径于 2025 年 9 月推出,并在 LIBERO 上验证。分三步:转换数据、定义配置、训练和部署。

  1. 1
    克隆并安装

    openpi 使用 uv。GIT_LFS_SKIP_SMUDGE 允许 LeRobot 作为依赖项引入,而无需 LFS blob。

    bash
    git clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git
    cd openpi
    
    GIT_LFS_SKIP_SMUDGE=1 uv sync
    GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .
  2. 2
    将您的数据转换为 LeRobot 数据集

    上游提供了 LIBERO 和 DROID 的转换器,并期望您能进行适配。主要工作是键映射。

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    添加训练配置

    配置是 src/openpi/training/config.py 中的 TrainConfig 条目。此配置适配 pi05_droid_finetune,权重加载器指向 pi05_base。

    python
    TrainConfig(
        name="pi05_so100",
        model=pi0_config.Pi0Config(
            pi05=True,
            action_dim=32,        # pi05 is trained with 32-dim actions
            action_horizon=16,
        ),
        # Copy LeRobotLiberoDataConfig in the same file and rewrite the key
        # mapping for your camera names, then reference your copy here.
        data=LeRobotLiberoDataConfig(
            repo_id="your_hf_username/my_so100_dataset",
            base_config=DataConfig(prompt_from_task=True),
        ),
        weight_loader=weight_loaders.CheckpointWeightLoader(
            "gs://openpi-assets/checkpoints/pi05_base/params"
        ),
        batch_size=32,
        num_train_steps=20_000,
    )
  4. 4
    计算范数统计

    针对配置名称运行,而非数据集。跳过此步骤是此处经典的首次失败原因。

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    训练

    该变量允许 JAX 使用 90% 的 GPU 内存,而非默认的 75%。在 80 GB 显卡上,这决定了运行能否成功。

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    部署

    服务器监听端口 8000 并响应观测查询;您的机器人运行时是客户端。

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
PyTorch 路径并非 JAX 路径

openpi 的 PyTorch 实现不支持 pi0-FAST、混合精度、FSDP、LoRA 或 EMA 权重,因此达到 22.5 GB 的 LoRA 仅限于 JAX,通过 gemma_2b_loragemma_300m_lora 变体实现。更糟糕的是:该设置会将修补文件复制到您已安装的 transformers 4.53.2 上,并且 README 警告说,在 uv 的默认硬链接模式下,这会永久修改 uv 缓存中的 transformers,并可能泄露到其他项目中。使用 uv cache clean transformers 撤消此操作。

路线 B:使用 lerobot pi05 进行微调

LeRobot 端口将您已用于 ACTSmolVLA 的 CLI 中封装了相同的权重。以下所有内容均已根据 lerobot 0.6.1(自 2026 年 8 月 3 日发布)和 2026 年 8 月 23 日的 pi05 文档进行了检查。版本在此处很重要:v3.0 数据集随 2025 年 10 月的 0.4.0 版本发布,2026 年 3 月 9 日的 0.5.0 博客介绍了 pi0-FAST 和实时分块,而 2026 年 7 月 6 日的 0.6.0 版本使基础包变得轻量化,并将部署移至 lerobot-rollout。

有一件事没有改变:lerobot-trainlerobot-record 在 2025 年 8 月的 0.3.2 版本中就已经是入口点。 仍然调用 python -m lerobot.scripts.train 的教程早于一年的变更,因此其余部分也值得怀疑。

  1. 1
    使用正确的额外功能进行安装

    自 0.6.0 版本起,基础安装仅包含核心机器学习依赖项,而 pi 额外功能不添加数据集或训练代码,因此微调也需要训练额外功能。旧的一行命令在此处导入时会失败。

    bash
    # policy dependencies plus the training stack
    pip install 'lerobot[pi,training]'
    
    # from a source checkout
    pip install -e ".[pi,training]"
    
    # driving an SO-100 afterwards needs the robot extras too
    pip install 'lerobot[core_scripts,feetech]'
  2. 2
    身份验证

    在浏览器中接受 paligemma-3b-pt-224 许可证,然后在训练机器上登录。

    bash
    hf auth login
  3. 3
    添加分位数统计数据

    Pi0.5 使用分位数对 STATE 和 ACTION 进行归一化,因此 meta/stats.json 需要 q01 和 q99。旧的数据集只包含 min、max、mean、std。

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    从 lerobot/pi05_base 进行微调

    将批处理大小设置为您的显卡能承受的值;文档中在 80 GB 的 LIBERO 上使用 64。显式传递 bfloat16,配置默认值为 float32。

    bash
    lerobot-train \
        --dataset.repo_id=${HF_USER}/my_so100_dataset \
        --policy.type=pi05 \
        --policy.pretrained_path=lerobot/pi05_base \
        --policy.gradient_checkpointing=true \
        --policy.dtype=bfloat16 \
        --policy.device=cuda \
        --policy.push_to_hub=false \
        --output_dir=./outputs/pi05_so100 \
        --job_name=pi05_so100 \
        --batch_size=4 \
        --num_workers=8 \
        --steps=30000 \
        --save_freq=5000 \
        --seed=1000
  5. 5
    在机械臂上运行

    在 0.6.x 版本中,这是 lerobot-rollout:lerobot-record 拒绝策略并拒绝 eval_ 数据集名称。Base 驱动机械臂,sentry 记录 rollout。

    bash
    lerobot-rollout \
        --strategy.type=base \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
        --task="Put lego brick into the transparent box" \
        --duration=60
    
    # same run, recorded into an eval_ dataset
    lerobot-rollout \
        --strategy.type=sentry \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --dataset.repo_id=${HF_USER}/eval_so100 \
        --dataset.single_task="Put lego brick into the transparent box" \
        --duration=600
标志作用备注
--policy.type=pi05选择 Pi0.5与 pretrained_path 一起使用时必需,与 --policy.path 一起使用时省略
--policy.pretrained_path仅加载权重从您的数据集中获取特征名称,存储的设置将被重置
--policy.path权重加上检查点 config.json继承存储的设置,例如 n_action_steps
--policy.n_action_steps每个块消耗的步数回退到 50,从不超过 chunk_size(默认 50)
--policy.train_expert_only冻结 VLM,训练专家默认为 false,内存占用更少,成功率有一定代价
--policy.gradient_checkpointing重新计算而不是存储激活默认为 false,当运行不适合时,这是第一个杠杆
--peft.method_type=LORALoRA 适配器而不是完整权重需要 peft 额外功能,文档示例是 SmolVLA
--policy.rtc_training_max_delay用于 RTC 的动作前缀条件仅限主分支,不在 0.6.1 中,必须保持在 chunk_size 以下
--rename_map将数据集列映射到策略特征当您的相机键不同时需要
大多数首次运行会遇到的错误

如果没有分位数,您会在第一个批次中遇到 ValueError: QUANTILES normalization mode requires q01 and q99 stats 错误。重新计算统计数据,但结果会落在 $HF_LEROBOT_HOME/your_dataset 中,而不是 --dataset.repo_id 读取的缓存中,因此请使用指向该位置的 --dataset.root 进行训练或推送到 Hub。或者跳过分位数,使用 --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}',就像 LIBERO 参考命令那样。

三组默认值,以及哪些会到达训练器

openpi 的 TrainConfig 是参考,LeRobot 的 PI05Config 是 lerobot-train 在未指定时使用的配置,而此处的表单发送的是第三组配置。令人惊讶的是学习率:上游的两个默认值都最高为 2.5e-5,而 openpi 自己的 pi05_libero 配置和此平台将其提高到 5e-5。

设置openpi TrainConfiglerobot pi05 和 lerobot-trainAY-Robots 发送
批次大小3281
峰值学习率2.5e-5,余弦衰减optimizer_lr 2.5e-55e-5
训练步数30,000100,00030,000
检查点间隔1,000 步20,000 步不在表单中
随机种子421,000在表单中
动作块action_horizon 50chunk_size 50, n_action_steps 50不在表单中
权重数据类型bfloat16float32,直到您传递 --policy.dtype不在表单中
梯度累积无此选项,改为 fsdp_devices迄今为止所有版本中均缺失16,并且已删除

移植是否忠实?LeRobot 团队对 LIBERO 基础模型进行了额外的 6k 步微调,并与 openpi 在四个套件上的参考数据进行了比较:平均 97.5% 对 96.85%,在 Libero 10 上领先,在 Spatial 上落后。这条路线是工具选择,而非质量选择。

使用您自己的数据微调 Pi0.5
优势
  • 背后有超过 10,000 小时的机器人预训练,因此 50 个任务片段可能就足够了。
  • 连续动作:无需调整分词器,关节角度没有离散化下限。
  • LeRobot 移植在 LIBERO 平均分上达到 97.5%,而 openpi 为 96.85%,因此更友好的 CLI 没有可衡量的成本。
  • 双方都有参数高效路径:openpi 的 JAX LoRA 变体,LeRobot 的 PEFT 集成。
权衡
  • 完整微调需要超过 70 GB。22.5 GB 的 LoRA 数据是 openpi 的 JAX 数字;在 PEFT 下,pi05 尚未发布任何数据。
  • 每个动作步 485 毫秒,是这里五个模型中最慢的:是 SmolVLA 的两倍,ACT 的二十四倍。
  • 需要 LeRobot v3.0,因此为 GR00T 运行记录的数据集需要转换,反之亦然。
  • 新选项首先在 main 分支上发布:训练时 RTC 和 MEM 内存不在 0.6.1 版本中,因此最新的文档可能意味着需要从 git 安装。

485 毫秒的现实,以及它何时变得不可用

这决定了你的项目,因此它排在成本表之前。此处测得的 Pi0.5 的每个动作步骤为 485 毫秒。与其他四个相比:

策略每个动作步骤的推理时间参数GPU 等级最少剧集数
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
AY-Robots 关于 GR00T N1.7 与 Pi0.5 的对比页面,包含参数、GPU 等级、延迟和数据集格式
相同的 GPU 等级,相同的剧集下限,不同的数据集版本,三倍的延迟差距。
推理必须与伺服系统紧邻

这五个模型的控制循环每个动作步骤运行 20 到 485 毫秒。在 485 毫秒的基础上增加公共互联网往返时间,会将一个可用的策略变成一个犹豫不决的策略。远程推理适用于慢速的抓取放置任务,而不适用于快速的反应性运动。我们宁愿如实告知,也不愿销售一个只在局域网内有效的演示。如果您的机械臂在块之间暂停,请从策略在运动中冻结开始排查。

上游有一个解决方案,其中一半已经包含在您可以安装的版本中。实时分块(Real-Time Chunking)在机械臂仍在执行当前块时生成下一个块,然后引导新块的重叠步骤与已执行的部分保持紧密,从而使机械臂在衔接处不会停顿或抖动。推理时形式已在 Pi0、Pi0.5 和 SmolVLA 的 0.4.2 更新日志中发布,它是一个部署标志,而非需要重新训练:

bash
lerobot-rollout \
    --strategy.type=base \
    --policy.path=${HF_USER}/my_policy \
    --inference.type=rtc \
    --inference.rtc.execution_horizon=10 \
    --inference.rtc.max_guidance_weight=10.0 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM1 \
    --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
    --task="Put lego brick into the transparent box" \
    --duration=60
execution_horizon 是指新块需要与前一个块保持一致的步数;RTC 文档给出的通常范围是 8 到 12。默认的推理后端是 --inference.type=sync。

它并不会让模型更快。它隐藏了延迟:485 毫秒仍然会消耗,但不在关键路径上,因此队列在块之间不会耗尽。来自 arXiv 2512.05964 的训练时变体更进一步:模型学习以一个干净的动作前缀为条件,因此在推理时,重叠部分通过每个动作的流时间步进行硬填充,而不是引导,并且引导反向传播消失。在训练期间,它为每个示例采样一个前缀长度,并计算剩余后缀的流损失。该标志仅存在于主分支中,不在 0.6.1 版本中,并且您训练的延迟必须保持在 chunk_size 以下。

获取 Pi0.5 检查点的两种方式

您租用或拥有一张 80 GB 显卡,安装上述堆栈之一,转换您的数据集并照看运行。您可以保留所有控制:openpi 的 JAX LoRA、LeRobot 的 PEFT 适配器、相对动作、自定义按键映射。您也将承担所有失败。

  • 硬件:A100 80 GB 或 H100,或在 openpi 的 JAX LoRA 路径上使用 24 GB 显卡。
  • 设置:首次运行需要一个下午,主要用于按键映射和门控分词器。
  • 非托管形式:PEFT 适配器、相对动作、训练时 RTC、MEM 内存。
bash
lerobot-train \
    --dataset.repo_id=${HF_USER}/my_so100_dataset \
    --policy.type=pi05 \
    --policy.pretrained_path=lerobot/pi05_base \
    --policy.rtc_training_max_delay=10 \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --batch_size=4 --steps=30000 --seed=1000
托管形式无法运行的命令,pip 也无法安装:训练时 RTC 是主分支的一个标志。

当它不起作用时

症状最可能的原因
运行在开始前被拒绝数据集为 v2.1 但 Pi0.5 需要 v3.0,或 GR00T 反之
ImportError,缺少 datasets 包lerobot 0.6.x 缺少训练附加项
关于批处理一中 q01 和 q99 的 ValueErrormeta/stats.json 中没有分位数;重新计算或使用 MEAN_STD
CUDA 在第 0 步内存不足完整微调低于 70 GB;尝试检查点或 train_expert_only
401 或门控仓库错误PaliGemma 分词器许可证未接受
损失下降,机器人无动作归一化不匹配,或策略复制了状态
机械臂在块之间暂停每步延迟加上往返时间;块队列耗尽
在一个设置中有效,在另一个设置中失败剧集太少,或全部在一种配置中

单次运行的成本

Pi0.5 属于昂贵层级,因为它需要一张 80 GB 显卡,并且现货价格波动,因此这个数字是一个范围而不是一个固定价格。对于许多 SO-100 任务,请先训练 SmolVLA 或 ACT 在 24 GB 层级上,首先确认任务是否可学习,然后再投入 A100 小时。 训练你的第一个策略 介绍了这种更经济的循环,并且 定价 包含了当前的层级。

层级策略典型运行时间每小时价格每次运行成本
A100 80 GB or H100Pi0.5, GR00T N1.7, GR00T N1.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD
RTX 4090 或任何 24 GB 显卡SmolVLA, ACT2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
AY-Robots 成本表,显示每种策略所需的 GPU、典型运行时间和价格,以及策略变得有用之前所需的剧集数量
产品页面上的两个相同层级:Pi0.5 租用 80 GB 显卡,SmolVLA 和 ACT 适用于 4090。

在投入一个晚上之前:GR00T N1.7 与 Pi0.5 的对比Pi0.5 与 SmolVLA 的对比 并列出相同的数据进行对比。竞技场 包含 85 个 VLA 模型和 332 个基准测试结果,每个结果都链接到其来源,有关该系列的背景信息请参见 我们的 VLA 概述

无需构建堆栈即可训练 Pi0.5

在表单中选择数据集和超参数。后端在现货市场租用一张 80 GB 显卡,运行训练器并将检查点写入对象存储。SO-100、SO-101、Koch v1.1 和 LeKiwi 的指南。

打开训练指南
我可以在 RTX 4090 上微调 Pi0.5 吗?

不是完全微调:openpi 列出需要超过 70 GB,因此需要 A100 80 GB 或 H100。其 22.5 GB 的 LoRA 数据属于 JAX 路径;PyTorch 实现没有 LoRA。LeRobot 的 PEFT 集成存在,但其文档示例是 SmolVLA,并且没有发布 pi05 的显存数据。

我需要多少个剧集?

五十个,与 GR00T 和 ACT 的最低要求相同;只有 SmolVLA 更低,为 30 个。基础检查点承载了超过 10,000 小时的预训练,因此微调是适应而不是从零开始学习:50 个干净、多样的剧集胜过来自单一配置的 200 个剧集。

--policy.path 和 --policy.pretrained_path 有什么区别?

--policy.path 加载权重和检查点的 config.json,因此 n_action_steps 等存储设置会被继承,并且必须省略 --policy.type。--policy.pretrained_path 仅加载权重:特征名称来自您的数据集,存储设置重置,需要 --policy.type。这就是为什么 LIBERO 命令明确传递 n_action_steps=10 和 empty_cameras=1;否则它们会回退到 50 和 0。

开放版本是否提供了论文中完整的 Pi0.5?

不。两者都只支持流匹配动作头。带有 FAST 动作分词器和高级子任务预测的离散令牌预训练阶段尚未发布,lerobot/pi05_base 卡将 RL 添加到该列表中,尽管 pi0.5 论文没有描述强化学习阶段。您训练的是一个以您提供的语言字符串为条件的低级策略,而不是一个能够自行分解长任务的模型。

本指南是基于哪个版本编写的?

主分支上的 openpi 和 lerobot 0.6.1(自 2026 年 8 月 3 日发布)均于 2026 年 8 月 23 日读取。v3.0 数据集随 2025 年 10 月的 0.4.0 版本一同发布。0.6.0 版本使基础包变得轻量化,因此单独的 lerobot[pi] 不再安装训练堆栈,并将部署移至 lerobot-rollout。训练时 RTC 仅在主分支上;此处托管的训练器运行的是 0.5.1 版本。

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started