跳转到内容
English

NextStep-1:因果语言模型中的连续图像

交互教程

共享因果 Transformer 可用一个头预测离散文字,另一个头预测连续图像 patch。

前置阅读:MAR · 注意力与自回归 · 扩散与 Flow Matching

MAR 展示扩散头如何建模连续下一 token 分布;文本语言模型已有因果序列主干。NextStep-1 大规模结合这两种接口,保留严格因果顺序,并不要求图像随机顺序生成。

主干从 Qwen2.5-14B 初始化。文字位置用类别交叉熵,图像位置用逐 patch flow-matching MLP。下一图像 token 通过以主干状态为条件的内层 flow 过程采样。共享序列可同时包含文字 ID 与投影后的连续图像向量。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

标准化与分组

使用该 tokenizer 对应的通道统计。

z = (vae.encode(image)-channel_mean)/channel_std
image_tokens = space_to_depth(z,2)

共享因果序列

原论文明确使用一维旋转位置。

inputs = merge(text_embeddings,project(image_tokens))
h = causal_transformer(inputs,position_ids)

两种输出分布

文字目标用 CE,图像目标用 flow matching。

loss_text = ce(text_head(h[:-1]),text_targets[1:])
loss_image = flow_loss(image_head,h[:-1],image_targets[1:])

查看固定版本来源

32⋅32⋅16=256⋅64=1638432\cdot32\cdot16=256\cdot64=16384

微调 Flux VAE 将 256² 图像变成 32 × 32 × 16 latent。每 2 × 2 区域合入通道后,序列为 256 个 64 维 token,标量总数仍是 16384。分组演示改变分组大小并检查守恒;序列更短本身不等于信息压缩更强。

主干第 i 位置隐状态预测第 i+1 位置。目标值与图文 mask 都应一起错位。若待预测图像值已进入同一上下文位置,低训练 loss 可能反映目标泄漏,而非学习有效。

改变参数,查看计算值,再把它与上方的真实模型说明对照。

解析教学模型 · 控件改变的是例子,不是训练后的研究模型。

32 × 32 × 16→ 16 × 16 × 64→ 256 tokens × 64

分组是可逆重排,标量总数保持 H × H × 16。

当前例子的计算值
量值
分组后位置数256
每位置标量数64
标量总数16384

论文使用标准一维 RoPE。严格因果历史允许 KV cache,但图像 token 仍需外层顺序生成。图像头有 12 层、约 157M 参数。解码器噪声增强及逐通道 latent 标准化属于 tokenizer 接口,不能悄然省略。

条件指标数值解释
ImageNet-256;NextStep tokenizerPSNR ↑ / SSIM ↑30.60 / 0.89表 8,重建
同表;Flux tokenizerPSNR ↑ / SSIM ↑31.64 / 0.91不能仅按此排名判断生成适用性

当前仓库也包含 NextStep-1.1。代码中存在二维索引 helper,不证明原模型调用它。论文将强 CFG 伪影与 token 统计漂移联系起来,同时保留部分空间伪影问题,不能证明所有网格缺陷都仅由一维位置导致。其延迟表为理论估算,不是本文实测。

2 × 2 分组会丢弃 latent 标量吗?

不会。它把四个位置重排为一个更宽向量。信息损失来自 tokenizer 等其他步骤,而非这种可逆 reshape。

返回学习地图

本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。