Cosmos 3 · OmniMoT ▸ 完整前向传播
五种形状迥异的原始数据,各走自己的编码器压成 latent、投影进同一个 hidden、打包成一条联合序列(输入端 I);
整条序列一起过 N 层 MoT trunk 做单次前向;输出端按 token 类型分流、各经反向投影回自己的模态再解码(输出端 O)。
I 与 O 是镜像对称的一对(vae2llm↔llm2vae、patchify↔unpatchify、pack↔unpack),trunk 夹在正中。
文本走自回归、生成模态走扩散——两条推理回环在底部标出。
[·, hidden][L, hidden] cthpwq→thwpqc → [N_p, p²·C=64] → [N_p, hidden] + time_embedder(t) 仅带噪 token patchify_and_pack_latents vae2llm hidden + action_modality_embed + time(t) action2llm [N_total, hidden]。
hidden → 模态 镜像 ③ 的进投影v_θ → ODE 步 x ← x − Δt·v_θ → 回代噪声 latent,重跑 ③→⑤→⑦,共 N 步收敛到干净 latent 再解码。🎲 展开采样内部 → lm_head 采样一个 token → 追加到序列末尾,重跑 ③→⑤→⑦(KV-cache 复用),直到 <eos>。
v_pred,与目标 v = x₀−x₁ 算
flow-matching 损失;文本走 teacher-forcing 交叉熵。不循环。
embed_tokens/lm_head、vae2llm/llm2vae、sound2llm/llm2sound、action2llm/llm2action。
左半张图(① → ④,进)与右半张图(⑥ → ⑧,出)互为镜像;中间那段 trunk 所有模态共用同一条序列、同一套权重。
模态差异只在两端的编解码,以及输出端的用法(AR 采样 vs 扩散积分)。