在 ChatGPT 爆火两年多的时间里,大语言模型的上下文窗口长度基准线被拉升,以此为基础所构建的长 CoT 推理、多 Agent 协作等类型的高级应用也逐渐增多。
随之而来的是,长文本推理速度被提出更高要求,而基于现有 Transformer 架构的模型受限于注意力机制的二次方复杂度,难以在较短时延内处理超长文本请求。
针对这一痛点,清华大学 NLP 实验室联手中南大学、北京邮电大学以及腾讯微信 AI 实验室取得了突破,共同提出了 APB 框架 —— 其核心是一个整合了稀疏注意力机制的序列并行推理框架,通过整合局部 KV 缓存压缩方式以及精简的跨 GPU 通信机制,解决了长上下文远距离语义依赖问题,在无性能损失的前提下大幅度提升超长文本预填充的效率。
在 128K 文本上,APB 能够出色地平衡性能与速度,达到相较于传统 Flash Attention 约 10 倍的加速比,在多种任务上甚至具有超越完整 Attention 计算的性能;与英伟达提出的同为分布式设定下的 Star Attention 相比,APB 也能达到 1.6 倍加速比,在性能、速度以及整体计算量上均优于 Star Attention。
这一方法主要用于降低处理长文本请求的首 token 响应时间。未来,APB 有潜力运用在具有低首 token 响应时间要求的模型服务上,实现大模型服务层对长文本请求的高效处理。
长文本预填充的效率受到计算的制约。由于注意力机制的计算量与序列长度呈二次方关系,长文本的计算通常是计算瓶颈的。主流加速长文本预填充的路线有两种,提升并行度和减少计算:
然而,简单地提升并行度和减少计算并不能在加速长文本预填充上取得足够的效果。若要将二者结合又具有极大挑战,这是因为稀疏注意力机制中,决定计算何处注意力通常需要完整输入序列的信息。在序列并行框架中,每个 GPU 仅持有部分 KV 缓存,无法在不通过大规模通信的前提下获得足够的全局信息来压缩注意力的计算。
针对这一问题,有两个先驱方法:一是英伟达提出的 Star Attention ,直接去除了序列并行中的所有通信,并只计算每个 GPU 上局部上下文的注意力,但这样计算也导致了很大程度的性能损失;二是卡内基梅隆大学提出的 APE,关注 RAG 场景下长文本预填充加速,通过将上下文均匀分割、对注意力进行放缩和调整 softmax 温度,实现并行编码,同样在需要远距离依赖的场景上有一定的性能损失。
区别于上述方法,APB 通过设计面向序列并行场景的低通信稀疏注意力机制,构建了一个更快、性能更好,且适配通用长文本任务的长文本加速方法。
相较于之前的研究,APB 通过如下方法提出了一种面相序列并行框架的稀疏注意力机制:
以此机制为基础,APB 的推理过程如下:
团队使用 Llama-3.1-8B-instruct, Qwen-2.5-14B-instruct 以及 Yi-34B-200K 模型在 InfiniteBench 和 RULER 上进行了测试,测量任务性能(%)以及处理完整长文本请求的推理速度(tok /s)。研究人员选择 Flash Attention, Ulysses, Ring Attention, MInference 以及 Star Attention 作为基线算法,实验结果如下:
从上图可见,Flash Attention 作为无序列并行的精准注意力算法,具有较好的任务性能,但推理速度最慢;Ring Attention 和 Ulysses 作为序列并行的精准注意力算法,通过增加并行度的方式提升了推理速度;MInference 是一种无序列并行的稀疏注意力机制,表现出了一定的性能损失;Star Attention 作为序列并行与稀疏注意力结合的最初尝试,具有较好的推理速度,然而表现出了显著的性能下降。
相较于基线算法,APB 在多种模型和任务上表现出更优的性能和更快的推理速度。这意味着,APB 方法能够实现最好的任务性能与推理速度的均衡。
除此之外,研究人员在不同长度的数据上测量了 APB 与基线算法的性能、速度,并给出了整体计算量,结果如下:
可以从上图中看到,APB 在各种输入长度下均表现出更优的任务性能与推理速度。速度优势随着输入序列变长而变得更加明显。APB 相较于其他方法更快的原因是它需要更少的计算,且计算量差异随着序列变长而加大。
并且,研究人员还对 APB 及基线算法进行了预填充时间拆解分析,发现序列并行可以大幅度缩减注意力和 FFN 时间。
通过稀疏注意力机制,APB 能进一步缩减注意力时间。Star Attention 由于使用了过大的 anchor block,其 FFN 的额外开销十分明显,而 APB 由于使用了 passing block 来传递远距离语义依赖,能够大幅度缩小 anchor block 大小,从而降低 FFN 处的额外开销。
APB 支持具有卓越的兼容性,能适应不同分布式设定(显卡数目)以及不同模型大小,在多种模型和分布式设定下均在性能与推理速度上取得了优异的效果。
黄宇翔,清华大学四年级本科生,THUNLP 实验室 2025 年准入学博士生,导师为刘知远副教授。曾参与过 MiniCPM、模型高效微调、以及投机采样研究项目。主要研究兴趣集中在构建高效的大模型推理系统,关注模型压缩、投机采样、长文本稀疏等推理加速技术。
李明业,中南大学三年级本科生,2024 年 6 月份加入 THUNLP 实验室实习,参与过投机采样研究项目。主要研究兴趣集中在大模型的推理加速,例如投机采样以及长文本推理加速等。
文章来自于“机器之心”,作者“机器之心编辑部”。
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner