NextStep-1:因果语言模型中的连续图像
交互教程
共享因果 Transformer 可用一个头预测离散文字,另一个头预测连续图像 patch。
前置阅读:MAR · 注意力与自回归 · 扩散与 Flow Matching
之前已经能做什么
Section titled “之前已经能做什么”MAR 展示扩散头如何建模连续下一 token 分布;文本语言模型已有因果序列主干。NextStep-1 大规模结合这两种接口,保留严格因果顺序,并不要求图像随机顺序生成。
改变了什么,为什么
Section titled “改变了什么,为什么”主干从 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:])逐步理解机制
Section titled “逐步理解机制”微调 Flux VAE 将 256² 图像变成 32 × 32 × 16 latent。每 2 × 2 区域合入通道后,序列为 256 个 64 维 token,标量总数仍是 16384。分组演示改变分组大小并检查守恒;序列更短本身不等于信息压缩更强。
主干第 i 位置隐状态预测第 i+1 位置。目标值与图文 mask 都应一起错位。若待预测图像值已进入同一上下文位置,低训练 loss 可能反映目标泄漏,而非学习有效。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
分组是可逆重排,标量总数保持 H × H × 16。
| 量 | 值 |
|---|---|
| 分组后位置数 | 256 |
| 每位置标量数 | 64 |
| 标量总数 | 16384 |
训练与采样的区别
Section titled “训练与采样的区别”论文使用标准一维 RoPE。严格因果历史允许 KV cache,但图像 token 仍需外层顺序生成。图像头有 12 层、约 157M 参数。解码器噪声增强及逐通道 latent 标准化属于 tokenizer 接口,不能悄然省略。
论文证据(并非本地复现)
Section titled “论文证据(并非本地复现)”| 条件 | 指标 | 数值 | 解释 |
|---|---|---|---|
| ImageNet-256;NextStep tokenizer | PSNR ↑ / SSIM ↑ | 30.60 / 0.89 | 表 8,重建 |
| 同表;Flux tokenizer | PSNR ↑ / SSIM ↑ | 31.64 / 0.91 | 不能仅按此排名判断生成适用性 |
这些结果不能证明什么
Section titled “这些结果不能证明什么”当前仓库也包含 NextStep-1.1。代码中存在二维索引 helper,不证明原模型调用它。论文将强 CFG 伪影与 token 统计漂移联系起来,同时保留部分空间伪影问题,不能证明所有网格缺陷都仅由一维位置导致。其延迟表为理论估算,不是本文实测。
2 × 2 分组会丢弃 latent 标量吗?
不会。它把四个位置重排为一个更宽向量。信息损失来自 tokenizer 等其他步骤,而非这种可逆 reshape。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。