MInference

MInference

动态稀疏注意力加速长上下文语言模型

MInference是一项新技术,通过利用长上下文语言模型注意力机制的动态稀疏性来加速预填充过程。该技术离线确定注意力头的稀疏模式,在线近似稀疏索引,并使用优化内核动态计算注意力。在A100 GPU上,MInference实现了预填充速度提升10倍,同时保持模型准确性。它支持LLaMA-3、GLM-4等多种长上下文模型,有效处理百万级别token的上下文。

MInference大语言模型动态稀疏注意力长文本处理性能优化Github开源项目
<p align="center"> <picture> <img alt="MInference" src="https://yellow-cdn.veclightyear.com/835a84d5/cf48c063-250b-44f1-a724-6961a3b8c4e3.png" width=70%> </picture> </p> <h2 align="center">MInference: 长上下文大语言模型的百万级令牌提示推理</h2> <p align="center"> | <a href="https://aka.ms/MInference"><b>项目主页</b></a> | <a href="https://arxiv.org/abs/2407.02490"><b>论文</b></a> | <a href="https://huggingface.co/spaces/microsoft/MInference"><b>HF演示</b></a> | </p>

https://github.com/microsoft/MInference/assets/30883354/52613efc-738f-4081-8367-7123c81d6b19

现在,您可以使用单个A100处理100万上下文的速度提高10倍,同时使用像LLaMA-3-8B-1M、GLM-4-1M这样的长上下文大语言模型,甚至精度更高,立即尝试MInference 1.0吧!

新闻

  • 🥤 [24/07/24] MInference现已支持meta-llama/Meta-Llama-3.1-8B-Instruct
  • 🪗 [24/07/07] 感谢@AK的赞助。您现在可以在HF演示中使用ZeroGPU在线体验MInference。
  • 📃 [24/07/03] 由于arXiv的问题,PDF目前无法在那里获取。您可以在此链接找到论文。
  • 🧩 [24/07/03] 我们将在ICML'24的_微软展台ES-FoMo_上展示MInference 1.0。维也纳见!

简介

MInference 1.0利用大语言模型注意力机制的动态稀疏性(具有一些静态模式)来加速长上下文大语言模型的预填充。它首先离线确定每个注意力头属于哪种稀疏模式,然后在线近似稀疏索引,并使用最优的自定义内核动态计算注意力。这种方法在A100上实现了预填充速度提升多达10倍,同时保持精度。

🎥 概览

MInference概览

🎯 快速开始

要求

  • Torch
  • FlashAttention-2(可选)
  • Triton == 2.1.0

要开始使用MInference,只需使用pip安装:

pip install minference

支持的模型

通用MInference 支持任何解码大语言模型,包括LLaMA风格的模型和Phi模型。 我们已经适配了市场上几乎所有可用的开源长上下文大语言模型。 如果您的模型不在支持列表中,请随时在问题中告诉我们,或者您可以按照指南手动生成稀疏头配置。

您可以通过运行以下命令获取支持的大语言模型的完整列表:

from minference import get_support_models get_support_models()

目前,我们支持以下大语言模型:

如何使用MInference

对于HF,

from transformers import pipeline +from minference import MInference pipe = pipeline("text-generation", model=model_name, torch_dtype="auto", device_map="auto") # 添加MInference模块, # 如果使用本地路径,请在初始化MInference时使用HF的model_name。 +minference_patch = MInference("minference", model_name) +pipe.model = minference_patch(pipe.model) pipe(prompt, max_length=10)

对于vLLM,

目前,请使用vllm>=0.4.1

from vllm import LLM, SamplingParams + from minference import MInference llm = LLM(model_name, max_num_seqs=1, enforce_eager=True, max_model_len=128000) # 添加MInference模块, # 如果使用本地路径,请在初始化MInference时使用HF的model_name。 +minference_patch = MInference("vllm", model_name) +llm = minference_patch(llm) outputs = llm.generate(prompts, sampling_params)

仅使用内核,

from minference import vertical_slash_sparse_attention, block_sparse_attention, streaming_forward attn_output = vertical_slash_sparse_attention(q, k, v, vertical_topk, slash) attn_output = block_sparse_attention(q, k, v, topk) attn_output = streaming_forward(q, k, v, init_num, local_window_num)

对于本地gradio演示 <a href='https://github.com/gradio-app/gradio'><img src='https://img.shields.io/github/stars/gradio-app/gradio'></a>

git clone https://huggingface.co/spaces/microsoft/MInference cd MInference pip install -r requirments.txt pip install flash_attn python app.py

