技术报告 · 七个被推翻的判据,七条走死的路
消费级显卡上的可交互世界模型:一份关于「测错了」的报告
我们把一个块因果潜空间视频扩散模型作为实时交互系统部署在两张 24 GB 消费级显卡上。任意静态图片即入口;八个按键驱动相机;会话中途替换文本条件即可改变天气与光照。全流程没有预渲染,也不存在任何 3D 资产。本文的主题不是这些。本文关于七个自洽、跨种子可复现、而且错误的度量——以及我们为抓住第八个而建立的纪律。
图 1 系统运行实录
1280×704 原生 · 四步采样 · 无调色 · 键盘指示器由采集帧文件名解析
本文主张
- 自条件 rollout 的一条经验律。运动保持率随注意力上下文长度单调下降。六个窗口尺寸、共享前缀对照(前七块在六种配置下逐位相同)、预注册 3 seed 验收。训练默认值落在曲线下降的一侧;移动它可使保持率翻倍——一行推理配置、无需重训,且回访相似度不降反升。这与「上下文越长越好」的领域直觉相反。
- 可精确回滚的推测执行。要通过生成一块再撤销来评估候选动作,必须还原三样东西:该块覆写的 KV 区段、索引计数器、以及全局 RNG 状态。已验证逐位精确(max |Δ| = 0)。RNG 一项最不显然且不可省略:缺了它,两个候选分支的差异来自随机抽样而非动作,比较因此失去意义,而日志看起来完全正常。
- 选择性度量的验收协议,附七个反例。任何度量在正确排序一组答案已知的样本之前,不得参与任何决策。下文每个反例都取自我们自己的决策日志,非构造。
- rollout 中途文本条件控制的边界。分布式外观属性——天气、时段、色调——在条件替换下干净迁移。实例化新实体则不然:模型把提示中的空间语言读作相机指令并撕裂画面。该边界是结构性的,与提示词质量无关。
被交付的系统
生成器是一个 5B 参数的因果自回归潜空间视频扩散 Transformer,为实时路径蒸馏到两步采样。生成以块为单位:每块三个潜变量帧,解码为十二个像素帧。块内注意力因果;跨块读取一个 KV cache,其中保存过去帧的滚动窗口加一小段固定前缀(attention sink)。八个离散按键状态经加性适配器注入 Transformer 特征。文本条件可在块之间替换。
七个骗过我们的判据
下面每一条在当时都是我们的决策判据。每一条给出的数字都自洽、可复现、跨种子稳定。每一条都以同一种结构性方式出错:该度量与它本应检出的失效正相关。
| 判据 | 它说了什么 | 真相 |
|---|---|---|
单用 R |
结构完整、通道秩正常——长程一致性达标。 | 一个完全冻结的世界得分最高。由玩家反馈「按半天还在原地」才暴露。 |
| 拉普拉斯锐度保持 | 窗口 21 的锐度是窗口 12 的 1.9 倍。 | 高频能量来自运动拖影与高光硬边。第 39 块时窗口 21 的立柱已化为条纹。 |
| 逐像素梯度细节 | 480p 高于 1280×704(0.0281 vs 0.0217)。 | 同一条边缘铺在更多像素上会拉低均值。该量不可跨分辨率比较。 |
| 手写镜头目标函数 | 地平线位置、倾角、前景平面度、细节的加权和。 | 把埋进草丛的相机排到最高——草地纹理最丰富。把水平的草甸判为翻滚,把灯塔帧判为无天空。 |
| 纵深梯度 | 若相机保持地平线,细节应随高度下降。 | 可用帧 −0.17…+0.95,不可用帧 −0.69…+0.36,完全重叠。 |
| 天空占比漂移率 | 基线天空 0.432→0.074(崩塌);干预后 0.415→0.452(保持)。 | 浪花与碎浪纹理很强,被判为「非天空」。基线那一帧目视是干净的风暴海景。整个「崩塌」叙事是这个度量的产物。 |
| 运行中的评委分数 | 候选分支 0.956 / 0.903 / −0.250,分布合理。 | 同一帧离线复算为 0.191。原因尚未定位;基于这些分数的分支不写入本报告。 |
最贵的一次——两个错误度量合成一个自洽的假结论
最后两条发生在同一天,且方向相反。一个说基线崩塌,另一个说干预有效。两者合起来产生了一个干净、自洽、互相印证的结论,我们据此公开宣布。真相是:基线本就是好的那一支,而干预把一幅极好的风暴海景跑成了一片无特征的雾。
它不是靠更严格的统计抓到的,是靠把那一帧调出来看了一眼。
由此确立的规则
第二条:任何用于自动取舍的度量,必须先在一组答案已知的样本上验证。我们现在用图文相似度评委给候选帧打分:s(x) = Σt∈G pt(x) − Σt∈B pt(x),其中 p 为固定提示集上的 softmax,提示集分为可接受(G)与失效(B)两类,失效描述照着真实拍坏的帧写。上线前在九张问题已知的帧上验证:九帧全部排序正确,最差可接受 +0.948 对最好不可接受 +0.745。这是本项目第一个「先过验收、后上岗」的判据。
被证实的杠杆
注意力窗口是运动旋钮,而训练默认值在坏的一侧
同种子、同动作脚本、22 块,只改局部注意力窗口。前七块在六种配置下逐位相同——窗口尚未填满,尺寸无从生效——这同时确立了各次 rollout 的可比性。
图 2 按注意力窗口的块间运动 J
单种子 · 22 块 · 共享前缀 · 点图例可只看其中一条 · 悬停读数值
| 窗口(帧) | ρ (保持率) | 台阶 | R (末段) |
|---|---|---|---|
| 12 | 0.91 | 无 | 0.136 |
| 15 | 0.90 | 无 | 0.134 |
| 18 | 0.85 | b15 | 0.126 |
| 21 (默认) | 0.59 | b11 | 0.132 |
| 33 | 0.21 | b7 | 0.113 |
| 45 | 0.17 | b7 | 0.113 |
预注册验收,3 seed × 40 块持续前进:窗口 12 的 ρ = 0.83 / 0.78 / 0.94,窗口 21 为 0.38 / 0.40 / 0.40——3/3 种子,约 2 倍。我们预期的风险(窗口更短即记忆更少,转身回望应更差)没有出现:回访相似度同样改善(0.84 对 0.44)。
它同时推翻了我们自己的机制解释
原假设是衰减始于窗口开始逐出,因此加宽应把台阶推后。加宽直接把运动打死,且台阶位置与「窗口填满的块序」反相关(窗口 21 第 7 块填满、第 11 块断裂;窗口 18 第 6 块填满、第 15 块断裂)。真实关系随上下文长度单调:模型能注意到的过去越多,维持现状的依据就越多。
九成生成帧曾在浏览器里被丢弃
实测 socket 帧到达间隔:12 帧在约 100 ms 内到齐,随后 700–980 ms 静默,等待下一块生成。为压低延迟而写的客户端只绘制最新帧、丢弃积压。
图 3 单次会话的帧到达间隔
每根柱是一个帧间隔 · 高度做过压缩(gap0.42),好让 7 ms 和 978 ms 并排还看得清
服务端约 16 fps,屏幕上约 1.2 fps。按块周期匀速排空后恢复到 12.0 fps,零算力代价。画布同时被写死为 512×320,而服务端发送 832×480——花数周把分辨率从 320p 提到 480p,然后在浏览器里扔掉 60% 的像素。所有延迟与画质排查都做在服务端,从未测量过客户端。
文本条件:全局外观可迁移,物体实例化不可
第 10 块受控切换,共享种子,前十块完全一致(切换前逐帧相关性 1.0000,切换后 −0.11 至 −0.13)。
| 指令 | 结果 |
|---|---|
| 「暴雨、暗天、大雨」 | 几何与相机位置不变;天空转暗,出现雨丝,光照转为湿冷。语义正确且画面干净。 |
| 「巨大生物挡住去路,高耸于废墟之上」 | 没有生物。模型把「高耸于上」读成剧烈俯仰指令并撕裂画面——上三分之一跳到另一个视角。 |
这个区别是结构性的。天气、时段、色调是输出的分布式属性,文本条件可以移动它们。而实例化一个自带几何的新实体,是模型从未在 rollout 中途被训练过的组合操作。产品边界由此直接给出:交付实时氛围控制,不要承诺生物。
推测块:精确撤销需要还原什么
块因果生成器不只是渲染器。给定状态与动作,它预测下一秒的世界,因此可以被当作它自己的前向模型使用:提出候选输入,为每个生成一块,对预览打分,保留其一、撤销其余。使这一切成立的原语是精确撤销,而把它做对并不显然。
验证是一个两行实验,而且应当在任何规划器搭建之前完成:以噪声 ε 生成一块,快照,还原,再以同一 ε 生成,要求两个潜变量逐位相同。仅还原 cache 与计数器时结果为 max |Δ| = 2.85——块内部还会从全局生成器采样,因此第二次调用抽到了不同的样本。加入 σ 后 max |Δ| = 0。
为何 RNG 一项是承重的
缺少它,候选 A 与候选 B 就不是同一次抽样下的两个动作,而是两次抽样。二者之间的任何排序都会被采样噪声主导,而日志里不会显示任何异常——分数仍在合理区间,被选中的动作仍然看似合理。这与上文的判据表是同一种失效形状,只是位于栈的下一层。
快照保存在主机内存中;每个候选多花一两秒,对离线渲染无关紧要,实时路径则需要另一种设计。本文只报告该原语及其验证。基于它构建的规划器不在报告之列:其首轮运行由一个「运行中分数无法离线复现」的评委驱动,也就是判据表的最后一行,而我们不发布测量仪器仍在调查中的结果。
七条走死的路
列出它们,是因为知道什么不成立与知道什么成立同样是资产,而且前者难以伪造。每一条背后都有实测数据。
蒸馏目标导致运动衰减
与同骨干家族、同分辨率、同块结构的公开权重做受控对照,唯一变量是一致性目标上是否叠加分布匹配项。斜率:不叠 −0.039 ± 0.007,叠加 −0.032 ± 0.018。差值落在种子噪声内,且方向上略微有利于我们怀疑的那一项。一次昂贵重训的立论前提就此消失。
梯度穿过 KV 写入可改善长程一致性
我们的首个实现正是原论文明确指出会显存溢出的朴素变体。按论文真实方法重写后开销归零(峰值 10.11 GB,与基线相同)。随后该算法在四项指标上均无显著差异,且方向上一致略差。工程成功不等于算法有效,两者应分开记账。
延长漂移暴露可教会自纠正
三个种子全部变差,最差一组恶化 14 倍。原因是一个范畴错误:暴露于漂移不等于监督其恢复。在十一块累积漂移的条件下,teacher 给出的是与该漂移自洽的输出,于是学生学到的是顺着退化平滑地继续下去。缺的那一半是干净目标,不是更长的 rollout。
来自摄影测量的几何监督可修正动作→位移
管线本身跑通:注册 113/113、重投影误差 1.099 px、PSNR 24.2,新轨迹回访相似度 1.000(模型为 0.284)。微调后的适配器在训练场景与留出场景上均更差,留出场景在持续 rollout 末段仅剩 8% 高频能量。监督信号在携带几何的同时也携带了渲染器的外观,而外观恰是模型唯一仍然做得好的部分。
整数量化可降低延迟
真实形状下的孤立 GEMM 快 2.1–3.7×。端到端反而慢 126 ms(540 对 414)。在这些形状下反量化通路是访存受限的,而该架构世代不存在可用的融合 kernel。同一推理适用于近期的免标定 4-bit 工作:论文报告的是显存与模拟开销而非墙钟时间,并自陈仍需融合 kernel。我们为显存这条线登记它,不为延迟。
动作基可线性重标定
适配器输出是加性的,因此动作空间线性,键值无需二值。为持续前进叠加常量抬头分量,在一个分辨率上给出单调响应,在失效真正发生的分辨率上则非单调。原因在更上游:本系统没有可控相机。不存在动作逆,转向键每块约 0.3°,自由 rollout 从不回访此前占据过的位姿。下俯是学到的续帧分布的性质,不是线性组合能抵消的取向偏置。
块粒度可调
每块两个潜变量帧输出全零;一个帧输出 NaN,jump 统计量达 6.2 × 10⁶。三种设置都跑完 200 块、无任何报错,并给出漂亮的延迟数字。仅凭延迟表上线,会交付一块帧率翻倍的黑屏。
最贵的一课与统计无关
连续六轮评估在 attention sink 关闭的状态下运行,而交付的系统是开启的。多种子协议、预注册判据、机制解释都在——每一条都作用于实验内部。没有任何一条检查「被测配置是否等于被交付配置」。在正确配置下,五个种子的斜率全为正,不发生坍缩。那六轮不是失败,是在修一个不存在的问题。
我们做不到什么
延迟预算在算法层面已经耗尽。稀疏 re-cache 破坏一致性;降到 256×384 仅省 44 ms(token 减少 40% 只换来 11%,说明瓶颈在模型深度而非序列长度);异步解码省 47 ms;整数量化净负;张量并行输给自身的 all-to-all。要达到 33 ms 的帧预算需要约一个数量级,路径是具备原生低精度支持的硬件世代,或一个显著更小的骨干。
在算法层面,我们持有一个可复现的现象和一个有效的旋钮,但没有关于自条件收缩为何发生、为何依赖种子、为何随上下文长度单调的机制性解释。我们不假装有。
口径
J 在潜空间的块均值状态上计算,并且是唯一用于跨骨干比较的量,因为 R 以通道数归一化,而不同架构的潜空间通道维不同。保持率 ρ 取一次 rollout 的末五块与前五块。所有 rollout 使用固定种子且管线确定;早前一处库调用静默覆盖了种子参数,导致所有跑批实际上是同一条轨迹——该时期的全部结论已作废并重跑。演示片素材为 1280×704 原生、四步采样、无调色;实时 demo 为 480×832、两步。
本报告中的对照一律以能力描述指代,不点名——开源基座、KV 写入方法的原论文、近期的免标定 4-bit 工作。每张图背后的评测框架、判据定义与配置,我们计划开源;对照的具体身份与可复跑的代码,届时一并给出。
全部数字实测于两张 24 GB 消费级显卡,非估算。被证伪的结论保留在正文中而非删除,因为它们是这套系统里最难重建的部分。