Pi0.5基本训练与libero测试回环实验记录

π0.5 在本地 4×RTX 4090 平台上的训练、checkpoint 恢复与 LIBERO 测试记录。

本页目录 19 SECTIONS

更新时间:2026-08-11(Asia/Shanghai)
本页汇总 π0.5 在本地 4×RTX 4090 平台上的训练与 LIBERO 测试记录。除明确标注的官方发布模型参考外,本地短训、LoRA 和 matched-235 均为 exploration,不是官方完整复现。本文以模型评测情况共享为主,仓库相对路径、内部运行编号和实验产物位置均已省略。 当前结论

  • 最稳定可恢复训练点:LoRA Step 3000(checkpoint key 2999)
  • 相同 matched-235 固定初始状态筛选上:Step 40/100 为 0%,Step 1000 为 5.11%,Step 2000 为 60.00%,Step 3000 为 62.55%。
  • Step 2000 与此前口径最严格一致;Step 3000 使用四卡四 RNG 分片加速,62.55% 只能用于趋势判断。
  • 完整 4-suite / 2,000-episode 官方 benchmark 尚未执行
  • 训练当前已暂停:停止前日志到 Step 3150,实际可恢复点为 Step 3000,约 150 个未落盘更新不会保留。

一、实验目标与范围

  • 基础模型:pi05_base
  • 训练数据:physical-intelligence/libero 公共数据集。
  • 目标:验证 π0.5 的本地 SFT/LoRA 可行性、显存上限、checkpoint/恢复链和 LIBERO rollout 成功率随训练步数的变化。
  • 上游代码:Physical Intelligence OpenPI
  • OpenPI commit:15a9616a00943ada6c20a0f158e3adb39df2ccac
  • LIBERO commit:f78abd68ee283de9f9be3c8f7e2a9ad60246e95c
  • 本汇总对应仓库代码快照:9f96c86
  • 全部运行均保留独立的状态文件、日志和原始评测记录,公开版不列出其具体位置。

二、固定数据与运行环境

项目固定值 / 证据
GPU4× NVIDIA GeForce RTX 4090,每卡 49,140 MiB
训练框架JAX / OpenPI;本地项目虚拟环境,不依赖新建 Conda 环境
数据集 revisiona4336d589d589045d1c56423ffdf3b88a0e19b1f
数据集规模1,699 files;34,938,927,454 bytes;tree SHA-256 92edd9de…7600c
数据内容1,693 episodes;273,465 frames;40 tasks;10 FPS;2×256×256 RGB;8D state;7D action
pi05_base29 files;12,441,749,581 bytes;tree SHA-256 f9f894b0…9a6
Normalizationstate width 8;action width 7;60 finite values;SHA-256 c0ee3c1a…68707
训练 seed42
评测 seed7;LIBERO 官方固定初始状态

数据与模型准备记录

  • Hugging Face 数据下载曾因远端断连中止,随后启用 Xet/HF Xet 从固定 revision 续传并完成完整树校验。
  • pi05_base 下载阶段修复了 helper 缺少 REPO_ROOT 的环境问题。
  • normalization 统计路径/校验问题修复后,后续全参数与 LoRA 实验复用同一份已验证 stats。
  • 原始 pi05_base 的同键 LIBERO baseline 尚未完整产出;现阶段不能回答“微调相对 base 的纯权重增益”。

三、训练记录

3.1 全参数两卡 FSDP 容量探针

目标合同来自公开 pi05_libero:全参数、global batch 256、EMA 0.999、seed 42、30,000 steps。以下均为缩短到 40 step 的容量探索。

配置结果关键显存 / 错误Checkpoint
FSDP-2,batch 256,EMA 0.9990/40,XLA OOMremat 68.48 GiB;失败申请 45.17 GiB;每卡峰值约 44.3 GiB
FSDP-2,batch 64,EMA 0.9990/40,XLA OOMremat 43.60 GiB;失败申请 18.30 GiB
FSDP-2,batch 32,EMA 0.9990/40,XLA OOMremat 37.89 GiB;失败申请 13.07 GiB
FSDP-2,batch 16,EMA 0.9990/40,XLA OOMremat 32.83 GiB;失败申请 8.67 GiB
FSDP-2,batch 8,EMA 0.9990/40,XLA OOMremat 32.18 GiB;失败申请 8.30 GiB
FSDP-2,batch 16,关闭 EMA40/40,完成Step 39 loss 0.0942;grad norm 1.1139Step 20 / 39;每份 32.34 GB
关键判断:
  • 两张 48 GiB 卡无法承载公开 batch-256 + EMA 合同;减小 batch 到 8 仍无法解决持久状态与大块临时分配问题。
  • 关闭 EMA 后 batch 16 可完成 40 step,但已改变训练协议,只能标为 exploration。
  • 全参数 checkpoint 保存非常慢:Step 20 约 812.8 秒,Step 39 约 1,136.1 秒。
  • 一次 no-EMA 运行在 Step 20 保存时被 systemd-oomd 杀死;保护 unit 后又影响到桌面服务,说明全状态 checkpoint 的主机内存风险仍未解决。
  • 最终完成一次稳定的 40-step 探索运行。
  • Step 39 rollout:0/235,见后续测试表。

