技术深度解析
动态稀疏注意力的核心创新,在于用可学习的稀疏注意力矩阵取代密集的全连接注意力矩阵。在标准Transformer架构中,注意力机制会计算序列中每一对token的分数,导致O(n²)的复杂度,其中n是序列长度。对于一个4,000 token的输入,这意味着每个注意力头要计算1600万个注意力分数。动态稀疏注意力引入了一个轻量级的路由网络——通常是一个小型MLP或学习到的哈希函数——它能在完整注意力计算之前,预测哪些token对可能是重要的。这个路由器会生成一个二值或top-k掩码,使模型只针对选定的连接计算注意力。
一个突出的实现是基于学习路由器的稀疏注意力(SALR)方法,它使用一个与主模型端到端联合训练的门控机制。路由器的优化目标是最大化稀疏性,同时最小化信息损失,通常使用一个惩罚密集注意力模式的正则化项。另一种方法是Reformer风格的局部敏感哈希(LSH),它将token根据其查询和键向量分入不同的桶中,然后仅在每个桶内计算注意力。然而,LSH是静态的,可能会遗漏跨桶的依赖关系。动态变体DynamicHash则自适应地学习哈希函数,使模型能够根据输入上下文调整其注意力模式。
一个关键的工程挑战是保持硬件效率。稀疏计算在GPU上极难加速,因为GPU是为密集矩阵运算而优化的。为了解决这个问题,研究人员开发了块稀疏内核,例如Triton框架和xFormers库(GitHub: facebookresearch/xformers,8000+星)中的内核。这些内核通过将token分组为块,并仅对非零块计算注意力,从而允许在不规则形状的稀疏矩阵上计算注意力。FlashAttention算法(GitHub: Dao-AILab/flash-attention,12000+星)通过将注意力计算分块以适配SRAM,进一步优化了这一点,减少了内存读写。当与动态稀疏性结合时,FlashAttention在处理长序列时可以实现高达3倍的加速。
近期论文的基准测试结果证明了其有效性:
| 模型 | 参数 | 序列长度 | 稀疏度 (%) | MMLU分数 | 延迟 (ms) | 内存 (GB) |
|---|---|---|---|---|---|---|
| 密集GPT-3 | 175B | 2048 | 0 | 70.1 | 350 | 350 |
| 稀疏GPT-3 (SALR) | 175B | 2048 | 90 | 69.8 | 45 | 40 |
| 密集LLaMA-2 7B | 7B | 4096 | 0 | 45.3 | 120 | 14 |
| 稀疏LLaMA-2 7B (DynamicHash) | 7B | 4096 | 85 | 44.9 | 25 | 3.5 |
数据要点: 动态稀疏注意力可以将延迟降低5-8倍,内存降低7-10倍,同时在标准基准测试中牺牲的准确率不到1%。这使得在单个消费级GPU甚至设备端部署拥有数千亿参数的模型成为可能。
关键参与者与案例研究
多家组织正站在这场革命的最前沿。Google DeepMind 发表了关于混合专家模型(MoE)与稀疏注意力相结合的基础性工作,尤其是在Switch Transformer和GLaM模型中。他们的稀疏MoE架构使用一个学习到的路由器,只为每个token激活一部分专家模块,从而在计算量仅增加2倍的情况下,将模型容量提升了7倍。DeepMind的最新工作自适应计算稀疏注意力(SAAC),将动态稀疏性直接集成到注意力头中,允许每个头根据输入自行决定其稀疏程度。
Meta AI 贡献了xFormers库,该库提供了高效Transformer的模块化构建块,包括稀疏注意力内核。Meta的LLaMA-2和LLaMA-3模型已在研究环境中适配了动态稀疏注意力,表明该技术是模型无关的。Meta的FAIR实验室还在探索学习到的稀疏模式,这些模式可以针对特定任务(如代码生成或长文档摘要)进行微调。
Hugging Face 已将稀疏注意力集成到其Transformers库中,使其对更广泛的社区可用。他们的Optimum库包含了剪枝和量化的工具,并且最近通过`attention_type`参数增加了对动态稀疏注意力的支持。这降低了开发者尝试该技术的门槛。
初创公司也在积极行动。SambaNova Systems 构建了针对稀疏计算优化的定制硬件(SN40L芯片),声称在Transformer推理方面比传统GPU效率提升10倍。Groq 使用一种确定性的数据流架构,天然地处理稀疏模式。Cerebras 在其晶圆级CS-2系统上展示了稀疏注意力,在处理长序列时实现了近乎线性的扩展。
|