2026/4/4 8:22:01
网站建设
项目流程
旅游推荐网站怎么做,做网站前期工作,邯郸市地图高清版最新,响应式网站好吗本文探讨了大模型推理中显存溢出#xff08;OOM#xff09;的根源——KV Cache。为解决有限显存下的速度与并发瓶颈#xff0c;文章详解了四种主流优化技术#xff1a;利用FlashAttention减少内存访问加速计算#xff1b;通过PagedAttention#xff08;如vLLM#xff09…本文探讨了大模型推理中显存溢出OOM的根源——KV Cache。为解决有限显存下的速度与并发瓶颈文章详解了四种主流优化技术利用FlashAttention减少内存访问加速计算通过PagedAttention如vLLM实现显存动态管理采用MQA/GQA架构从源头降低KV Cache占用以及使用量化技术进一步压缩显存。掌握这些技术组合能显著提升推理服务的吞吐量与效率。引言假设你要部署一个 LLaMA-70B 的推理服务。第一个问题是显存够吗模型权重 140GBFP16一张 H100 80GB 显存装不下至少需要两张卡。好上了两张卡模型加载成功。开始推理第一个请求正常返回。但随着请求增多你发现显存占用持续上涨很快就 OOM 了。这时候你可能会问模型权重是固定的为什么显存还会涨答案是KV Cache——推理过程中缓存的中间状态。每生成一个 tokenKV Cache 就增长一点。请求越多、上下文越长KV Cache 占用越大。这就引出了大模型推理的核心挑战如何在有限的显存中让模型跑得更快、服务更多请求本文将沿着这个问题一步步介绍四种主流的优化技术。显存都去哪了在深入具体技术之前先搞清楚一个基础问题推理时显存都被什么占用了主要有三部分模型权重固定占用与模型大小成正比KV Cache动态增长与序列长度和并发请求数成正比中间激活值计算过程中的临时数据计算完成后释放对于推理服务来说模型权重是固定成本真正的变量是 KV Cache。以 LLaMA-70B 为例单个 token 的 KV Cache 约占 1.6MB。如果一个请求生成 4096 个 tokenKV Cache 就需要 6.5GB。10 个并发请求65GB。这还没算输入的 prompt 部分。所以优化大模型推理核心是两件事让计算更快减少每个 token 的生成时间让内存更省在相同显存下服务更多请求接下来的四种技术分别从不同角度解决这两个问题。技术详解一、FlashAttention让计算更快我们先从计算效率说起。Transformer 的核心是注意力计算公式很简单Attention(Q, K, V) softmax(QK^T / √d) × V但这个公式有个隐藏的性能陷阱。问题在哪计算 QK^T 会生成一个 N×N 的矩阵N 是序列长度。当 N8192 时单个注意力头的这个矩阵就需要 256MB。多头、多层叠加后显存占用爆炸式增长。但这还不是最大的问题。GPU 有两种存储高速缓存SRAM快但小和显存HBM大但慢。标准 Attention 的计算流程是从 HBM 加载 Q、K、V计算 QK^T写回 HBM从 HBM 加载计算 softmax写回 HBM从 HBM 加载与 V 相乘写回 HBM发现问题了吗数据在 HBM 和计算单元之间来回搬运了好几次。GPU 的计算速度极快但 HBM 的带宽是瓶颈。大量时间浪费在搬数据而不是算数据上。FlashAttention 的解法既然瓶颈是内存访问那就减少访问次数。FlashAttention 的核心思想是分块计算Tiling把 Q、K、V 切成小块每次只加载一小块到 SRAM在 SRAM 里完成所有计算只把最终结果写回 HBM。这里有个技术难点softmax 需要知道整行的数值才能计算因为要除以总和。分块之后每次只看到一部分怎么算答案是在线 Softmax通过数学技巧边算边更新最终结果和一次性算完全一致。效果如何内存占用从 O(N²) 降到 O(N)训练速度提升 2-4 倍PyTorch 2.0、Hugging Face Transformers 已内置支持FlashAttention 解决了计算效率问题。但还记得我们开头说的 KV Cache 问题吗FlashAttention 没有解决这个。二、PagedAttention让内存管理更高效FlashAttention 让单次计算更快了。但在实际的推理服务中还有一个工程问题KV Cache 的内存管理。问题在哪不同请求的序列长度不同有的请求只生成 100 个 token有的要生成 4000 个。而且生成是动态的一开始不知道最终会有多长。传统做法是预分配假设最大长度 2048为每个请求都预留 2048 tokens 的空间。这会导致严重的浪费。实际测量显示KV Cache 的有效利用率往往不足 50%。内存被白白占着本可以多服务几个请求。操作系统的启发这个问题操作系统早就解决过了。物理内存有限每个进程都想要大块连续内存。操作系统怎么做的虚拟内存 分页把内存分成固定大小的页按需分配进程看到的是连续地址实际物理位置可以不连续。PagedAttention 把这个思想搬到了 KV Cache 管理上核心机制固定大小的 Block把 KV Cache 划分为固定大小的块如 16 tokens/块动态分配用多少分配多少不预占Block Table维护逻辑地址到物理地址的映射非连续存储一个请求的 KV Cache 可以散落在不同位置vLLM 的实现vLLM 是 PagedAttention 的代表性实现效果显著内存利用率从不足 50% 提升到接近 100%吞吐量比 HuggingFace Transformers 提升 2-4 倍支持 Prefix Caching多请求共享相同前缀的 KV Cache到这里我们解决了两个问题FlashAttention 让计算更快PagedAttention 让内存管理更高效。但有没有办法从根源上减少 KV Cache 的大小三、MQA 与 GQA从架构层面减少 KV Cache前面两种技术是优化使用这种方法是减少需求。问题在哪标准 Transformer 使用 Multi-Head AttentionMHA每个注意力头都有独立的 Q、K、V。一个 32 头的模型KV Cache 要存 32 组 K 和 V。能不能让多个头共享 K、VMQA激进的共享MQAMulti-Query Attention的做法很激进所有 Q 头共享同一组 K、V。标准 MHA32 个 Q 头 32 个 K 头 32 个 V 头 MQA 32 个 Q 头 1 个 K 头 1 个 V 头KV Cache 直接减少到 1/32。但代价是模型质量有所下降。GQA平衡的选择GQAGrouped-Query Attention是折中方案把 Q 头分组每组共享一套 K、V。标准 MHA32 个 Q 头32 个 KV 头 GQA-8 32 个 Q 头8 个 KV 头每 4 个 Q 共享 1 个 KV GQA-4 32 个 Q 头4 个 KV 头每 8 个 Q 共享 1 个 KV MQA 32 个 Q 头1 个 KV 头实际应用LLaMA 2 70B使用 GQA-8Mistral使用 GQAGemma使用 MQAGQA 在效率和质量之间找到了平衡已成为大模型的主流选择。但要注意MQA/GQA 是模型架构层面的改动需要在训练时就确定。已训练好的 MHA 模型无法直接转换。到这里我们从计算、内存管理、架构三个层面优化了推理效率。还有没有进一步压缩的空间补充其他相关技术除了上述三大核心技术还有几种值得了解的优化方法。KV Cache 量化把 KV Cache 从 FP16 量化到 INT8 甚至 INT4内存占用减少 50%-75%可能有轻微精度损失vLLM、TensorRT-LLM 已支持Speculative Decoding投机解码大模型生成是自回归的每次只能生成一个 token是串行瓶颈。投机解码的思路用小模型快速猜多个 token再用大模型一次性验证。猜对了直接用猜错了回退。在不损失质量的情况下推理速度提升 2-3 倍需要小模型和大模型使用相同的分词方式Sliding Window Attention限制每个 token 只关注固定窗口内的上下文Mistral 使用 4096 的滑动窗口KV Cache 大小恒定不随序列长度增长代价是超出窗口的信息会丢失技术对比各技术特点对比回顾一下这些技术各自解决的问题FlashAttention解决问题注意力计算的内存访问瓶颈作用阶段训练 推理是否需要重新训练否主要收益减少显存峰值加速计算PagedAttention解决问题KV Cache 的内存碎片化作用阶段推理是否需要重新训练否主要收益提升内存利用率和并发能力MQA/GQA解决问题KV Cache 本身过大作用阶段训练 推理是否需要重新训练是主要收益从根源减少 KV Cache 占用KV Cache 量化解决问题KV Cache 精度冗余作用阶段推理是否需要重新训练否主要收益内存占用减少 50%场景适用性对比不同场景下推荐的技术组合高并发在线服务PagedAttention首选 KV Cache 量化长上下文应用RAG、文档问答FlashAttention PagedAttention Sliding Window Attention资源受限部署选用 GQA 架构的模型 KV Cache 量化模型训练FlashAttention必选 GQA 架构推荐低延迟场景Speculative Decoding FlashAttention技术组合建议这些技术并不互斥可以叠加使用训练阶段FlashAttention必选 GQA推荐推理阶段FlashAttention PagedAttention KV Cache 量化长序列场景上述全部 Sliding Window Attention总结让我们回到开头的问题如何在有限的显存中让模型跑得更快、服务更多请求这篇文章介绍的四种技术从不同层面给出了答案FlashAttention优化计算过程减少内存访问让每次计算更快。PagedAttention优化内存管理消除碎片浪费让相同显存服务更多请求。GQA优化模型架构从根源减少 KV Cache让内存需求本身变小。量化优化数据精度在可接受的精度损失下进一步压缩内存占用。如果你在训练模型FlashAttention 是必选项架构上考虑 GQA。如果你在部署推理服务直接用 vLLM 或 TensorRT-LLM它们已经集成了大部分优化。这些技术的出现让大模型从实验室走向生产环境成为可能。理解它们的原理有助于在实际工程中做出更合理的决策。如何系统的学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。一直在更新更多的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】01.大模型风口已至月薪30K的AI岗正在批量诞生2025年大模型应用呈现爆发式增长根据工信部最新数据国内大模型相关岗位缺口达47万初级工程师平均薪资28K数据来源BOSS直聘报告70%企业存在能用模型不会调优的痛点真实案例某二本机械专业学员通过4个月系统学习成功拿到某AI医疗公司大模型优化岗offer薪资直接翻3倍02.大模型 AI 学习和面试资料1️⃣ 提示词工程把ChatGPT从玩具变成生产工具2️⃣ RAG系统让大模型精准输出行业知识3️⃣ 智能体开发用AutoGPT打造24小时数字员工熬了三个大夜整理的《AI进化工具包》送你✔️ 大厂内部LLM落地手册含58个真实案例✔️ 提示词设计模板库覆盖12大应用场景✔️ 私藏学习路径图0基础到项目实战仅需90天第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】