3.2 Rank-32 LoRA 主训练

最终采用的主线配置:

配置项
初始化pi05_base
LoRA两套 Gemma variant 均为 rank 32 / alpha 32
重要说明OpenPI freeze filter 仍让部分视觉与投影组件可训练,并非只有极小 adapter 参数
GPU / 并行GPU 0、1;FSDP width 2
Global batch64
EMA关闭
XLA memory fraction0.8
Seed42
LR10,000-step warmup 到 5e-5;因此 Step 3000 仍处在 warmup 阶段
Checkpointkeys 39、99、999、1999、2999;每份约 9.2 GiB

连续 1,000-step 运行

  • 时间:2026-08-05 17:54:47 → 20:44:58。
  • 一个连续进程完成 1,000 updates,保存 Step 40、100、1000 三个 checkpoint。
  • Batch-64 真实探针峰值约 40.75 / 40.74 GiB,每卡保留约 8.4 GiB headroom。
  • 训练 loss:
    • Step 0:0.0943
    • Step 100:0.0725
    • Step 500:0.0466
    • Step 900:0.0360
    • Step 990:0.0334

从 Step 1000 续训至计划 Step 10000

  • 参数、优化器状态和 step counter 从 checkpoint key 999 恢复。
  • 数据加载器 cursor 未被 OpenPI checkpoint 序列化;续训时 seed 42 重新创建 loader,因此样本顺序不是严格 process-equivalent continuation。
  • 续训每卡峰值约 48.49 / 48.16 GiB,曾短暂只剩约 0.65 / 0.98 GiB,但没有 OOM。
  • 训练 loss:
    • Step 1000:0.0362
    • Step 1500:0.0317
    • Step 2000:0.0268
    • Step 2500:0.0255
    • Step 3000:0.0268
    • Step 3150:0.0238
  • 2026-08-06 用户要求暂停:
    • 停止前最新日志 Step 3150。
    • 最新完整 checkpoint 为 key 2999,即 Step 3000
    • 恢复将从 Step 3000 开始;约 150 个未落盘更新不保留。
    • 当前状态:paused,目标 Step 10000 尚未完成。

3.3 训练时长与吞吐

墙钟时长均由各次运行的状态记录起止时间计算,包含模型/数据初始化、XLA 编译、验证和 checkpoint 阻塞,不包含模型下载、排队和人工暂停时间。 | Run / 有效区间 | 起止时间 | 墙钟时长 | 平均吞吐 | Checkpoint 开销 | | --- | --- | --- | --- | --- | | 全参数 FSDP,无 EMA,Step 0→40 | 08-03 23:33:57 → 08-04 00:11:44 | 37m47s | 全程 56.7s/update;编译稳定后纯更新约 3.5s/update | Step 20:13m32.8s;Step 39:18m56.1s;合计约 32m29s | | LoRA 连续训练,Step 0→1000 | 08-05 17:54:47 → 20:44:58 | 2h50m11s | 10.21s/update;global batch 64,约 6.27 samples/s | Step 40/100/1000 合计 41.16s | | LoRA 续训,Step 1000→日志 Step 3150 | 08-06 14:24:35 → 20:02:58 | 5h38m23s | 约 2,150 updates;9.44s/update;约 6.78 samples/s | Step 2000:99.40s;Step 3000:34.57s;合计 2m14s | | LoRA 累计有效运行 | 两段独立 session | 8h28m34s | 日志到 Step 3150;可恢复到 Step 3000 | 共保留 5 个 milestone checkpoint |

  • 全参数 FSDP 的 40-step 运行中,两个全状态 checkpoint 保存约占总墙钟时间 86%;慢点主要是 checkpoint I/O/主机内存压力,不是训练计算。
  • 首段 LoRA 在训练循环前约有 2m50s 初始化;首个 update 含约 26s XLA 编译,之后基本稳定在约 10s/update。
  • 续训恢复与首步准备约 2m19s;稳定阶段多在 9.1–9.2s/update。
  • 若从可恢复的 Step 3000 按当前吞吐继续到 Step 10000,剩余 7,000 updates 预计需要约 18–19 小时有效墙钟时间,另需考虑排队、下载异常或人工暂停。

四、测试协议

