想象你是小镇上最勤奋的作家林默。你正在写一部长篇小说,每落下一个字,书桌上就会自动升起一张便签纸,原原本本地记录着你刚写的那个字。起初这很轻松,可写到第 3000 字时,桌面已经被便签纸淹没——更要命的是,你每写一个新字,都得先把桌上所有的便签纸从头到尾翻一遍,否则就想不起前面的剧情。 这堆“便签纸”,就是大模型推理中的 KV Cache。它记录着模型已经生成的每个 token 的 Key 和 Value,让模型在生成新词时不必从头重新计算。但和作家的便签一样,它随着对话变长、请求变多而疯狂膨胀,成了推理服务器显存的最大负担。 好在林默后来想出了妙招:把潦草的全文抄录改成精简的符号批注——该圈的重点圈出来,该省略的掠过。这套“压缩笔记”的功夫,叫作 Cache 量化。本文会用这个作家书房的故事,带你从头理解 KV Cache 为什么吃显存、INT8/INT4/FP8 量化怎么省内存、精度损失如何补偿,以及 PagedAttention 这个“活页夹”如何配合量化,把推理引擎的内存压力彻底降下来。
学完本节,你将掌握 KV Cache 量化的完整知识链路——从显存估算公式、量化映射原理到部署调优实战。这是大模型部署工程师做低成本推理、高并发服务的核心技能,也是面试中被高频追问的硬核考点。
目录
可视化演示
交互展示KV Cache的FP16/INT8/INT4量化策略,直观对比不同精度下的内存占用和推理性能权衡。
本节配有交互动效(进入视口后自动加载,约 3KB)。
FP16:全精度KV缓存 每个KV值用16位浮点数存储,精度最高 内存占用大,限制batch size和序列长度 Mem = 2 × n_layers × seq_len × d_model × 2B FP16是量化对比的基准精度
内存瓶颈:便签纸淹没桌面
林默的写作有个铁律:每写一个字,都必须把之前所有便签纸翻一遍。这是“自回归”的天性——大模型每生成一个新 token,Attention 机制都要回顾序列中全部历史 token 的信息。为了不重复计算,推理框架把历史 token 经线性变换后得到的 Key 和 Value 缓存起来,这就是 KV Cache。恰好对应林默桌上那堆“原文便签”:它不参与训练,却在推理时随生成逐字增长。
KV Cache 的膨胀速度远超直觉。它的大小由六个因素共同决定:层数、注意力头数、每头维度、序列长度、batch 大小,以及每个元素的字节数。层数和头数由模型架构锁死,但序列长度和 batch 是运行时变量——线上对话越长、并发请求越多,便签纸就以乘法级速度堆满整个房间。
以 7B 模型为例算笔账:32 层、8 头、128 维、序列 1024、batch 8、FP16 精度,KV Cache 就要约 256MB。当上下文窗口扩展到数万 token,单请求就能吃掉几个 GB——这还没算模型权重和激活内存。很多推理服务真正“爆显存”的元凶不是模型本身,而是这座便签纸山。
对部署工程师来说,最难办的是便签纸极具弹性:请求来了就长,走了才落。显存碎片、动态分配、带宽争抢环环相扣。林默望着满屋便签不禁发愁:有没有办法让每一张纸都变薄一点?
s_bits 是后面量化要动的变量。- 层数维度式中的
N_layers是 Transformer 块数量,每层都有独立的注意力头,各自保存一份 Key 和 Value 缓存,所以先乘一次层数。 - 头与维度
N_heads × d_head代表多头注意力的总列数。头数越多、维度越大,单条便签上的信息就越“宽”,矩阵体积自然成倍增长。 - 序列与批量
L_seq × B是运行时两个放大器。生成了多少 token(序列长度 L)和同时服务多少请求(batch 数 B)每次乘在一起,缓存总行数就是它的乘积。 - 每元素字节
s_bits是每个数值占的存储宽度。FP16 下是 2 字节,INT8 是 1 字节,INT4 只有 0.5 字节——这个值直接把总量成比例缩小,是全部量化收益的来源。
量化策略:从全文抄录到圈点批注
林默的灵感来自邻居老会计:账本上记录金额,不必每个数都精确到小数点后八位,四舍五入到分为单位就够用了。KV Cache 里的浮点数同理——模型推理本来就要对数值做大量近似运算,缓存里的数何必用 FP16 精抄全文?这就是量化的朴素思想:把连续的浮点数映射到离散的整数格子上。
具体做法是准备一把“尺子”。先看数据分布的最大值和最小值,算出每个格子的宽度(缩放因子 Δ),然后把每个浮点数除以 Δ、四舍五入成整数编号,存这个整数。读取时按编号乘回 Δ,就还原出近似的原始值。读者可能疑问:这不会丢精度吗?会,但注意力的 softmax 分布天然对微小的数值扰动不敏感——就像林默发现“她轻轻笑了”和“她笑了”在剧情推进上差别不大。
业界主流的 KV Cache 量化路线有三条。INT8 是最稳妥的选择:每元素 1 字节,内存直接减半,精度损失几乎可忽略。INT4 更进一步,每元素 0.5 字节,但量化噪声明显上升,需要误差补偿技术配合。FP8 是 2024 年后硬件力推的新贵,它保留浮点数的动态范围,对长尾分布数据更友好,且 Hopper 架构的 GPU 有原生指令加速。选择哪条路线,本质上是在“纸张薄度”和“笔记可读性”之间找平衡。
林默算了笔账:他把每张便签纸从“全文抄录”改成“圈点批注”,纸张用量降到原来一半;再激进一点用“电报符号”,只剩四分之一。可当他真把笔记改成电报体时,发现有些剧情细节彻底找不回来了。
q。z 是偏移量,对称量化里通常取 0,KV Cache 场景几乎都用对称量化。- 缩放因子
Δ是一把把数据范围切成2^b - 1段的尺子,比特数b越多格子越细,误差越小但存储越贵。这把尺子必须在量化前根据数据分布先量好。 - 取整编号每个浮点数
x除以Δ得到它的格子序号,四舍五入成整数q,这个q就是量化后实际存下来的值。“取整”这一步是量化产生误差的根本来源。 - 反量化恢复读取时用
(q - z)乘回Δ,还原出的x̂是原始值的近似。x̂与x的差距就是量化噪声,差距越小说明这把“尺子”选得越合适。
精度权衡:批注太简会丢细节
林默尝试全面电报化后,写作质量肉眼可见地下滑。问题出在两处:舍入噪声和极端值截断。舍入噪声是取整时不可避免的“四舍五入误差”,像把身高 167.5cm 记成 168cm;极端值截断则更隐蔽——如果数据里有一个特别大的异常值,这把尺子的刻度会被它撑得很宽,导致中间那些常见的小数值全部被压进同一个格子,“大家长得都一样”了。
衡量“笔记丢了多少细节”,领域里最常用的标尺是困惑度 Perplexity(PPL)。通俗讲,PPL 衡量模型在预测下一个词时有多“迷茫”——迷茫度越低,说明模型对语料的把握越准。PPL 对量化前后哪怕微小的精度变化都非常敏感,因此成了 KV Cache 量化品的质检测试仪。
实践经验给出了一条安全线:INT8 量化 KV Cache 的 PPL 退化通常在 0.1 以内,接近无损;INT4 量化在短序列、平稳分布的场景下可控,但一旦序列变长,注意力分布趋近均匀,量化噪声会聚沙成塔。就像林默发现:小说开头用电报体没问题,写到伏笔密集的悬疑段落时,一个符号的篡改就能让读者彻底迷惑。
更严格的验证还要看下游指标——MT-Bench、真实业务评测、端到端延迟。PPL 是“体检报告”,业务评测才是一线实战。当 INT4 的误差确实伤到了模型质量,林默该怎么做?他决定给关键段落配上放大镜。
- 单步对数概率模型每预测一个词,都会给出词表上所有词的概率分布,其中正确词的概率取对数后是一个负数;概率越接近 1,对数越接近 0,“不太意外”。
- 序列平均把整个序列 N 个 token 的对数概率相加取平均,相当于把作家整章文字的可预测程度汇总成一张成绩单。
- 指数还原取指数把负数成绩还原为正常量纲,得到“平均每步要猜几次才中”的直观数字,PPL 越小越好。
误差补偿:给重要段落加放大镜
不是所有便签都同等重要。林默发现,小说里承载核心设定的段落若是一字不差,读者的信任感会强很多;而过渡性场景潦草带过也无伤大雅。KV Cache 同理:所有通道的量化虽然共享一把尺子,但不同通道对最终注意力的贡献天差地别,这就是敏感度分析。
最直接的补偿手段是 per-channel 量化——给每个通道配一把独立尺子,而非全张量共用一把。敏感通道(激活值方差大、对注意力分数影响显著)用更细的格子;不敏感通道用粗格子。代价是每把尺子都要额外存一个缩放因子,但这点开销在内存节省面前微不足道。
业界主流的 AWQ / GPTQ 等量化方法虽然最初为权重设计,其“按激活值敏感度保护通道”的思路已被证明对 KV Cache 同样有效。另一个被反复验证的经验:Key 比 Value 更值得保护。道理很直观——Key 直接参与注意力分数的计算,改错一个 Key,影响的是对整个上下文的注意力分配;Value 只负责“信息内容”,轻微失真不至于让模型找错重点。
林默把书房按“孤本区”和“流通区”分级管理:关键设定页全保真,过场戏用速记。量化误差的洪峰被补住了,代价只是纸张厚度比纯电报式略有回升。这一步做完,他的纸山终于从“塞满房间”变成了“塞满一个书架”——但书架本身还是乱糟糟的。
- 通道分组把缓存矩阵按通道维度切成一组一组数据块,No.
i通道用自己的最大值和最小值单独算缩放因子,避免“一把尺子丈量全班身高”。 - 逐通道取整第 i 个通道里的每个数,用本通道的缩放因子和偏移量独立量化。每个通道的量化噪声互不影响,敏感通道的精度不再被不敏感通道拖累。
- 混合精度配置给不同通道分配不同的比特数
b_i——关键的通道给 8 甚至 16 位,次要的给 4 位,这就是混合精度量化的核心思路。
PagedAttention:活页夹管理碎片
便签纸变薄了,新的烦恼来了:纸张尺寸不一,东一张西一张散落,每次要翻遍全屋才能找齐。KV Cache 在显存中的分布也面临同样的碎片化难题——不同请求的序列长度动态变化,按需分配的显存块会留下大量无法利用的“缝隙”,导致显存明明还没装满,新的请求却无处安放。
vLLM 提出的 PagedAttention 像给书房装上了活页夹系统。它把 KV Cache 切成固定大小的“块”(比如每块 16 个 token 的 Key 和 Value),逻辑上连续的序列,物理上可以存放在任意位置,通过一张页表映射。这借鉴的是操作系统虚拟内存的分页思路——纸张不再需要连续堆放,每个夹子可以插进书房任意一个空槽位。
PagedAttention 还带来了意外之喜:前缀共享。当多个请求共享同一段系统提示词或历史对话前缀时,它们可以直接复用同一批物理块,而不是各自重新分配一份便签。林默恍然大悟——他写系列小说时,每部开头都把“人物设定表”抄一遍,现在只需一张设定表挂墙共享。
配合量化,PagedAttention 的收益还会叠加:更薄的每元素字节数意味着每个物理块能装下更多 token 的 KV,同一块显存能容纳的“活页块”数量成倍上升,内存利用率进一步提升。碎片问题和容量问题,在这一步被同时化解。
- 分块计数序列长度
L_seq除以每块容纳的 token 数B_size,向上取整得到需要几块。比如 1024 token、每块 16 token,就是 64 块。 - 页表映射逻辑上第 j 块在序列中的位置是确定的,但它的物理位置由映射函数
p(j)决定。物理页可以不连续,这正是解决碎片的关键。 - 块内顺序每个物理页内部仍然按下标连续存放,读取一个块时只需一次内存访问就能取出一小段连续的 KV 数据,兼顾碎片利用率和读取效率。
部署实践:从书房到生产线
林默的整套书房改造方案终于落地,各项措施各司其职:INT8 量化让每张纸薄一半;per-channel 缩放保住关键通道的精度;PagedAttention 让所有纸片按块整齐入夹;校准环节用一小段真实对话数据重新确定缩放范围,把最后的边角误差磨平。这套组合拳,正是当前大模型推理框架主流 KV Cache 优化的完整链路。
部署工程师最关心的两个数字是“能塞进多少并发”和“吞吐提升多少”。前者用显存估算公式求出最大 batch:总显存减去模型权重占的、减去激活内存,剩下的预算除以单序列 KV Cache 开销,向下取整就是并发上限。量化后每序列的 M_KV 成倍缩小,多出的显存直接转化为并发能力的提升。
工程落地上,主流推理引擎已经把这条路铺平:vLLM 提供 --kv-cache-dtype fp8 等参数,TensorRT-LLM 内置 INT8 KV Cache 量化选项,torchao、AWQ 等工具链也陆续支持。真实案例中,7B 模型开启 INT8 KV Cache + PagedAttention 后,在保证业务指标不降的前提下,吞吐量常有 1.8~2.5 倍的提升;结合 INT4 和精细补偿,极端场景可达 3 倍以上。
林默的最终书房体检报告令人满意:同样的房间面积,以前只够放一部小说的手稿,现在可以同时放三部,而且写作时的翻找速度更快了。KV Cache 量化,本质上就是一次给模型“书房”做空间规划的系统工程——从纸张厚度(精度)到摆放结构(分页),再到重要文档的保管(补偿),环环相扣,缺一不可。
- 内存节省率量化后每元素字节数
s_quant除以 FP16 的 2 字节,1 减之即为节省比例。INT8 的 1 字节对应节省 50%,INT4 对应 75%。 - 显存预算总显存
M_avail扣除模型权重M_model和激活内存M_act,剩下才是 KV Cache 的可分配空间——先给权重留够,才轮到便签纸。 - 并发上限显存预算除以单序列 KV Cache 总量,向下取整得到最大并发 batch。KV Cache 越省,能同时服务的请求越多,GPU 利用率越饱满。
AI 应用场景
长上下文智能客服
阶段:推理服务优化
解决的问题:智能客服对话动辄数千 token 的历史上下文,FP16 KV Cache 要占几十 GB 显存,单卡并发极低。量化后 KV Cache 内存降至四分之一,同一块 GPU 能同时服务的会话数成倍上升,成本压力骤减。
具体案例:某金融公司部署 7B 客服大模型,上下文 4096 token、batch 16 时 KV Cache 占用 2GB。开启 INT8 KV Cache 量化后占用降到 1GB,配合 PagedAttention,单卡吞吐从 120 req/s 提升到 240 req/s,首 token 延迟稳定在 1s 以内。
批量离线文档摘要
阶段:离线批量推理
解决的问题:大批量处理长文档时,每个请求都要生成数千 token 的摘要,KV Cache 峰值内存是最大的成本项。量化后配合序列批处理调度,能显著提升单卡吞吐、缩短任务总时长。
具体案例:某律所批量摘要合同文档,每篇约 8000 token。使用 INT8 + per-channel 补偿后,显存占用降低 45%,吞吐提升 2 倍,批量任务从 5 小时缩到 2.5 小时,业务方反馈摘要质量无感知差异(人工抽检通过率 98%)。
边缘设备单卡部署
阶段:模型压缩与部署
解决的问题:16GB 显存的工作站跑 70B 模型,模型权重+激活内存已捉襟见肘,KV Cache 稍微一长就 OOM。KV Cache 量化(INT4)在不改模型权重的情况下,把长对话的显存需求压到可接受范围内。
具体案例:某高校实验室用单张 RTX 4090 部署 14B 对话模型。启用 INT4 KV Cache 量化后将上下文长度从 2048 扩展到 8192,长文档问答任务完整跑通,显存峰值仍控制在 20GB 以内。
Python 演示
import mathimport random class KVCache: def __init__(self, seq_len, head_dim, num_heads, bits=16): self.seq_len = seq_len self.head_dim = head_dim self.num_heads = num_heads self.bits = bits self.key = [[random.uniform(-1, 1) for _ in range(head_dim)] for _ in range(seq_len * num_heads)] self.value = [[random.uniform(-1, 1) for _ in range(head_dim)] for _ in range(seq_len * num_heads)] def memory_mb(self): elements = 2 * self.seq_len * self.head_dim * self.num_heads return elements * self.bits / 8 / (1024 * 1024) def quantize_channel(data, bits): max_val = max(abs(x) for x in data) if max_val == 0: return data, 1.0 scale = max_val / (2 ** (bits - 1) - 1) q = [round(x / scale) for x in data] deq = [x * scale for x in q] return deq, scale def quantize_kv_cache(cache, bits): err_total = 0.0 for i, ch_key in enumerate(cache.key): deq_k, _ = quantize_channel(ch_key, bits) err_total += sum((a - b) ** 2 for a, b in zip(deq_k, ch_key)) for i, ch_val in enumerate(cache.value): deq_v, _ = quantize_channel(ch_val, bits) err_total += sum((a - b) ** 2 for a, b in zip(deq_v, ch_val)) return err_total / (len(cache.key) + len(cache.value)) def main(): cache = KVCache(seq_len=2048, head_dim=128, num_heads=8, bits=16) fp16_mb = cache.memory_mb() print("FP16 KV Cache 内存: %.2f MB" % fp16_mb) for bits in (8, 4): cache.bits = bits mb = cache.memory_mb() err = quantize_kv_cache(cache, bits) print("%dbit 量化后内存: %.2f MB, 平均平方误差: %.6f" % (bits, mb, err)) if __name__ == "__main__": main()
KVCache(seq_len=2048, head_dim=128, num_heads=8, bits=16)初始化一个模拟 KV Cache,结构对齐真实模型:序列长度、每头维度、头数,外加初始位宽。memory_mb()用“元素数 × 位宽 ÷ 8”计算总字节数,再转成 MB。这就是正文公式里s_bits的实际作用。quantize_channel(data, bits)per-channel 量化:先取通道内最大绝对值算出缩放因子,再取整存入整数格子,返回反量化的近似值和缩放因子。quantize_kv_cache(cache, bits)遍历 Key 和 Value 的每个通道执行量化,并累计反量化结果与原始值的均方误差。for bits in (8, 4)依次用 8bit 和 4bit 重复实验,观察内存减半/减四分之三的同时误差如何变化。
常见误区
误区很多人觉得把缓存从 FP16 压到 INT8 或 INT4,模型回答质量一定会肉眼可见地下降,就像把高清照片压成马赛克。
正解KV Cache 量化针对的是注意力缓存,不是模型权重。Attention 的 softmax 分布对微小数值扰动很宽容,INT8 量化在实际评测中 PPL 退化通常低于 0.1%,业务指标基本无感知。真正要担心的是 INT4 在长序列、高噪声场景下的累积误差,而这可以通过 per-channel 补偿和校准来挽回。
为何常见:人们容易把“量化”和“压缩图片”划等号,忽略了 KV Cache 在注意力机制中的角色——它只是用来算权重,对绝对值精度要求远低于对相对排序的保真度要求。
误区既然 INT4 每元素只占 0.5 字节,内存比 FP16 省 75%,那干脆一律用 INT4,省下来的显存全是吞吐。
正解内存确实按比例省,但 INT4 的极端值截断会让量化噪声显著上升,为保质量必须引入 per-channel 缩放、混合精度等补偿手段,这些会带来额外存储和计算开销,实际“净节省”往往达不到理论值。而且如果质量退化导致业务返工,省下的成本会被质量损失吃回去。
为何常见:只看了内存公式里位宽这一项,忽略了“误差补偿成本”和“质量验证”这两个隐藏账单。量化是工程权衡,不是单纯的算术题。
误区上线前跑一遍量化前后 PPL,数字差不多,就万事大吉,直接全量发布。
正解PPL 是全局平均指标,对长尾分布、罕见实体、特定任务的退化不敏感。真实业务往往有更严格的要求——翻译要查 BLEU、对话要查人工打分、检索要看召回率。稳妥的做法是 PPL 快速筛查 + 业务端到端评测双重把关,再灰度放量。
为何常见:PPL 是最容易获取的公开指标,大家习惯用它当“唯一质检员”,忽略了它只是体检报告,不是诊断结论。
误区有人觉得既然量化已经把内存降下来了,就不需要 PagedAttention 这种工程技巧了;或者用了 PagedAttention 就够,没必要再折腾量化。
正解两者解决的完全是两个问题:量化管“每张纸多厚”,PagedAttention 管“纸往哪里放”。量化后每个物理块能装更多 token,分页块的利用率更高;分页解决碎片问题后,量化本身省下的空间才能真正转化为并发收益。工业界主流方案是两者叠加使用。
为何常见:把“内存优化”混为一谈,没分清“容量”和“结构”两个维度。就像整理书房,纸薄和放得整齐缺一不可。
面试题
Q1. KV Cache 中存储的核心数据是什么?
- A.每层注意力模块的K和V← 正确答案
- B.模型权重参数里的全部
- C.输入的词嵌入向量本身
- D.反向传播时的梯度信息
答案:A。KV Cache 记录的是自注意力计算得到的 Key 和 Value 矩阵,供后续 token 生成时复用。权重参数存在模型文件里,词向量是输入侧产物,梯度只在训练时存在,这三者都不是 KV Cache 的内容。
Q2. 为什么 KV Cache 量化通常很可行?
- A.注意力softmax对噪声宽容← 正确答案
- B.KV Cache本身没有数值误差
- C.模型推理不需要任何计算
- D.权重量化会修复缓存误差
答案:A。注意力分数经过 softmax 后,微小的数值扰动对概率分布的影响有限,所以 KV Cache 对量化误差的容忍度较高。KV Cache 当然有数值误差(只是不敏感),推理必然有计算,权重量化与缓存量化是两件独立的事。
Q3. 对称量化中缩放因子 scale 如何计算?
- A.最大值绝对值除以2^b-1← 正确答案
- B.数据均值直接除以b的平方
- C.数据方差开根号再减偏差
- D.最小值与最大值的乘积值
答案:A。对称量化以 0 为中心,取数据绝对值的最大值,再除以 2^b - 1 得到每个整数格子的宽度。均值、方差、最值乘积都不是“把数据范围均匀切格”的正确方式。
Q4. INT8 KV Cache 相对 FP16 的内存变化?
- A.大约减为原来的一半← 正确答案
- B.大约增加为原来两倍
- C.保持不变化完全一致
- D.减至原来的四分之一
答案:A。FP16 每元素 2 字节,INT8 每元素 1 字节,内存正好减半。INT4 才是减到四分之一,INT8 不会增加,更不会保持不变。
Q5. INT4 量化 KV Cache 的主要风险是什么?
- A.极端值截断使常见值失真← 正确答案
- B.整数运算速度反而会更慢
- C.存储容量一点都不会减少
- D.模型权重会直接因此消失
答案:A。INT4 只有 16 个取值,遇到极大的异常值时,缩放因子被撑大,导致正常范围的数据被压进少数格子,失真集中在常见值上。这可以通过 per-channel 缩放和混合精度缓解。
Q6. PagedAttention 是如何解决显存碎片问题的?
- A.将KV块存于非连续物理页← 正确答案
- B.把整个模型复制到多显卡
- C.删除输入序列中最长的句子
- D.将Key和Value合并成一个数
答案:A。PagedAttention 借鉴虚拟内存分页思想,把 KV Cache 切成固定大小的块,通过页表映射到任意空闲物理页,逻辑连续不代表物理连续。复制模型不解决碎片,删句子和合并 K/V 都不是标准做法。
Q7. 混合精度补偿中哪个经验结论是正确的?
- A.Key 比 Value 更值得保护← 正确答案
- B.Value 永远比 Key 更重要
- C.两者必须都用 FP32 精度
- D.头数越多精度越不重要
答案:A。Key 直接参与注意力分数的计算,如果它失真,模型会“找错重点”;Value 只是内容本身,轻微失真影响较小。因此混合精度方案常给 Key 更高位数。FP32 违背量化初衷,头数多少与精度需求无直接关系。
Q8. 量化误差的主要来源有哪些?
- A.舍入产生的量化噪声← 正确答案
- B.缩放因子被极端值撑大← 正确答案
- C.模型层数自动变深变宽
- D.反量化步骤会加深误差
答案:AB。量化误差来自取整时的舍入噪声,以及极端大值把缩放因子撑大、导致常见值被压扁。层数是模型结构固定属性,反量化只是精确的乘法,都不是误差来源。
Q9. 下列哪些属于有效的 KV Cache 误差补偿手段?
- A.对敏感通道使用更细缩放← 正确答案
- B.用校准数据重定缩放范围← 正确答案
- C.把序列长度全部缩短一半
- D.对K和V分别配不同位数← 正确答案
答案:ABD。per-channel 细粒度缩放保护敏感通道、校准数据重新确定缩放范围、K/V 分开配位数(Key 高精度)都是正规补偿手段。缩短序列长度是改变负载,不是补偿量化误差。
Q10. 量化部署时如何全面验证模型质量?
- A.对比量化前后困惑度数值← 正确答案
- B.在业务数据集端到端测评← 正确答案
- C.只检查显存能不能装下
- D.用MT-Bench类基准测试← 正确答案
答案:ABD。PPL 是快速筛查指标,MT-Bench 等基准模拟真实对话质量,业务端到端评测验证最终效果。只看显存是否装得下完全没验证质量,是不合格的做法。