在科技飞速发展的当下,大模型已然成为 AI 领域的璀璨明星。从智能客服快速响应我们的咨询,到智能写作助手妙笔生花般地创作文章,大模型的身影无处不在。然而,随着大模型规模和复杂度的持续攀升,一个棘手的问题摆在了我们面前:如何在有限的资源条件下,让大模型的推理又快又好?就好比一辆超级跑车,性能虽强,但如果油耗巨大,对路况要求极高,也难以广泛驰骋。专业总结来说,大模型的推理希望有更高的吞吐、更快的响应(更低的RT),从而让大模型应用控制在性价比较高的水平。
一、背景简介
在开始介绍优化之前,先简单回顾之前大模型的架构。以广为人知的 Transformer 架构为例,它是众多大模型的基石。Transformer 架构中,多头注意力机制(Multi-Head Attention)可谓是核心组件。
MHA形象的理解,等价于有多个 “小眼睛” 同时关注输入数据的不同部分,然后综合它们的 “观察结果”,这样能更全面地捕捉数据中的信息。比如在语言模型处理句子时,这些 “小眼睛” 可以分别关注主语、谓语、宾语等不同成分,从而更好地理解句子含义。
在 Transformer 架构里,计算过程涉及大量的矩阵乘法。数据从输入层进入,经过一系列的线性变换、激活函数处理,再通过多头注意力机制等模块,最终输出结果。这个过程就像一场复杂的接力赛,每一个模块都在传递和处理数据。而正是在这个复杂的架构中,推理优化技术结合模型的结构和机器硬件条件进行针对性的优化。
优化作为系统工程的常见话题,不同层次的优化方式包括以下几个方面
- 模型架构优化:模型剪枝、知识蒸馏、参数共享
- 硬件感知优化:量化、硬件定制
- 推理过程:kv cache、动态批处理等
- 系统优化:IO、张量并行等
总的来说,业界常见的策略还是量化、模型剪枝、知识蒸馏、kv cache,下面将逐步展开:
二、量化
2.1 量化原理
量化技术,简单来说,就是给模型来一场 “瘦身”。我们知道,在计算机中,数据通常以二进制的形式存储。在大模型里,参数和数据一般用 32 位(fp32)或 16 位(fp16)的浮点数来表示。但实际上,很多数据并不需要这么高的精度。量化就是把这些高精度的浮点数转换为低精度的表示形式,比如 8 位(INT8)甚至 4 位(INT4)的整数。
这就好比我们用不同精度的尺子去测量物体。如果测量一个房间的长度,用毫米精度的尺子就足够了,没必要用纳米精度的尺子。对于大模型中的很多参数,降低精度并不会对模型的性能产生太大影响,但却能带来显著的好处。首先,模型的存储空间大幅减少。原本占用大量硬盘空间的模型,经过量化后,体积可能缩小好几倍。其次,在推理过程中,数据传输和计算的速度会加快。因为处理低精度的数据所需的计算资源更少,自然也更快。
2.2 量化实现方式
量化主要分为**训练时量化(QAT)和训练后量化(PTQ)**两种方式。训练时量化需要在模型训练阶段就引入量化操作,通过精心调整模型参数,让模型在低精度表示下依然能保持良好的性能。这个过程就像是在运动员训练时,给他穿上稍微重一点的训练装备,虽然一开始会有些不适应,但适应之后,脱下装备的运动员会跑得更快。训练时量化虽然效果出色,但需要重新训练模型,成本较高。DeepSeek内置的fp8和fp16混跑模式,就是内置的一种量化
训练后量化则相对简单直接,它不需要重新训练模型,而是直接对预训练好的模型进行量化处理。通过对模型的权重和激活值进行 INT8/INT4 量化,快速提升模型的部署效率,降低存储和计算成本。这就好比对已经建好的房子进行装修改造,不需要重新打地基,就能让房子变得更节能、更舒适。不过,训练后量化的量化精度损失相对较大,就像装修改造可能会对房子的原有结构造成一些小的影响。
目前,针对大模型的量化技术往往只对关键的权重参数进行量化(WeightOnly),而不对输入数据进行量化。这样既能达到理想的压缩比,又能尽可能保证输出结果的准确性,实现最高的量化性能。比如在一些图像识别大模型中,对卷积层的权重进行量化,在不影响识别准确率的前提下,显著提升了模型的推理速度。
三、剪枝
3.1 剪枝的概念
大模型在训练过程中,就像一棵不断生长的大树,会产生很多 “枝叶”,其中有些是冗余的,对模型性能提升作用不大。剪枝技术就是要去除这些冗余部分,让模型变得更加简洁高效。在模型中,连接各个神经元的权重就像大树的枝干。通过一定的算法,我们可以判断哪些权重是重要的,哪些是可以去掉的。比如,有些权重的值非常小,对模型的输出几乎没有影响,就可以将其剪掉。
3.2 结构化剪枝与非结构化剪枝
剪枝分为结构化剪枝和非结构化剪枝。结构化剪枝是对模型中的一些结构单元进行整体删除。以 BERT 模型为例,在多头注意力机制中,某些 “不重要” 的注意力头可以被移除。就好比一个交响乐团里,有些乐器的声音对整体演奏效果贡献不大,就可以让这些乐器暂时休息。结构化剪枝后的模型,结构依然相对规整,易于后续处理。
非结构化剪枝则更加灵活,它可以对模型中的单个权重进行稀疏化处理。就像在一幅画中,去除一些不太重要的细节线条。非结构化剪枝可以更精准地去除冗余权重,但也会使模型的结构变得更加不规则,对后续的计算和存储带来一定挑战。
剪枝后,模型的参数量减少,计算量也相应降低,推理速度自然得到提升。不过,剪枝后通常需要对模型进行微调,以恢复部分性能。这就像给大树修剪枝叶后,需要精心养护,让它重新焕发生机。通过微调,模型可以在新的结构下重新学习,保持良好的性能表现。
四、KV cache
4.1 KV cache 的工作机制
在 Transformer 架构的解码过程中,有一个关键的操作叫做缩放点积注意力(scaled dot - product attention)。在这个过程中,会产生键(Key)和值(Value)状态。而 KV cache 技术就是在多次生成 token 的步骤中,缓存之前计算得到的 Key 和 Value 状态。
以 GPT - 2 模型的文本生成过程为例,在自回归生成中,模型根据输入预测下一个 token,然后将新生成的 token 与之前的输入结合,继续预测下一个 token。在这个过程中,传统方式每次都要重新计算之前 token 的注意力,而有了 KV cache,我们只需要缓存之前的 Keys 和 Values,在生成新 token 时,只计算新 token 的注意力即可。这就好比我们读书时做笔记,每次读到新内容,不需要重新回顾之前所有的内容,只需要查看之前记录的重点笔记(缓存的 KV),再结合新内容进行思考(计算新 token 的注意力)。
而对于QK的每个token上增加缓存,则在预测后续输出时,可以直接用上历史的Q1、K1、V1等值,从而节省Emb计算量[1]
4.2 KV cache 的优势与代价
KV cache 带来的好处是显而易见的。通过缓存,计算过程中涉及的矩阵规模大大减小,矩阵乘法的速度大幅提升,从而显著加快了模型的推理速度。有人做过实验,在使用 GPT - 2 模型时,开启 KV cache 生成 1000 个新 token,平均耗时 11.885 秒左右,而不开启 KV cache 则需要 56.197 秒左右,差距十分惊人。
当然,天下没有免费的午餐。KV cache 需要更多的 GPU 显存(如果不使用 GPU,则需要更多的 CPU 内存)来存储缓存的 Key 和 Value 状态。这就好比我们为了方便查找资料,准备了很多文件夹来存放笔记(缓存 KV),但这些文件夹会占用更多的空间。不过,随着硬件技术的发展和优化算法的不断涌现,在很多情况下,KV cache 带来的推理速度提升远远超过了对显存增加的影响,使得它成为大模型推理优化中不可或缺的技术。
五、小结
量化、剪枝和 KV cache 等推理优化技术,就像为大模型装上了强劲的 “助推器”,在多个方面展现出巨大的价值与意义。
从成本角度来看,量化和剪枝技术减少了模型对存储和计算资源的需求。企业在部署大模型时,不再需要购买昂贵的大规模计算设备,降低了硬件成本。同时,在运行过程中,能耗的降低也节约了运营成本。这使得更多的企业和开发者能够负担得起大模型的应用,促进了大模型技术的广泛普及。
在性能方面,这些优化技术让大模型的推理速度大幅提升。无论是智能客服快速响应用户咨询,还是智能驾驶系统迅速做出决策,更快的推理速度都能带来更好的用户体验和更高的安全性。例如,在智能客服场景中,原本需要等待数秒才能得到回复,经过推理优化后,可能瞬间就能收到答案,大大提高了客户满意度。
从应用拓展角度而言,推理优化技术使得大模型能够在更多资源受限的场景中应用。比如在移动设备上,通过量化和剪枝,原本无法运行的大模型现在可以流畅运行,为手机端的 AI 应用带来了更多可能。像一些拍照翻译 APP,利用优化后的大模型,能够在手机上快速准确地识别和翻译图片中的文字。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
第一阶段(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 的正确特征了。