4.1 推理与固定状态协议

  • 初始推理使用的是官方发布 pi05_libero 模型,不是 pi05_base
  • direct inference 和 WebSocket smoke 均返回 finite 10×7 action。
  • LIBERO rollout:
    • seed 7;
    • 官方固定 initial states;
    • 先执行 10 步 dummy action;
    • 两路相机 256×256,旋转 180°,resize/pad 到 224×224;
    • 策略输出 10-step action chunk,每次执行前 5 步再重规划;
    • 成功定义保持 LIBERO 环境 done 不变;
    • horizon:Spatial 220、Object 280、Goal 300、LIBERO-10 520。

4.2 matched-235 选择

为了快速比较 checkpoint,固定复用早期官方 partial run 的同一批 235 个 episode key:

  • Spatial:task 0/1 各 50 条 + task 2 前 25 条,共 125。
  • Object:task 0/1 各 50 条 + task 2 前 10 条,共 110。
  • 该集合只覆盖两个 suite 的前三个 task 前缀,不能当作完整官方 benchmark。

五、测试结果

5.1 官方发布模型的本地部分 benchmark

  • 模型:官方发布 pi05_libero
  • 结果:234/235 = 99.57%
    • Spatial:125/125 = 100%。
    • Object:109/110 = 99.09%。
  • 异常:0;235/235 视频存在、哈希匹配、可解码。
  • 这是用户提前停止后的部分结果,不是完整官方分数,且不能从断点恢复为官方 RNG 流。
  • 第二次从零尝试保留了 Spatial 32 条和 Object 24 条,均成功;同样因停止而不具备最终分数资格。

5.2 训练 checkpoint 的 matched-235 结果

模型 / checkpointSpatialObject合计异常备注
官方发布 pi05_libero125/125,100%109/110,99.09%234/235,99.57%0同键部分参考
全参数 FSDP Step 39,batch 16,无 EMA0/1250/1100/235,0%0仅 40 updates
LoRA Step 40,key 390/1250/1100/235,0%0单 suite 独立 RNG
LoRA Step 100,key 990/1250/1100/235,0%0单 suite 独立 RNG
LoRA Step 1000,key 9992/125,1.60%10/110,9.09%12/235,5.11%0开始出现稳定成功
LoRA Step 2000,key 199981/125,64.80%60/110,54.55%141/235,60.00%0与此前单 server/suite 口径一致
LoRA Step 3000,key 299986/125,68.80%61/110,55.45%147/235,62.55%0四卡四 RNG 分片;耗时 11m53s

可比性提醒

  • Step 40/100/1000/2000 均保持每 suite 一个 fresh exclusive policy server。
  • Step 3000 为加速拆成四个独立 RNG 分片,固定状态 key 相同,但动作噪声流不再逐条一致。
  • 因此 Step 2000→3000 的表面增量为 +2.55 pp,只能视为趋于平台期的提示,不能做严格因果结论。

5.3 未完成的基线与完整 benchmark

  • pi05_base + 本地 LIBERO normalization 的 matched-235 尚未完整跑出;早期 orchestrator 因一次瞬时 100% utilization 空闲判定退出。
  • 完整官方 benchmark 需要 4 suites × 10 tasks × 50 trials = 2,000 episodes
  • 本地完整 2,000-episode benchmark 尚未执行。
  • 基于 Step 2000 实测,预计单卡顺序跑约 7–8 小时(建议预留 9 小时);四卡每 suite 独占并行预计约 2–3 小时。该时间是工程估算,不是已完成运行。

5.4 已完成评测时长

评测并行方式起止时间墙钟时长
LoRA Step 40 + Step 100,各 235 episodes两张卡并行,各跑一个 checkpoint08-05 18:40:40 → 19:31:1450m34s(两组同时完成)
LoRA Step 1000,235 episodes单卡 / suite 顺序08-06 13:54:16 → 14:44:5750m41s
LoRA Step 2000,235 episodes单卡 / suite 顺序08-06 17:18:11 → 17:58:3140m20s
LoRA Step 3000,235 episodes四卡、四 RNG 分片08-06 23:49:13 → 08-07 00:01:0611m53s
  • 四卡分片将 Step 3000 matched-235 的墙钟时间降到约单卡记录的 24%–29%,但改变了逐 episode 动作噪声流,因此只适合快速筛选。
  • 官方发布 pi05_libero 的 234/235 partial run 是人工提前停止后的残留结果,不以它推算完整 benchmark 用时。

