串决策者:为什么不是编码器?
专业水平:疲惫。如我在上一篇文章中承认的,我非常不是一个专业的模型开发者。接下来所描述的内容可能至少在某种程度上是不准确的。我试着小心和量化,以在一定程度上弥补缺乏深厚专业知识的问题。自从我们上周推出 strands-decider-2B 以来,有几个人问我为什么它是一个修改过的 LLM,而不是一个编码器(像 BERT)。他们的直觉似乎是双向(即每个标记的表示是从其前后的标记构建的)可能优于因果(即仅使用前面的标记)。这也是编码器广泛用作分类器的原因。这是一个合理的问题,因为如果你仔细观察,我们实际上是将解码器当作编码器来使用。为了测试这个假设,我比较了五种设计:v19 是基于 Qwen3.5 的 strands-decider 的最终设计(详细信息请查看上一篇文章和 strands-decider 的 README)。b1 是一种编码器-解码器设计(如原始的 Transformer),基于 T5Gemma 2,具有 10 亿编码器参数和 10 亿解码器参数,没有 LM 头,而是加上了我们的指针头。b2 与 b1 相同,但为 40 亿 + 40 亿。e1a 仅是 T5Gemma(不是 T5Gemma 2)的编码器部分,具有 26 亿参数。e1b 是 e1a 的延迟优化版本,具有掩蔽状态缓存,允许多个问题在没有干扰的情况下并行评估,并使状态缓存可以重用。状态以双向方式关注整个状态,每个问题关注于状态和自身。我还测量了冻结的 ModernBERT 和 ettin-encoder-1b,但发现它们在参数对参数的表现上不如 T5Gemma,因此没有投入时间来训练它们。首先,我们来看看准确性和校准。这里 b2 表现得很好,在 JevBench 的准确性和 Brier 分数上胜过 v19,在相同准确性下的 JF100 Brier 分数上也表现良好。这很好,但请记住,b2 的总参数约为 80 亿,而 v19 的总参数为 20 亿,因此这不能简单地进行直接比较。真正有趣的比较是 v19 和 e1b。e1b 在 JevBench 准确性上稍微胜过 v19(但在 v19 的运行间变异范围内),校准稍差,并且在 JF100 上的校准相同,但表现稍弱。目前来看,这并不是编码器的压倒性胜利。接下来,让我们看看延迟。仅编码器模型在延迟方面明显占优,中央値约为 35 毫秒,而 v19 为 65 毫秒。编码器-解码器模型则最慢。在延迟为一半、性能相似的情况下,e1b 看起来是一个大获胜者。但是,当我们深入数据时,事情变得更加复杂。在这里,我们看到 e1b 在较短的提示长度下明显胜出,但随着提示长度的增长,扩展表现变差。这与优秀的中位数表现是一致的。这是否重要取决于工作负载组合:JF100 和 JevBench 都趋向于小,这对 e1b 有利。这里的扩展差异可以归结为两个模型的计算成本:e1b 具有 26 个完全的注意层,随之而来的是相关的平方计算成本,而 v19 的 75% 层为 Gated DeltaNet,具有线性计算成本。这些层具有更高的固定成本,但更好的渐进成本,导致更高的延迟底线。最后,让我们看一个有趣的子图,回到 e1a(我们未掩蔽的 26 亿编码器候选)。在评估集上,它在九个任务中有七个超越了 v19,并且在两个任务上表现得略微落后。但在 JevBench 上它表现明显较差(153 对 168),在 JF100 上也略微落后(158 对 162)。这表明编码器的泛化能力较差,至少是在 e1b 采用的掩蔽方法下。能够在读取状态时关注问题真的算是一个弱点吗?评估集 v19 e1a Δ 被保留的短任务 0.647 0.695 +0.048 MuSiQue 0.882 0.948 +0.066 ContractNLI 0.873 0.864 −0.009 BoardgameQA 0.820 0.884 +0.064 HotpotQA(被保留) 0.719 0.748 +0.029 生成的,v16 的 0.857 0.851 −0.006 生成的,v18 的 0.777 0.786 +0.009 适当性,HelpSteer2 0.722 0.761 +0.039 适当性,生成的数据,平衡 0.788 0.821 +0.033 那么关于编码器与解码器的问题,我们处于什么位置呢?我担心离真相并不太近。这个实验充满了混淆,改变了架构、基础模型、指令调整与基础比较,以及其他变量。但我们学到了一些有趣的东西。就这个规模的工作而言,没有哪个看起来是压倒性的赢家。这个实验的代码暂时在一个分支中。现在看来,不值得将其合并到主线 strands-decider 中,但经过一些开发可能会有变化。脚注:一些解码器的想法悄然回归。解码器出于同样的原因也做了同样的技巧(KV 缓存和前缀缓存)。毫无疑问,增量结果的备忘没有第一次那么有助于性能。毫无疑问,这不是第一次 $O(N^2)$ 算法在小数据规模上战胜 $O(N)$ 的算法。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