按顺序生成在实操里意味着什么
把一张图用训练好的分词器切成一格一格的离散码,就像把一句话切成词片。这样你就能像写一段话那样生成图:先预测第 1 个码,再在第 1 个码的条件下预测第 2 个,一直到结尾,最后把整串码解码回像素。
这就是自回归模型用在视觉输出上的形态。它一点也不新,最早的神经网络图像生成就是这么做的,先在画质上输给 GAN、又输给扩散,直到语言模型这套栈强到能扛住这条序列,它才回来。
回来这件事值得关心,因为两个家族的失败方向刚好相反,而你知道自己在对哪一种说话,提示词的写法就该不一样。
顺序换来了什么
指令是被执行的,不是被近似的。 六条约束对它来说只是更多上下文,而以上下文为条件正是这个架构的本职。扩散模型容易把「正好三个人」「文字在左、logo 在右」这类约束糊成一种大致氛围,按顺序生成的模型保住它们的概率高得多。
文字和符号能写对。 拼写、数字、日期、屏幕上的代码、图表上的标注。这是最稳定可复现的实际差别,哪怕你更喜欢另一个模型的画风,遇到这类活也值得切过来。
编辑是对话式的。 因为图和字进的是同一条 token 流,你可以给它一张图加一句修改要求,再加一句,它清楚哪些地方要保持不动。一组图里让角色保持同一个人,靠的就是这个,不需要训练任何东西。
长度不固定。 视频逐帧生成、以过去为条件,架构上就没有片长上限,而且可以边生成边流式输出。
代价在哪
- 延迟随产出量增长。 没有步数可以调低,也没有更快的采样器可以换。输出越大,串行的工作就成比例地多。
- 量化会磨掉质感。 过一遍离散码本会丢微观细节,成图往往比扩散渲染更干净也更平,做平面设计没问题,落到皮肤和胶片颗粒上就看得出来。
- 误差会累积。 没有任何环节回头修正早先的决定。视频里体现为一个长镜头里色彩、身份、几何的缓慢走形。
- 结构控制手段少。 深度图、骨架、边缘引导这套适配器生态是围着扩散主干长起来的。在按顺序生成的模型上,你靠文字和参考图来控制。
- 没有熟悉的引导系数。 这里没有可以往上推的 CFG scale,能调的是采样温度和参考图,所以「把引导调高一点」这类经验不通用。
两个家族怎么选
两边都用一段时间之后,比较实用的分法是这样的。
交付物带硬要求时选按顺序生成的模型:画面里要出现确切的字、物体数量确定、版式是被描述出来的、修改必须保住其他一切不变、或者同一个角色接下来还要出现十二张。交付物追求观感时选扩散家族:照片级质感、某种特定胶片味、你手上已有的风格适配器、来自深度图的结构控制、或者一次批量二十张便宜的变体供挑选。
两边的界线也在模糊。现在有几套视频系统本身是扩散主干,被蒸馏成因果的逐帧采样器以支持流式输出,于是推理时的行为像自回归模型,画质却是扩散的。在模型目录里比较时,看你真正在意的行为,别看架构标签。