Quest

Quest

长文本LLM推理的查询感知稀疏化框架

Quest是一个创新的长文本LLM推理框架,通过在KV缓存中应用查询感知稀疏化技术,显著减少了注意力计算中的内存移动。该框架跟踪缓存页面的Key值范围,并利用Query向量评估页面重要性,仅加载最关键的KV缓存页面。实验表明,Quest可将自注意力计算速度提升至7.03倍,推理延迟降低2.23倍,同时在长依赖任务中保持高精度。

长上下文LLM推理稀疏性KV缓存注意力机制QuestGithub开源项目

Quest: 面向高效长文本LLM推理的查询感知稀疏性

[论文] [海报] [幻灯片]

概要

Quest是一个高效的长文本LLM推理框架,利用KV缓存中的查询感知稀疏性来减少注意力计算过程中的内存移动,从而提高吞吐量。

摘要

随着对长文本大型语言模型(LLMs)需求的增加,具有高达128k或1M令牌上下文窗口的模型变得越来越普遍。然而,长文本LLM推理具有挑战性,因为随着序列长度的增加,推理速度显著降低。这种减速主要是由于在自注意力计算过程中加载大型KV缓存造成的。先前的研究表明,少量关键令牌将主导注意力结果。然而,我们观察到令牌的重要性高度依赖于查询。

为此,我们提出了Quest,一种查询感知的令牌重要性估计算法。Quest跟踪KV缓存页面中的最小和最大Key值,并使用Query向量估计给定页面的重要性。通过仅加载Top-K关键KV缓存页面进行注意力计算,Quest显著加速了自注意力计算,而不牺牲准确性。我们展示了Quest可以实现高达7.03倍的自注意力加速,将推理延迟减少2.23倍,同时在长依赖任务上表现良好,准确性损失可忽略不计。

安装

  1. 克隆此仓库(同时克隆子模块)
git clone --recurse-submodules https://github.com/mit-han-lab/quest
cd quest
  1. 安装依赖库
conda create -yn quest python=3.10
conda activate quest
pip install -e . && pip install flash-attn==2.3.0 --no-build-isolation

# 安装CMake(版本 >= 3.26.4)
conda install cmake

# 构建libraft
cd kernels/3rdparty/raft
./build.sh libraft
  1. 编译内核基准测试(可选)。记得配置CUDA的环境变量(查看教程)。
cd kernels
mkdir build && cd build
cmake ..
make -j
  1. 使用PyBind构建端到端操作符
# 这将自动构建和链接操作符
cd quest/ops
bash setup.sh

准确性评估

我们的评估基于LongChat-7B-v1.5-32KYarn-Llama2-7B-128K模型,这些模型能够处理长文本生成。我们评估了密钥检索和LongBench基准测试。我们提供了几个脚本来重现论文中的结果:

要获取密钥检索结果,请修改并执行:

bash scripts/passkey.sh

要重现LongBench结果,请修改并执行:

bash scripts/longbench.sh

要评估PG-19的困惑度结果,请执行:

bash scripts/ppl_eval.sh

效率评估

内核和端到端效率评估在NVIDIA Ada6000和RTX4090 GPU上进行,CUDA版本为12.4。我们提供了几个脚本来重现论文中的结果:

内核级效率

我们还发布了用于内核实现的单元测试和基准测试。内核的正确性通过kernels/src/test中的单元测试进行验证,而性能则通过kernels/src/bench中的NVBench进行评估。我们还在quest/tests中使用PyTest通过PyTorch结果测试了PyBind操作符的正确性。

要测试内核的正确性,请执行:

cd kernels/build
./test_batch_decode # 或任何其他操作符

或使用PyTest:

cd quest/tests
PYTHONPATH=$PYTHONPATH:../../ pytest

要重现论文中显示的内核性能,请执行:

cd kernels/build
./bench_batch_decode -a seqlen=4096 -a page_budget=[64,512]
# 或任何其他操作符

示例输出:

端到端效率

Quest可以实现高达2.23倍的端到端加速,同时在长依赖任务上表现良好,准确性损失可忽略不计:

我们将所有实现的操作符整合到一个完整的流程中,以评估文本生成的端到端效率。基于Huggingface Transformers,我们启用了一个支持查询感知稀疏性的KV缓存管理器,如quest/models/QuestAttention.py所示。

要重现图10中的端到端效率结果,请执行:

bash scripts/bench_efficiency_e2e.sh

对于基线的定性分析,我们使用FlashInfer内核来估计H2O和TOVA的性能。要重现图11中的结果,请执行:

bash scripts/bench_kernels.sh

示例

我们提供了几个示例来演示Quest的使用。这些示例使用Quest操作符的端到端集成实现,可以通过以下命令执行(请确保您已设置好所有操作符):

python3 scripts/example_textgen.py

LongChat-7B-v1.5-32K模型下长文本摘要的示例输出:

您还可以尝试scripts/example_demo.py来测试Quest在您自己的文本生成任务上的性能。我们提供了一个简单的接口来加载模型并使用Quest操作符生成文本。上面的演示是一个使用32K输入在FP16 LongChat-7B-v1.5-32K上的示例。使用2048令牌预算的Quest比完整缓存FlashInfer版本实现了1.7倍的加速。

待办事项

  • 支持GQA模型

参考

如果您发现这个项目对您的研究有帮助,请考虑引用我们的论文:

@misc{tang2024quest,
      title={Quest: Query-Aware Sparsity for Efficient Long-Context LLM Inference}, 
      author={Jiaming Tang and Yilong Zhao and Kan Zhu and Guangxuan Xiao and Baris Kasikci and Song Han},
      year={2024},
      eprint={2406.10774},
      archivePrefix={arXiv},
      primaryClass={id='cs.CL' full_name='Computation and Language' is_active=True alt_name='cmp-lg' in_archive='cs' is_general=False description='Covers natural language processing. Roughly includes material in ACM Subject Class I.2.7. Note that work on artificial languages (programming languages, logics, formal systems) that does not explicitly address natural-language issues broadly construed (natural-language processing, computational linguistics, speech, text retrieval, etc.) is not appropriate for this area.'}
}

相关项目

本代码库使用lm_eval来评估困惑度和零样本准确性。它还改编了来自H2OStreamingLLMPunica的代码片段。我们的内核基于FlashInfer(一个高性能且可扩展的LLM服务内核库)实现,并由NVBench进行测试。感谢我们社区的优秀工作!

H2O: 用于大型语言模型高效生成推理的重负荷预言器

TOVA: Transformers是多状态RNN

StreamingLLM: 具有注意力汇聚的高效流式语言模型

AWQ: 用于LLM压缩和加速的激活感知权重量化

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多