土法炼钢兴趣小组的算法知识备份

【Transformer 与注意力机制】47|Diffusion + Transformer:DiT 与 Sora 为什么用 Transformer

文章导航

分类入口
transformer
标签入口
#transformer#diffusion#dit#sora#video-generation#scaling-laws

Transformer系列导航

按系列顺序继续阅读,而不是停在单篇。

系列目录上一篇:【Transformer 与注意力机制】46|多模态融合:CLIP、Flamingo、LLaVA、SAM下一篇:【Transformer 与注意力机制】48|从 logits 到文本:解码策略是决策层,不是收尾细节

目录

上一篇 46|多模态融合 讲的是”把图像塞进语言模型”。DiT(Diffusion Transformer)做的是另一件事:把语言模型最熟悉的模块——Transformer——塞进扩散模型,替掉图像生成里用了近十年的 U-Net。

这次替换容易被两种方式误读。一种是”GPT 直接画图了”——不是,DiT 仍然是标准的扩散模型,从噪声逐步去噪,Transformer 只是接管了”预测噪声”这一个子任务。另一种是把它当成理所当然的架构升级——也不是,U-Net 阵营在 DiT 论文发表半年后就拿出了真实的反例,说明这不是一次单方面碾压,而是一场仍在拉锯的争论。

本篇要交代清楚三件具体的事,都带着论文里的原始数字:

  1. 扩散模型留给”去噪网络”的接口到底是什么,为什么这个接口足够窄,窄到 U-Net 和 Transformer 都能实现它;
  2. DiT 怎么把 latent patch token、时间步、条件塞进 Transformer block,以及 Peebles & Xie(2023)用 Gflops 对 FID 的相关性到底证明了什么、没证明什么;
  3. 视频把这套接口搬过去之后,token 数量为什么不是”变长的文本”,而是量级完全不同的爆炸,Sora 技术报告自己承认了哪些边界。

一、扩散模型留给 backbone 的接口有多窄

DDPM(Ho et al., NeurIPS 2020)的前向过程给真实样本 \(x_0\) 逐步加噪:

\[ q(x_t \mid x_0) = \mathcal{N}\!\left(x_t;\ \sqrt{\bar\alpha_t}\, x_0,\ (1-\bar\alpha_t)\, I\right) \]

\(\bar\alpha_t\) 是噪声调度(noise schedule)在第 \(t\) 步累积下来的信噪比:\(t\) 越大,\(\bar\alpha_t\) 越小,\(x_t\) 越接近纯噪声。反向过程要学的是从 \(x_t\) 恢复 \(x_{t-1}\),Ho et al. 发现直接用网络预测噪声 \(\epsilon\) 比预测 \(x_0\) 更稳定,简化训练目标(论文 Eq. 14)就是:

\[ L_{\text{simple}} = \mathbb{E}_{x_0,\,\epsilon,\,t}\left[\left\|\epsilon - \epsilon_\theta(x_t, t)\right\|^2\right] \]

这条式子里 \(\theta\)——去噪网络——只被要求做一件事:输入带噪样本 \(x_t\) 和时间步 \(t\)(条件生成再加上类别或文本 \(c\)),输出一个和 \(x_t\) 形状相同的噪声预测。这个接口窄得几乎不挑 backbone:只要网络能吃一个张量、吃一个标量/向量条件、吐出同形状张量,CNN、U-Net、Transformer 都能填进去。

早期图像扩散选 U-Net(Ronneberger et al., MICCAI 2015 的分割网络改的),是因为它天然带图像归纳偏置:卷积的局部性、多尺度下采样-上采样带 skip connection,正好匹配图像去噪”既要局部纹理又要全局结构”的需求。Dhariwal & Nichol 的 ADM(Diffusion Models Beat GANs on Image Synthesis, NeurIPS 2021)把这条路线的 U-Net 消融到很细:归一化方式、通道数、attention 插在哪一层分辨率,最终确立了当时的强基线。

真正给 Transformer 让出位置的是另一件事:Rombach et al. 的 Latent Diffusion Model(LDM,CVPR 2022)把扩散过程从像素空间搬进 VAE 的 latent 空间。一张 \(256 \times 256 \times 3\) 的图像先被预训练 VAE 编码成 \(32 \times 32 \times 4\) 的 latent(空间降采样因子 \(f=8\)),扩散只在这个小得多的张量上跑。这一步的意义常被低估:它不只是”省显存”,而是把原本上万像素的输入压到了一千多个数,序列长度终于落进了 Transformer 能负担的范围——这正是第二节要说的 patchify 的前提。