六、阶段分析

  1. 40/100 step 主要是管线验证,不是性能训练。 两者均 0%,符合长 warmup 早期学习率很低的预期。
  2. Step 1000 首次出现成功,但只有 5.11%。 Object 先于 Spatial 提升。
  3. Step 1000→2000 是当前最大跃迁:5.11%→60.00%。 说明该配置在约 1k–2k updates 之间进入有效学习区间。
  4. Step 2000→3000 增益明显放缓。 60.00%→62.55%,且 Step 3000 RNG 调度不同;当前证据不足以证明已稳定超过 60%。
  5. 训练 loss 与 rollout 方向总体一致,但不能替代成功率。 loss 从约 0.094 降到约 0.024,真正的机器人能力证据仍来自 rollout。
  6. 当前还未达到 70% 的观察成功率。 若目标是 ≥70%,应继续训练并在同一评测口径上重复确认,而不是只依赖一次四卡分片结果。

6.1 与 π0.5 论文结论的对应关系

最接近的结论不是 open-world 泛化,而是“通用预训练模型经过目标域 post-training 后可以快速获得专用机器人能力”。 本地结果也弱支持“训练配方和数据质量比单纯堆步数更重要”,但没有论文级消融,不能作因果结论。

论文结论本地证据判断
预训练基础模型可经目标域 post-training 专门化pi05_base 出发,Step 2000 matched-235 达到 60.00%较强吻合;缺 scratch/base 对照
极短训练不足以判断机器人能力Step 40/100 均为 0%,Step 1000 为 5.11%,Step 2000 跃升到 60.00%较强吻合;存在明显有效学习区间
配方与数据组成不能被单纯增加步数替代Step 2000→3000 仅 60.00%→62.55%,官方发布模型同键 partial 为 99.57%方向吻合;没有本地配方消融
多样数据促进泛化LIBERO 含 40 tasks,Spatial/Object 均学到能力只有弱迹象;没有少任务/少场景控制组
  • 本地 Step 3000、batch 64 对应约 192,000 个 nominal example slots;公开 OpenPI LIBERO 合同 30,000 steps、batch 256 对应约 7,680,000,相差约 40 倍。两者还存在 LoRA、EMA 和 continuation 语义差异,因此当前与官方 checkpoint 的差距不应简单解释为“再跑一点就能追平”。
  • Step 3000 仍在 10,000-step learning-rate warmup 中,加上四 RNG 分片差异,当前 62.55% 不能证明已经收敛;继续训练是合理的,但更多相同 LIBERO updates 未必单独关闭全部差距。
  • 当前实验没有验证论文的核心 open-world 结论,也没有验证环境数量扩展、网页/跨机器人/高层语义/口头指令数据的独立贡献、高层 subtask inference、真实机器人长时程任务或 LoRA 与全参数训练等价。
  • 原因是 matched-235 只是 LIBERO Spatial/Object 的域内固定状态前缀筛选;它能支持下游专门化结论,不能作为新家庭、新环境或新物体类别泛化的证据。
  • 主来源:π0.5 arXiv官方论文 PDF

七、主要限制与风险

  • 全部本地训练均为 exploration:LoRA、batch 64、no EMA、缩短步数均偏离公开 30k-step / batch-256 / EMA-0.999 合同。
  • matched-235 是 Spatial/Object task 前缀,不覆盖 Goal、LIBERO-10,也不是均匀完整任务分布。
  • 当前无 pi05_base 同 normalization 同键基线,无法隔离“base 本身”与“微调增益”。
  • Step 3000 采用四 RNG 分片,不适合与 Step 2000 做严格随机流对照。
  • 从 Step 1000 续训时 data-loader cursor 未恢复,样本顺序发生已知重置。
  • 当前进程已暂停在日志 Step 3150,但 recoverable checkpoint 只有 Step 3000。
  • 全参数 checkpoint 的主机内存与保存时长风险仍未解决。
  • 尚未完成完整 2,000-episode benchmark,因此不能声明官方 LIBERO 复现分数。

八、建议下一步

  1. 恢复 LoRA 训练:从 key 2999 / Step 3000 继续,优先保留 Step 4000、5000 和后续每 1000-step checkpoint。
  2. 统一评测口径:至少对 Step 3000 或 Step 5000 再跑一次“每 suite 单独 fresh server”的 matched-235,以获得与 Step 2000 严格可比的数据。
  3. 补齐 base baseline:运行 pi05_base + 相同 normalization + 相同 235 keys
  4. 达到筛选阈值后再跑完整 benchmark:建议候选模型 matched-235 稳定达到或超过 70% 后,投入完整 2,000 episodes。
  5. 改进暂停机制:训练器增加可控 stop-file / signal,在退出前保存当前 step,避免再次损失非千步节点更新。
  6. 最终候选进行完整四 suite 验证:保留每 suite 独立 fresh RNG server、2,000 unique keys、0 exceptions 和视频哈希清单。

维护规则: 后续每次新增训练 checkpoint 或完整评测结果,应同步更新“训练记录”“测试结果”“限制与下一步”。内部实验记录仍需保留代码与数据 revision、seed、GPU 分配、checkpoint key 和评测 RNG 口径,但公开版不披露具体相对路径。