File size: 8,704 Bytes
68eed61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# 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 内容为准。