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赞助。任何第三方商标或标志的使用均受这些第三方的政策约束。

编辑推荐精选

讯飞智文

讯飞智文

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

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

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

讯飞星火

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

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

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

Spark-TTS

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

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

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

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

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

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

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多