二、DiT 拆开看:patchify 和四种条件注入方式

DiT(Peebles & Xie, Scalable Diffusion Models with Transformers, ICCV 2023,arXiv:2212.09748)做的事是:在 LDM 框架里,把 U-Net 换成一个几乎标准的 ViT。

patchify:输入是 VAE 编码后的带噪 latent,形状 \(I \times I \times C\)(256×256 图像对应 \(32\times32\times4\))。第一层把它切成 patch size \(p\times p\) 的小块,线性投影成 \(d\) 维 token,token 数

\[ T = (I/p)^2 \]

论文 Figure 4 把这个关系画得很直接:\(p\) 减半,\(T\) 变成 4 倍,Gflops 至少变成 4 倍。这是后面”scaling 靠什么调”的关键旋钮之一。

条件怎么进 block:扩散模型除了带噪 latent,还要吃时间步 \(t\) 和类别/文本条件 \(c\)。DiT 论文对比了四种注入方式(Figure 3),我把论文 Table 4 里同一个 DiT-XL/2、训练 40 万步、无 guidance 的 FID-50K 摘出来:

条件注入方式 Gflops FID-50K(40 万步,无 guidance)
in-context(把 \(t,c\) 当额外 token 拼进序列) 119.4 35.24
cross-attention(单独一层 cross-attn 接 \(t,c\) 137.6 26.14
adaLN(回归 LayerNorm 的 \(\gamma,\beta\) 118.6 25.21
adaLN-Zero(adaLN + 残差前再乘一个初始化为 0 的 \(\alpha\) 118.6 19.47

四种设计 Gflops 相差不到 20%,FID 却能差出近一倍——论文原话是”adaLN-Zero 的 FID 几乎是 in-context 的一半”(19.47 对 35.24),这是”conditioning 怎么设计”这件小事对生成质量的真实杠杆,不是无关细节。adaLN-Zero 的关键不是”adaLN”本身,而是”Zero”:它借鉴了 ResNet 里把残差块初始化为恒等映射的技巧(Goyal et al. 的大批量训练技巧,也是 U-Net 扩散模型自己用的零初始化卷积),让每个 DiT block 在训练刚开始时什么都不做,只是把输入原样传下去,再靠训练慢慢学出非零的调制。

下图是这个 block 在做什么:时间步和类别 embedding 相加后,通过一个小 MLP 回归出 \((\gamma, \beta, \alpha)\)\(\gamma,\beta\) 调制 LayerNorm,\(\alpha\) 在残差相加前缩放这一支的输出——初始化时 \(\alpha=0\),残差直接等于输入。

flowchart TB
    T["Timestep embedding t"] --> Sum["t + c"]
    C["Class / text embedding c"] --> Sum
    Sum --> Reg["Small MLP regresses gamma, beta, alpha1, alpha2"]
    Z["Input tokens z"] --> LN1["AdaLN: gamma * LayerNorm(z) + beta"]
    Reg --> LN1
    LN1 --> Attn["Multi-head self-attention"]
    Attn --> S1["multiply by alpha1 (init = 0)"]
    S1 --> Add1["+ z (residual)"]
    Z --> Add1
    Add1 --> LN2["AdaLN"]
    Reg --> LN2
    LN2 --> MLP["Pointwise MLP"]
    MLP --> S2["multiply by alpha2 (init = 0)"]
    S2 --> Add2["+ residual"]
    Add1 --> Add2
    Add2 --> Out["Output tokens to next block"]

图中 alpha1alpha2 初始为零,正是 adaLN-Zero 名字的来源:每个 block 在训练第 0 步等价于恒等函数,网络深度可以堆得很深也不会一开始就把信号破坏掉。这一点和第 24 篇讨论过的残差路径 identity 初始化是同一个直觉,只是这里连”要不要生效”这件事本身也交给了条件信息去学。


三、scaling 叙事说的到底是什么

DiT 论文最常被引用的一句话是”网络的 Gflops 和 FID 强相关”,但这句话经常被简化成”模型越大越好”,丢掉了它真正有意思的地方:Gflops 可以用两种完全不同的方式增加——加大模型(深度/宽度),或者加大 token 数(减小 patch size)——两种方式殊途同归,都会压低 FID。 论文用四档模型规模(DiT-S/B/L/XL,33M 到 675M 参数)分别搭配 patch size 8/4/2,得到 12 个配置,全部列在 Table 4 里,画出来是论文的 Figure 8:

DiT 论文 Table 4 数据重绘:Gflops 与 FID-50K(无 guidance)的关系,四种模型规模、每种规模三档 patch size

固定 DiT-XL 这一档模型规模,只改 patch size:

Patch size \(p\) Token 数 \(T=(32/p)^2\) Gflops FID-50K(40 万步,无 guidance)
8 16 7.4 106.41
4 64 29.1 43.01
2 256 118.6 19.47

参数量几乎不变(patch size 只影响 patchify 这一层,不影响 Transformer 主体宽度),FID 却从 106 降到 19.5。这是”scaling 不只是加参数”最直接的证据:多花 Gflops,不管花在更深的网络上还是更多的 token 上,效果都在变好——这正是论文强调”用 Gflops 而不是参数量衡量复杂度”的原因,参数量对图像分辨率、token 数这类因素是盲的。

把 DiT-XL/2(118.6 Gflops,latent Transformer)和同期 U-Net baseline 摆在一起(数字来自论文 Table 2 和 Table 6,同为 ImageNet 256×256、不加 guidance 的 FID-50K):

模型 backbone Gflops FID(无 guidance)
ADM(Dhariwal & Nichol, 2021) 像素空间 U-Net 1120 10.94
ADM-U(级联超分) 像素空间 U-Net 742 7.49
LDM-4(Rombach et al., 2022) latent U-Net 104 10.56
DiT-XL/2(Peebles & Xie, 2023) latent Transformer 118.6 9.62

DiT-XL/2 用不到 ADM 十分之一的 Gflops,FID 反而更好;和同样跑在 latent 空间的 LDM-4 比,Gflops 相近,FID 更低。这才是”DiT 证明了什么”的准确表述:在 latent 空间里,Transformer backbone 比同等计算预算的 U-Net 拿到更好的样本质量——不是”Transformer 天生比 U-Net 强”,条件限定在”latent 空间、同等 Gflops”这个具体口径里。

加上 classifier-free guidance(Ho & Salimans, NeurIPS 2021 Workshop;训练时随机丢弃条件、推理时按 \(\hat\epsilon_\theta = \epsilon_\theta(x_t,\varnothing) + s\cdot(\epsilon_\theta(x_t,c)-\epsilon_\theta(x_t,\varnothing))\) 外推)之后,DiT-XL/2 在 256×256 上把 FID 从 9.62 压到 2.27(guidance scale 1.5,论文 Table 2),超过 LDM-4 加 guidance 后的 3.60,也超过此前的 GAN 基线 StyleGAN-XL(2.30)。这是论文摘要里”state-of-the-art 2.27”的真实来源和条件:它是加了 guidance 之后的数字,和上面几张不加 guidance 的表不是同一个口径,混着比会得出错误结论。


四、争论:U-Net 真的被 Transformer 淘汰了吗

如果故事到这里结束,会显得像是”Transformer 又赢了一次”。真实的学术进展没有这么单向。

Hoogeboom, Heek & Salimans 在 DiT 发表几个月后拿出了 simple diffusion: End-to-end diffusion for high resolution images(ICML 2023)。他们的论断很直接:不换 latent、不换 backbone,只调噪声调度(分辨率越高,噪声要加得越猛)、只在合适的分辨率层扩大 U-Net 宽度、把 dropout 放在正确的位置、用下采样避免维护过大的高分辨率特征图——四个改动叠加,像素空间的 U-Net 照样能在 ImageNet 上拿到当时最好的 FID,完全不需要 latent 压缩或 Transformer。

论文 Table 7 直接把自己的 U-Net 和 DiT-XL/2 摆在同一张表里对比(都不加 guidance,256×256):

模型 backbone FID(train split,无 guidance)
DiT-XL/2(Peebles & Xie, 2023) latent Transformer 9.62
simple diffusion U-Net(Hoogeboom et al., 2023) 像素空间 U-Net(精调) 3.76
simple diffusion U-ViT 2B(Hoogeboom et al., 2023) 像素空间 U-Net + Transformer 混合 2.77

不加 guidance 时,精调过的像素空间 U-Net 比 DiT-XL/2 的 FID 低了一大截。这不是打脸 DiT——两篇论文的假设不一样:DiT 的贡献是证明”扩散模型的 backbone 可以脱离 U-Net 的卷积归纳偏置,靠 Transformer 的通用性和可预测 scaling 也能跑赢同 Gflops 的 U-Net”;simple diffusion 的贡献是证明”如果你不嫌麻烦去调噪声调度和架构细节,U-Net 的归纳偏置仍然能压榨出更高的样本质量,不必绕道 latent 压缩”。两者甚至不完全对立:simple diffusion 自己最好的配置(U-ViT 2B)也是把 Transformer 塞进了 U-Net 的下采样瓶颈层,而不是纯卷积。

这场争论到 2024 年也没有单方面收场,而是被”两边都要”的方案接管:Stability AI 的 Stable Diffusion 3(Esser et al., Scaling Rectified Flow Transformers for High-Resolution Image Synthesis, ICML 2024)在 DiT 基础上提出 MM-DiT——图像和文本 token 各用一套权重、再拼接做联合 attention,同时换成 rectified flow 目标(数据和噪声之间走直线轨迹,采样步数可以更少)。它选的是纯 Transformer 路线,但训练目标和 conditioning 方式都比原始 DiT 往前走了一步。工程上真正的答案更接近:“latent 压缩 + Transformer 的可预测 scaling 更适合往万亿级参数、多模态条件扩,像素空间精调 U-Net 在中等规模、单一分辨率任务上仍能维持效率优势”——这条边界目前还在移动,不是哪一派已经赢了。


五、从图像 token 到时空 token:视频为什么比”长文本”更痛

图像 DiT 的 token 数已经不小——256×256 图像、patch size 2,就有 256 个 token。视频把这个数字沿时间轴再乘一遍,而这一乘不是线性的负担,是第 18 篇讲过的 \(O(n^2 d)\) attention 成本乘在一个本来就更大的 \(n\) 上。

沿用 Latte(Ma et al., Latent Diffusion Transformer for Video Generation, 2024,训练时用的正是 256×256、16 帧一个 clip 的设置)的具体参数算一遍:VAE 把每帧压成 \(32\times32\times4\) 的 latent,patch size 2,每帧空间 token 数 \(S=(32/2)^2=256\)——和单张图片的 DiT 完全一样。区别只在于视频有 \(F\) 帧。如果不做任何时间压缩(“uniform frame patch embedding”,Latte 论文的两种 patch 方式之一),16 帧 clip 的总 token 数是

\[ F \times S = 16 \times 256 = 4096 \]

单看 token 数,从一张图到 16 帧只涨了 16 倍,看起来还能接受。但如果把这 4096 个 token 当成一个序列做联合时空 full attention(joint spacetime attention),attention 的 FLOPs 是 \(O((FS)^2 d)\)——相对单帧的 \(O(S^2 d)\),涨的是

\[ \frac{(FS)^2}{S^2} = F^2 = 16^2 = 256\times \]

token 数涨 16 倍,attention 算力涨 256 倍。这正是第 18 篇里”\(O(n^2)\) 显存/计算比 token 数涨得快得多”的结论,只是这次 \(n\) 的膨胀方式变成了乘一个新维度(帧数),而不是像文本一样单纯拉长上下文。换算到更长的 clip 会更极端:64 帧时 token 数 \(F\times S=16384\),联合 attention 相对单帧涨了 \(64^2=4096\times\)

复杂度模型:联合时空 attention 的 FLOPs 随帧数呈平方增长,分解式 attention 增长明显更慢;数值来自公式换算,非实测

这就是为什么视频 DiT 几乎没有谁真的对全部时空 token 做一次 full attention。Latte 论文(Section 3.1)和更早的 VDT(General-purpose Video Diffusion Transformers via Mask Modeling, 2023)都选择了分解式(factorized)attention:先在每帧内部做空间 attention(token 数 \(S\),代价 \(O(S^2 d)\),乘 \(F\) 帧),再在同一空间位置沿时间轴做时间 attention(token 数 \(F\),代价 \(O(F^2 d)\),乘 \(S\) 个位置)。总代价是

\[ O\big(F S^2 d + S F^2 d\big) = O\big(FS(S+F)\,d\big) \]

用同样的 16 帧例子算一下:分解式相对单帧的涨幅是 \(\dfrac{FS(S+F)}{S^2}\approx \dfrac{FS}{S}\cdot\dfrac{S+F}{S}\approx 16\times 1.06\approx 17\times\)——比联合 attention 的 256 倍省了一个数量级。这和第 43 篇讲的稀疏/局部 attention 是同一个思路:不改变每个 token 的信息容量,只改变哪些 token 之间允许直接建立连接,把图从”完全图”变成”按结构拆分的图”,用先验换效率。

但分解式 attention 不是没有代价。Latte 论文自己的消融实验(Figure 6,用逐帧特征的余弦相似度矩阵衡量时间一致性)发现:如果在网络里堆叠太多连续的空间 attention 模块,帧间余弦相似度会持续下降、方差上升,出现”第一帧和第二帧的相似度反而低于第一帧和第五帧”这种时间关系倒挂——分解省下的计算量,是拿一部分时间一致性去换的。这句话直接指向下一节要谈的开放问题:视频 Transformer 省 token 的方法本身可能损伤它最需要保证的东西。


六、Sora:公开材料能确认到什么、不能确认到什么

OpenAI 的技术报告《Video generation models as world simulators》(2024 年 2 月)在开篇就写明边界:“This report focuses on (1) our method for turning visual data into a unified representation… Model and implementation details are not included in this report.”——这句话本身就是本节该守住的红线。

报告里明确写清楚的架构思路只有这些:先用一个视频压缩网络把视频压进低维 latent 空间,再把这个 latent 沿空间和时间同时切成 patch,称为 spacetime patch,当作 Transformer 的 token;这套表示让同一个模型能原生处理不同分辨率、不同时长、不同宽高比的视频和图像,因为它们只是不同数量的 patch;Sora 是一个在这些 spacetime patch token 上跑的扩散 Transformer(diffusion transformer)。这条链路和第二、五节讲的 DiT/视频 DiT 思路是同一个家族,但报告没有给出层数、宽度、attention 是否分解、patch size 具体数值——这些都是没有公开的实现细节,不该被当作已知信息去复述。

报告同样明确写了失败模式,这部分和架构细节一样值得引用,因为它是官方自己给出的边界,不是猜测:“Sora currently exhibits numerous limitations as a simulator. For example, it does not accurately model the physics of many basic interactions, like glass shattering. Other interactions, like eating food, do not always yield correct changes in object state.”——报告还提到长时长样本会出现不连贯(incoherencies),以及物体会无缘无故突然出现。这些是 OpenAI 自己在技术报告和产品页公开承认的局限,不是第三方猜测,可以放心引用。


七、开放问题:视频的长程时空一致性

第五、六节的证据拼在一起,指向一个目前没有定论的问题:视频 Transformer 到底应该靠什么保证长程时空一致性——更大的联合 attention(贵但直接),还是更聪明的分解结构(省但可能丢一致性)?

这不是一个”以后模型更大就会解决”式的空话,而是有具体证据支撑的张力:

想继续跟这个问题,比较扎实的入口是两条:一是直接读 Latte(arXiv:2401.03048)和 VDT 论文里各自的消融实验,看不同分解方式对时间一致性的量化影响;二是 Liu et al. 的综述 Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models(arXiv:2402.17177,2024)——这是一篇 arXiv 预印本、非官方逆向分析,未经同行评审,只适合当作梳理公开信息和失败模式的线索,不能当作”Sora 内部就是这样实现的”的证据。


八、关键概念回顾


九、常见误解

9.1 “DiT 证明 Transformer 全面比 U-Net 强”

不成立。DiT 的结论限定在”latent 空间、同等 Gflops”这个口径。Hoogeboom et al.(2023)的精调像素空间 U-Net 在不加 guidance 时 FID 明显低于 DiT-XL/2,这是同一批作者用同一套评测方式做出的直接对比。

9.2 “DiT 的 2.27 FID 是它的正常水平”

不是。2.27 是加了 classifier-free guidance(scale 1.5)之后的数字,DiT-XL/2 本身(无 guidance)的 FID 是 9.62。混用两个口径比较会得出错误结论。

9.3 “视频只是更长的文本,Transformer 处理长文本没问题所以视频也没问题”

不对。视频每一帧就带来上百个 token,帧数增加不是拉长一维序列,而是在已经不小的空间 token 数基础上再乘一个时间维度;联合 attention 的成本因此随帧数平方增长,比单纯拉长文本上下文的膨胀更陡。

9.4 “Sora 的完整架构已经公开”

没有。技术报告明确写着不包含模型和实现细节,只公开了 spacetime patch 表示方式和部分能力/局限的定性描述。


十、下一步

模型内部算出的是分布,最终要变成用户看到的具体输出。图像扩散这一步是逐步去噪得到像素;语言模型这一步靠解码策略从 logits 里选出 token。下一篇回到语言模型,讲贪心、Beam Search、温度采样、top-k/top-p 这几种解码策略背后的几何直觉,以及为什么解码不是模型外面的小细节。


十一、参考文献

核心论文

  1. Ho, J., Jain, A., Abbeel, P. “Denoising Diffusion Probabilistic Models.” NeurIPS 2020. arXiv:2006.11239.
  2. Rombach, R., Blattmann, A., Lorenz, D., Esser, P., Ommer, B. “High-Resolution Image Synthesis with Latent Diffusion Models.” CVPR 2022. arXiv:2112.10752.
  3. Dhariwal, P., Nichol, A. “Diffusion Models Beat GANs on Image Synthesis.” NeurIPS 2021. arXiv:2105.05233.
  4. Peebles, W., Xie, S. “Scalable Diffusion Models with Transformers.” ICCV 2023. arXiv:2212.09748.
  5. Hoogeboom, E., Heek, J., Salimans, T. “simple diffusion: End-to-end diffusion for high resolution images.” ICML 2023. arXiv:2301.11093.
  6. Esser, P. et al. “Scaling Rectified Flow Transformers for High-Resolution Image Synthesis.” ICML 2024. arXiv:2403.03206.

视频生成

  1. Ma, X. et al. “Latte: Latent Diffusion Transformer for Video Generation.” arXiv:2401.03048, 2024(未经同行评审的 arXiv 版本,另有 TMLR 2025 录用版本).
  2. VDT: General-purpose Video Diffusion Transformers via Mask Modeling. 项目页 vdt-2023.github.io,2023。
  3. OpenAI. “Video generation models as world simulators.” 技术报告,2024 年 2 月。
  4. Liu, Y. et al. “Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models.” arXiv:2402.17177, 2024(未经同行评审的第三方综述,非 OpenAI 官方材料).

辅助

  1. Ho, J., Salimans, T. “Classifier-Free Diffusion Guidance.” NeurIPS 2021 Workshop on Deep Generative Models and Downstream Applications.
  2. Ronneberger, O., Fischer, P., Brox, T. “U-Net: Convolutional Networks for Biomedical Image Segmentation.” MICCAI 2015.

← 上一篇:46|多模态融合 | 下一篇:48|从 logits 到文本

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-08-06 · transformer

【Transformer 与注意力机制】39|T5:把所有 NLP 任务塞进 Text-to-Text,代价在哪里

T5 把翻译、分类、摘要、问答都改写成统一的文本到文本任务,但这个接口不是免费的。本文拆开 span corruption 的 corruption rate 和平均 span 长度旋钮、T5 论文的原始消融数字、任务前缀如何变成模型的格式捷径、C4 清洗规则本身携带的归纳偏置,以及 Encoder-Decoder 在推理服务上的结构性代价,并给出 Text-to-Text 是否该覆盖分类与检索这条至今没有定论的争论线。

2026-08-06 · transformer

【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only

Encoder-only、Encoder-Decoder、Decoder-only 的差异不是谁更聪明,而是谁能看见谁的信息流不变量。本文从可见性图出发,解释这个不变量如何锁死任务接口与训练管线,KV Cache、continuous batching、投机解码为什么默认假设单流 causal Decoder,以及 embedding、rerank、强制双向抽取场景为什么不该硬上生成式大模型。


By .