更新时间: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。 - 全部运行均保留独立的状态文件、日志和原始评测记录,公开版不列出其具体位置。
二、固定数据与运行环境
| 项目 | 固定值 / 证据 |
|---|---|
| GPU | 4× NVIDIA GeForce RTX 4090,每卡 49,140 MiB |
| 训练框架 | JAX / OpenPI;本地项目虚拟环境,不依赖新建 Conda 环境 |
| 数据集 revision | a4336d589d589045d1c56423ffdf3b88a0e19b1f |
| 数据集规模 | 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_base | 29 files;12,441,749,581 bytes;tree SHA-256 f9f894b0…9a6 |
| Normalization | state width 8;action width 7;60 finite values;SHA-256 c0ee3c1a…68707 |
| 训练 seed | 42 |
| 评测 seed | 7;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.999 | 0/40,XLA OOM | remat 68.48 GiB;失败申请 45.17 GiB;每卡峰值约 44.3 GiB | 无 |
| FSDP-2,batch 64,EMA 0.999 | 0/40,XLA OOM | remat 43.60 GiB;失败申请 18.30 GiB | 无 |
| FSDP-2,batch 32,EMA 0.999 | 0/40,XLA OOM | remat 37.89 GiB;失败申请 13.07 GiB | 无 |
| FSDP-2,batch 16,EMA 0.999 | 0/40,XLA OOM | remat 32.83 GiB;失败申请 8.67 GiB | 无 |
| FSDP-2,batch 8,EMA 0.999 | 0/40,XLA OOM | remat 32.18 GiB;失败申请 8.30 GiB | 无 |
| FSDP-2,batch 16,关闭 EMA | 40/40,完成 | Step 39 loss 0.0942;grad norm 1.1139 | Step 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 batch | 64 |
| EMA | 关闭 |
| XLA memory fraction | 0.8 |
| Seed | 42 |
| LR | 10,000-step warmup 到 5e-5;因此 Step 3000 仍处在 warmup 阶段 |
| Checkpoint | keys 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×7action。 - 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 结果
| 模型 / checkpoint | Spatial | Object | 合计 | 异常 | 备注 |
|---|---|---|---|---|---|
官方发布 pi05_libero | 125/125,100% | 109/110,99.09% | 234/235,99.57% | 0 | 同键部分参考 |
| 全参数 FSDP Step 39,batch 16,无 EMA | 0/125 | 0/110 | 0/235,0% | 0 | 仅 40 updates |
| LoRA Step 40,key 39 | 0/125 | 0/110 | 0/235,0% | 0 | 单 suite 独立 RNG |
| LoRA Step 100,key 99 | 0/125 | 0/110 | 0/235,0% | 0 | 单 suite 独立 RNG |
| LoRA Step 1000,key 999 | 2/125,1.60% | 10/110,9.09% | 12/235,5.11% | 0 | 开始出现稳定成功 |
| LoRA Step 2000,key 1999 | 81/125,64.80% | 60/110,54.55% | 141/235,60.00% | 0 | 与此前单 server/suite 口径一致 |
| LoRA Step 3000,key 2999 | 86/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 | 两张卡并行,各跑一个 checkpoint | 08-05 18:40:40 → 19:31:14 | 50m34s(两组同时完成) |
| LoRA Step 1000,235 episodes | 单卡 / suite 顺序 | 08-06 13:54:16 → 14:44:57 | 50m41s |
| LoRA Step 2000,235 episodes | 单卡 / suite 顺序 | 08-06 17:18:11 → 17:58:31 | 40m20s |
| LoRA Step 3000,235 episodes | 四卡、四 RNG 分片 | 08-06 23:49:13 → 08-07 00:01:06 | 11m53s |
- 四卡分片将 Step 3000 matched-235 的墙钟时间降到约单卡记录的 24%–29%,但改变了逐 episode 动作噪声流,因此只适合快速筛选。
- 官方发布
pi05_libero的 234/235 partial run 是人工提前停止后的残留结果,不以它推算完整 benchmark 用时。
六、阶段分析
- 40/100 step 主要是管线验证,不是性能训练。 两者均 0%,符合长 warmup 早期学习率很低的预期。
- Step 1000 首次出现成功,但只有 5.11%。 Object 先于 Spatial 提升。
- Step 1000→2000 是当前最大跃迁:5.11%→60.00%。 说明该配置在约 1k–2k updates 之间进入有效学习区间。
- Step 2000→3000 增益明显放缓。 60.00%→62.55%,且 Step 3000 RNG 调度不同;当前证据不足以证明已稳定超过 60%。
- 训练 loss 与 rollout 方向总体一致,但不能替代成功率。 loss 从约 0.094 降到约 0.024,真正的机器人能力证据仍来自 rollout。
- 当前还未达到 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 复现分数。
八、建议下一步
- 恢复 LoRA 训练:从 key 2999 / Step 3000 继续,优先保留 Step 4000、5000 和后续每 1000-step checkpoint。
- 统一评测口径:至少对 Step 3000 或 Step 5000 再跑一次“每 suite 单独 fresh server”的 matched-235,以获得与 Step 2000 严格可比的数据。
- 补齐 base baseline:运行
pi05_base + 相同 normalization + 相同 235 keys。 - 达到筛选阈值后再跑完整 benchmark:建议候选模型 matched-235 稳定达到或超过 70% 后,投入完整 2,000 episodes。
- 改进暂停机制:训练器增加可控 stop-file / signal,在退出前保存当前 step,避免再次损失非千步节点更新。
- 最终候选进行完整四 suite 验证:保留每 suite 独立 fresh RNG server、2,000 unique keys、0 exceptions 和视频哈希清单。
维护规则: 后续每次新增训练 checkpoint 或完整评测结果,应同步更新“训练记录”“测试结果”“限制与下一步”。内部实验记录仍需保留代码与数据 revision、seed、GPU 分配、checkpoint key 和评测 RNG 口径,但公开版不披露具体相对路径。