DynaTTT / docs /bridge_memory_plan.md
DanTim05's picture
Upload Zeva source and project assets
68eed61 verified
|
Raw History Blame Contribute Delete
8.7 kB
# Bridge 外部记忆库:现状、消融与适配方案
检查日期:2026-09-24。本文是代码/权重审计与实施方案,**尚未启动 Bridge
CTE 或检索头训练,也没有替换正在准备的全量训练缓存**。
## 当前记忆如何影响训练
当前使用 `/home/gpu4/tianyi/zeva-release/weights/stage1/` 中的
`zeva_cte.pt` 和 `train_memory_effect_v3.pt`,以及 `stage3/best.pt`。
记忆库、CTE、检索头本身被冻结。`prepare_widowx_features.py` 从初始图像和
指令检索得到 `behavior_global`,缓存后作为 Stage-2 输入。
它经过 `behavior_global_projector` 和 `behavior_pbd` 影响动作预测及梯度,
因此“冻结记忆库”**不等于它不影响权重更新**。监督动作仍来自 Bridge 样本,
不是 RoboCasa 的动作标签。可训练参数名单见 `scripts/widowx_config.py:25`。
关键实现(路径相对 `/home/gpu4/tianyi/cosmos-framework`):
- `cosmos_framework/model/generator/omni_mot_model.py:698`:接入缓存行为特征。
- `cosmos_framework/model/generator/mot/cosmos3_vfm_network.py:718`:全局记忆前缀投影。
- `cosmos_framework/model/generator/mot/cosmos3_vfm_network.py:1015`:记忆参与动作先验。
- `cosmos_framework/model/generator/omni_mot_model.py:1734`:动作先验监督损失。
这是**跨域、不匹配的 RoboCasa 记忆**,但仅凭这一点不能断言它是成功率低的
唯一原因。当前静态检索库也不要与 Zeva 的在线 PIM 混为一谈;本地 WidowX
配置继承的 Atomic5 配方未启用 PIM/online-memory。
## 实际权重内容
`train_memory_effect_v3.pt` 有 2,495 条记录,均来自 RoboCasa:
TurnOnMicrowave 527、TurnOnElectricKettle 504、CloseToasterOvenDoor 490、
CoffeeSetupMug 487、OpenStandMixerHead 487。没有 Bridge 条目。
每条包含 `episode_id`、`source_index`、`instruction`、`length`,
以及归一化的 128 维 `retrieval_key` 和 256 维 `behavior_value`。
库格式为 `cosmos_behavior_memory_effect_v3`。
现有检索头输入 4,096 维,隐藏层 1,024 维,输出归一化的 128 维查询;
余弦检索后对 top-5 的 256 维 value 加权。
检索头 checkpoint 的 Recall@1=1.0 是其 RoboCasa 五类验证集指标,
不是 Bridge 的指标,也不能证明在 Bridge 中可用。
## 本次消融
`scripts/widowx_policy_server.py` 增加 `--memory-mode bank_off`:
不加载外部库和检索头,令全局输入为零;保留真实当前轨迹的 CTE phase/effect
历史及全部已训练策略权重。投影层和 PBD 的已学偏置仍保留,
因此这是“去除外部记忆内容”,不是“关闭全部 Zeva 模块”。
固定旧训练最后保存的 `step_000290000.pt`,每组种子 0–19、150 个环境步、
30 步去噪、guidance=3。按每次执行 4/16 个动作,各做外部库 off/on 对照。
模型仍预测 32 个动作;执行 16 个动作后再规划,在 5 Hz 下对应 3.2 秒。
所有实际执行动作都会进入历史,CTE 的四步边界不随执行长度改变。
此消融仅发生在评测时:不能消除已有权重对旧记忆的依赖,也不等同于
“从头关闭记忆训练”。关闭更好可提示旧条件有害,关闭更差也可能是输入
分布改变;小样本成功率均需结合视频、抓取/移动指标和更多种子判断。
运行入口和输出说明见 `scripts/WIDOWX.md` 的 External-bank ablation 一节。
## Bridge 构建方案(以下步骤需要新增/补齐实现)
本地已找到 CTE 模型/损失、检索头模型/对比损失、库加载与推理代码,
**未找到可以直接运行的 Bridge Stage-1 训练器、记忆库导出器或 Stage-3
训练器**。不要把下面的步骤理解为已有完整官方命令。
1. **整理任务标签和划分数据。** 本地 IPEC 导出有 53,192 个 episode;
按 `meta/episodes.jsonl` 的任务文本统计,38,660 个有非空文本,
14,532 个无非空文本(27.32%,分母是 episode,不是采样窗口)。
共有 19,973 个非空任务字符串,其中 18,380 个只对应一个 episode。
先做可审计的同义任务归并,保留物体、方向、目标容器等差别;
“放胡萝卜到盘里”与“从盘里拿走”不能合并。空文本不能全部视为同一种任务。
先按 episode/原始采集 session 划分 train/val,验证和仿真评测数据不入库。
建议先选约 5–10 个有足够重复样本的任务试跑,再扩展全量。
2. **固定 Bridge 输入契约。** 使用真实前视 `image_0`、5 Hz、现有
XYZ/RPY 六维归一化与夹爪正开负闭约定、每四个控制步一个 CTE 边界。
CTE 输入包括潜变量图像 `[B,T,48,H,W]`、动作 `[B,T-1,4,7]`、
帧/动作有效掩码,动作只包含已经执行的历史。
要记录分辨率、RGB 约定、VAE 和所有权重指纹,并保持训练/服务一致。
当前外部检索 readout 仍沿用 RoboCasa 的 20 FPS/拼接视图提示模板
(上游 server 的 `format_action_prompt`/`extract_batch`),真正适配时应与
Bridge 单视图、5 Hz 一并修正并重新训练检索头,不能单独修改线上提示。
3. **训练或适配 Bridge CTE。** 可从发布 CTE 初始化,保留模型定义和
`cte_losses.py` 中的视觉/动作预测、语义聚类、阶段和 effect 目标。
每次优化后调用 `update_ema_target()`。不足 16 个控制步的轨迹没有完整
effect 窗口,应按掩码跳过对应目标,而不是删除整条轨迹。
语义损失需要多个任务、每类多个样本;未知标签应显式屏蔽语义目标,
仍可用于其他有监督/自监督目标。不要直接照搬发布模型的 500 步停止点。
同样的 16 控制步在 Bridge 是 3.2 秒,在 RoboCasa 20 Hz 下只有 0.8 秒,
因而时间尺度也需要适配。
4. **从训练轨迹导出 Bridge key/value。** CTE 有 128 维 `retrieval`
和 256 维 `causal_interaction_state`。一种维度兼容的初始方案是分别对
有效时刻池化并 L2 归一化,保存 key/value 和任务/episode ID;
**这只是建议实现,不是已核实的官方导出池化公式**,需要检索验证。
训练演示的完整轨迹可以用于离线建库,部署查询只能使用当时已知信息。
特征生成时建议排除同一 episode 的自检索,并记录 CTE SHA256、
输入契约、split 和数据版本,防止验证泄漏和自匹配捷径。
5. **适配 Stage-3 检索头。** 冻结策略 readout,从初始图像与指令提取
4,096 维特征,训练 4,096→1,024→128 的 head 查询新 key 空间。
利用 `bidirectional_supervised_contrastive_loss` 的同任务多正样本目标;
batch 中必须有多个任务,否则单一任务的对比学习缺少负类。
之前 159 条单任务集可以做行为过拟合测试,但不适合独立证明多任务检索有效。
用未入库的验证轨迹报告 Recall@1/5、top-k 任务纯度、任务宏平均结果。
readout checkpoint、提示模板和 CTE/bank/head 必须成套固定。
6. **重新生成 Stage-2 条件并训练/评测。** 给 prepare、server、cache contract
三处增加统一的 CTE/bank/head 路径配置,生成新的缓存目录并严格校验。
当前缓存只有旧库检索后的 global 和 phase/effect,并不含重建新库所需的
完整 CTE key/value 或原始 VAE 潜变量,不能改名后充作 Bridge 库。
新向量空间需要重新适配 Stage-2;不要悄悄给旧 290k checkpoint 换库后
就认定它已经完成 Bridge 记忆训练。独立比较 bank-off、RoboCasa bank、
Bridge bank,固定动作执行长度和去噪步数。
## 成本与建议顺序
首先完成当前 off/on × 4/16 步评测,再决定是否投入完整的 Stage-1/3 适配。
一个更快的诊断版是先用冻结发布 CTE 编码 Bridge 建库、仅适配检索头;
它仍含跨域 CTE 限制,应明确标为 provisional,不能当作完整适配结论。
检查时工作盘仅约 19 GiB 空闲。按当前每帧 `48×30×52`、492,160 个边界
帧估算,仅全量 FP16 VAE 缓存就约 **68.6 GiB**,尚未算训练中间量;
53,192 条 FP32 key/value 原始向量本身仅约 **78 MiB**。
因此应先做多任务子集/流式编码,或准备新磁盘;不能因为库文件小就直接
启动全量潜变量缓存,也不要自动删除现有 checkpoint 腾空间。
官方背景资料:[Zeva 项目](https://air-embodied-brain.github.io/Zeva/)、
[发布仓库](https://github.com/dsdfasfaac/zeva-test)。具体本地差异以以上代码、
已安装版本和实际 checkpoint 内容为准。