这项微软研究允许开发人员在单卡机上使用 10 倍速处理超过 1m 输入文本。
大型语言模型 (LLM) 已进入长上下文处理时代,其支持的上下文窗口已从以前开始 128K 猛增到 10M token 级别。然而,由于注意机制的二次复杂性,模型处理输入提示(即预填充阶段)开始产生第一个 token 可能需要几分钟。导致第一个。 token 生成时间过长,严重影响用户体验,极大地限制了上下文 LLM 广泛应用。?例如(如图 2a 所示),安装在单台 A100 的机器上为 LLaMA-3-8B 提供服务时,如果有提示 30 万个 token,模型需要 6 预填只能在几分钟内完成( pre-filling)如果提示增加到阶段, 100 万个 token,这个数字会增加到 30 分钟。自注意力计算的费用占总预填充延迟的比例 90% 以上,这使它成为 LLM 处理长上下文的主要瓶颈。现有的加速预填方法应用于长上下文 LLM 通常无法保持可接受的准确性或效率。为了解决上述问题,微软和萨里大学的研究人员提出了一种稀疏的计算方法,旨在加快长序列预填充的处理:MInference( Milliontokens Inference )。
- 论文地址:https://arxiv.org/pdf/2407.02490
- 论文主页:https://hqjiang.com/minference.html
- 论文标题:MInference 1.0: Accelerating Pre-filling for Long-Context LLMs via Dynamic Sparse Attention
MInference 可直接应用于现有 LLM,无需修改预训练设置或额外微调。对各种下游任务(包括各种下游任务(包括 InfiniteBench、RULER、PG-19 和 Needle In A Haystack)以及模型(包括 LLaMA-3-1M、Yi-200K、GLM-4-1M、Phi-3-128K 和 评估Qwen2-128K,实验证明 MInference 可有效将 A100 预填充推理延迟减少多达 10 同时保持准确性。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用 MInference 1.0 ,长上下文 LLM(如 LLaMA-3-8B-1M、GLM-4-1M)在单个 A100 实现了上推理速度 10 倍增,精度更高。作者提出了 MInference,这个名字反映了他们对一个名字的希望 A100 在机器上实现数百万(million)token 推理的雄心。MInference 基于动态稀疏注意力的长上下文,是一种无需训练的高效方法 LLM 预填充阶段。研究人员认为,注意力,特别是在上下文中,是稀疏和动态的,也就是说,稀疏模式在不同的输入中非常不同。这种动态稀疏显示了三种独特的空间聚合模式,适用于所有输入:A 形(A-shape)、垂直 - 斜线(Vertical-Slash)和块状 - 稀疏(Block-Sparse)。MInference 首先,使用内核感知稀疏模式搜索算法确定每个头部离线的最佳动态稀疏模式,如算法 1 所示。在推理过程中,它会根据头部模式动态接近动态稀疏指数,如算法 2、3 所示。最后,作者使用了优化 GPU 内核实施高效的动态稀疏注意力计算,大大降低了长上下文 LLM 延迟预填充阶段。例如,对于「垂直 - 斜线」作者首先使用最后一种模式 Q 和 K 对垂直线和斜线的最佳指数进行注意力计算。然后他们使用动态稀疏编译器 PIT 和 Triton 构建垂直 - 斜线 FlashAttention 内核,加速注意力计算。对于 A 形、垂直 - 斜线和块状 - 作者首先在注意力计算中使用稀疏模式 Q 和 K 的均值池。使用均值池和 MatMul 可估算块状交换属性 - 稀疏指数。然后,它们被使用 Triton 构建块稀疏 FlashAttention 内核,加速注意力计算。详细实现相关内核,请参考附录 C.4 和代码。作者在一系列场景中进行了测试 MInference,包括 QA、编码,基于检索的任务,multi-hop QA、总结和数学任务。RULER 基准包括几个复杂的 multi-hop 或 multi-needle 有效地反映了任务 LLM 实际上下文窗口的大小。如表 1 所示,MInference 有效保留 LLM 实际上,下文窗口的处理能力甚至略微扩大了实际上下文窗口的大小 32K。作者也使用平均水平 token 长度为 214K 的 InfiniteBench 在更广泛的任务中进行测试 MInference,如表 2 所示。与 SoTA 基线相比,MInference 在所有任务中始终保持良好的性能。值得注意的是,在更具挑战性的检索任务(如 KV 在检索任务中,所有基线都无法准确预测,准确率低于 1.2%。但是,MInference 成功保留了处理动态 KV 检索能力。为了进一步评估提示中不同上下文长度和关键信息的性能,作者使用了它「大海捞针」任务测试了各种模型和方法。如图 1 所示,MInference 与原始模型相比,在不同模型、上下文窗口和提示信息位置表现良好,性能保持不变甚至略有提高。在 LLaMA-3-8B 和 GLM-4-9B-1M 的情况下,MInference 在高达 1M 完全绿色的性能在上下文窗口中实现。相比之下,即使是在 70K 在上下文窗口中,StreamingLLM 和 InfLLM 在提示的中间段性能也会下降到 20% 以下。作者还使用 PG-19 在语言模型任务中进行测试 MInference,包括多达 100k 的 token。如图 2 所示,MInference 有效维护 LLaMA-3-8B 和 Yi-9B-200K 混乱,所有基线都有不同程度的混乱。另外,与标准有关 StreamingLLM 相比之下,采用膨胀和步长配置 StreamingLLM 更好地保持混乱的性能。图 3 本文提出了三种注意力模式 FlashAttention 微基准测试结果。可见,Vertical-Slash 它是三种模式中最慢的,但在 1M 与上下文窗口相比 FlashAttention 仍然实现了 13 倍的加速。图 4 展示了 Vertical-Slash 头部核心中的稀疏索引。垂直线通过 PIT FlashAttention 使用 1x64 块计算,斜线通过块级计算 FlashAttention 使用 64x64 块计算。参考链接:https://hqjiang.com/minference.html以上是单卡A100实现百万token推理,速度快10倍。这是微软官方大模型推理加速的详细内容。请关注其他相关文章!
p