更多详情,请参考我们的示例实验。您可以在这篇论文GitHub上找到更多关于动态编译器PIT的信息。

常见问题

如需更多见解和答案,请访问我们的常见问题部分

问题1:如何有效评估动态稀疏注意力对长上下文大语言模型能力的影响? 为了评估像LLaMA-3-8B-Instruct-1M和GLM-4-9B-1M这样的长上下文LLM的能力,我们测试了:1) 使用RULER测试上下文窗口,2) 使用InfiniteBench测试一般任务,3) 使用Needle in a Haystack测试检索任务,以及4) 使用PG-19测试语言模型预测。

我们发现传统方法在检索任务中表现不佳,难度级别如下:<font color="#337ab7"><b>KV检索 > Needle in a Haystack > 数字检索 > 密码检索</b></font>。主要挑战在于针与干草堆之间的语义差异。当这种差异较大时,传统方法表现更好,如在密码任务中。KV检索需要更高的检索能力,因为任何键都可能是目标,而多针任务更加复杂。

我们将在未来版本中继续更新更多模型和数据集的结果。

问题2:这种动态稀疏注意力模式是否只存在于未完全训练的长上下文LLM中?

首先,注意力本质上是动态稀疏的,这是该机制固有的特征。我们选择了最先进的长上下文LLM,GLM-4-9B-1M和LLaMA-3-8B-Instruct-1M,它们的有效上下文窗口分别为64K和16K。使用MInference,这些可以分别扩展到64K和32K。我们将继续调整我们的方法以适应其他先进的长上下文LLM并更新结果,同时探索这种动态稀疏注意力模式的理论基础。

问题3:这种动态稀疏注意力模式是否只存在于自回归语言模型或基于RoPE的LLM中?

类似的垂直和斜线稀疏模式已在BERT[1]和多模态LLM[2]中被发现。我们对T5注意力模式的分析(如图所示)揭示了这些模式在不同头部中持续存在,即使在双向注意力中也是如此。 [1] SparseBERT: Rethinking the Importance Analysis in Self-Attention, ICML 2021. [2] LOOK-M: Look-Once Optimization in KV Cache for Efficient Multimodal Long-Context Inference, 2024.

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/21415bec-4c1b-4a61-970e-4d0f0f64696e.png" width="600px" style="margin:auto;border-radius: 5px;display: inline-block;padding: 0 0 0 10px;" alt=''> </p> <p align="center">图1. T5编码器中的稀疏模式。</p>

问题4:MInference、SSM、线性注意力和稀疏注意力之间的关系是什么?

这四种方法(MInference、SSM、线性注意力和稀疏注意力)都有效地优化了Transformer中的注意力复杂度,但各自以不同方式引入了归纳偏置。后三种方法需要从头开始训练。最近的工作如Mamba-2和统一隐式注意力表示将SSM和线性注意力统一为静态稀疏注意力,其中Mamba-2本身就是一种分块稀疏方法。虽然这些方法由于注意力中的稀疏冗余而显示出潜力,但静态稀疏注意力可能难以处理复杂任务中的动态语义关联。相比之下,动态稀疏注意力更适合管理这些关系。

引用

如果您发现MInference对您的项目和研究有用或相关,请引用我们的论文:

@article{jiang2024minference, title={MInference 1.0: Accelerating Pre-filling for Long-Context LLMs via Dynamic Sparse Attention}, author={Jiang, Huiqiang and Li, Yucheng and Zhang, Chengruidong and Wu, Qianhui and Luo, Xufang and Ahn, Surin and Han, Zhenhua and Abdi, Amir H and Li, Dongsheng and Lin, Chin-Yew and Yang, Yuqing and Qiu, Lili}, journal={arXiv preprint arXiv:2407.02490}, year={2024} }

贡献

本项目欢迎贡献和建议。大多数贡献需要您同意贡献者许可协议(CLA),声明您有权并实际授予我们使用您贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。

当您提交拉取请求时,CLA机器人将自动确定您是否需要提供CLA,并适当地修饰PR(例如,状态检查、评论)。只需按照机器人提供的说明操作即可。您只需在所有使用我们CLA的仓库中执行一次此操作。

本项目已采用Microsoft开源行为准则。有关更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com获取任何其他问题或意见。

商标

本项目可能包含项目、产品或服务的商标或标志。Microsoft商标或标志的授权使用必须遵循Microsoft的商标和品牌指南。在本项目的修改版本中使用Microsoft商标或标志不得引起混淆或暗示Microsoft赞助。任何第三方商标或标志的使用均受这些第三方的政策约束。

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

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

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

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多