LLM 架构日益增长的复杂性
现代大语言模型 (LLMs) 已经从早期模型(如 Llama)中看到的简单、重复的 Transformer 模块,演变成高度复杂、复合的架构。这种转变是由增强能力的需求与对极端推理效率的要求之间的张力驱动的,这反映了推荐系统 (recsys) 的历史轨迹。
从简单堆叠到复合架构的转变
早期的 LLM 以整洁、平滑的相同模块堆叠为特征。然而,当前的尖端模型现在结合了多种多样的架构变体,以优化性能和效率。
现代 LLM 架构中集成的关键复杂性包括:
- Attention Variants: 模型不再依赖单一的注意力机制;它们现在利用 query grouping、compressed attention、sparse attention、linear attention 和 sliding-window attention。
- Routing Mechanisms: Mixture-of-Experts (MoE) 为前馈层引入了选择性路由,而路由现在正被应用于注意力块和残差流。
- Multimodal Integration: 视觉和音频编码器,以前是作为单独组件“螺栓连接”的,现在直接混合到模型架构中。
- Inference Scaling: 随着模型扩展到跨多个 GPU 运行,通信操作 (comms ops) 在模型结构内部引入了额外的边界和复杂性。
“Recsys” 类比:性能作为一种必然性
LLM 的演进正反映了推荐系统的经验。近十年来,recsys 架构一直是一种简单的双塔稀疏神经网络。复杂性之所以增长,是因为性能优化变得“承重”——这意味着如果没有特定的优化,模型会太慢或资源消耗过大而无法使用。
在 LLM 研究的背景下,性能作为一种可选优化与作为一种必然性的差距正在缩小。这为研究迭代循环带来了挑战:如果研究人员想要测试一种新的 attention variant,他们无法承受新版本比融合、优化的基准版本慢一个数量级的代价。为了确定一种新的架构变更是否值得探索,在研究可以进行之前,必须先存在该变更的部分优化版本。
为可组合性设计并引入 Kernel 的作用
为了避免为每种实验性架构手动融合 kernel 的瓶颈,业界正在转向预先进行可组合性设计。依赖 AI agent 自动从 PyTorch 或 JAX 定义中生成融合 kernel 是不够的,因为 agent 需要一个固定、可用的基准版本来验证生成的代码是否正确。
PyTorch 中的 FlexAttention
PyTorch 的 FlexAttention 被引用为可组合方法的一个主要示例。它允许开发者通过 Triton templates 生成广泛类别的注意力操作的 kernel。通过使注意力操作具有可组合性和可验证性,FlexAttention 使研究人员能够以仅对性能产生轻微影响的方式探索新的架构变体,从而绕过手动、耗时的 kernel fusion。
社区对架构演进的观点
虽然架构转变正在增加,但一些观察者指出,这遵循了“苦涩的教训”生命周期。一位社区成员建议说:
从特征工程到“苦涩的教训”的生命周期。当一种技术或技术是新的时,人们通过将其应用于某些用例中就能获得巨大的收益……随着时间的推移,这些“苦涩的教训”收益开始进入逻辑曲线的浅层部分,公司必须开始投入越来越多的精力进行工程化,以换取每一个微小的、增量的收益。
此外,一些批评者认为,将不同的 LLM 系列(如 Llama 3 和 Nemotron 3 Ultra)进行比较以突出复杂性,是不同设计选择的自然结果,而不是所有单一模型系列向复杂性的普遍趋势。