Arganzheng's Blog

stay hungry, stay foolish

高效推理与压缩(05):KV cache 压缩:量化、驱逐与稀疏 attention

KV Cache Compression: Quantization, Eviction and Sparse Attention

04 系列第六篇算过 KV cache 的账:Llama-3-70B 在 128K 上下文下每个请求的 KV 是 40 GiB(GQA 之后)——权重 141 GB 的近三成,一张 80 GB 卡的一半;decode 每步要把它全部读一遍,单请求 128K 时 KV 读取已是权重的 30%,batch 到 4 就与权重相当(每 token 320 KiB,\(141\text{ GB}/320\text{ KiB} \approx 43\) 万 token 与权重打平),长上下文 + 并发下 KV 读取超过权重读取成为 decode 的主要流量。结构级的解法——GQA 把 KV 头数除以 8、MLA 把每 token 的 KV 压到 576 维——在训练时就决定了,...

高效推理与压缩(04):量化感知训练、低比特与量化模型的评测

Quantization-Aware Training, Extreme Low-Bit and How to Evaluate a Quantized Model

上一篇的 PTQ 在 4 bit 权重上把困惑度损失压到 0.1–0.3,在 W8A8 上接近无损。再往下——3 bit、2 bit、三值权重,或者激活也到 4 bit、KV 也到 4 bit——逐层最小化输出误差的代理目标不够了:误差太大,后面的层”消化”不掉,最终 loss 的退化不再与逐层误差成比例。这时需要训练参与:让模型在知道自己会被量化的前提下学习,把量化误差学回去一部分。这是量化感知训练(QAT)。 QAT 的核心技术问题只有一个:量化的 round 函数梯度处处为零(或无定义),怎么反向传播?答案是直通估计器(STE)——一个数学上”错”但实践上有效的技巧。围绕它有一族方法:让 scale 可学习(LSQ)、只在训练末段做 QAT、用全精度的自己做...

高效推理与压缩(03):训练后量化:误差模型、GPTQ、AWQ 与旋转

Post-Training Quantization: Error Models, GPTQ, AWQ and Rotation

量化是把权重(有时也把激活)从 16 bit 浮点变成 4 bit 或 8 bit 整数。04 系列第十二篇从 Roofline 的角度讲了它的收益:decode 是 memory-bound 的,权重字节除以 4,每步时间除以接近 4——但只在 \(B \lesssim \text{ridge}/4\) 的区间内;也介绍了 GPTQ 的更新公式、AWQ 的缩放形式、SmoothQuant 的迁移因子。那一篇回答的是”量化省多少”。 这一篇回答”量化丢多少、丢在哪、怎么少丢”。量化误差是本系列里最可控的一种分布改变:它有一个清楚的统计模型,每种方法都在这个模型下最小化一个明确的目标,而且方法之间的差别可以精确地说出来——RTN 什么都不管,GPTQ 补偿输出误差,...

高效推理与压缩(02):投机解码:草稿、接受率与树

Speculative Decoding: Drafters, Acceptance Rates and Draft Trees

投机解码是本系列里唯一不改变输出分布的方法。04 系列第十二篇已经完成了它的基础部分:拒绝采样保证输出严格等于目标分布的证明、期望接受长度 \(\frac{1 - \alpha^{\gamma+1}}{1 - \alpha}\)、以及 Roofline 决定的收益区间——验证 \(\gamma + 1\) 个 token 几乎免费的条件是 \(B(\gamma + 1) \lesssim \text{ridge}\),超过就亏本。那一篇把草稿方案列成了一张表(独立小模型、Medusa、EAGLE、n-gram、MTP),给了各自”通常报告”的接受率区间。 这一篇从那张表往下挖。加速比只由两个量决定——接受率 \(\alpha\) 与草稿成本 \(c\)——而这两个...

高效推理与压缩(01):解码策略、采样与约束生成

Decoding Strategies: Sampling, Truncation, Penalties and Constrained Generation

模型的一次前向给出的不是一个 token,是一个 \(V\) 维的分布。从这个分布里取一个 token 的规则——greedy、beam、temperature、top-k、top-p、min-p、重复惩罚、语法约束——统称解码策略。它不改变模型的任何参数,不改变一次前向的成本,但决定了用户看到的每一个字、决定了评测报出的每一个数字、也决定了 RL 训练时策略探索到什么。同一个模型在 GSM8K 上,greedy 报 78、temperature 0.6 采样报 76、多次采样投票报 85——三个数字都”对”,说的是不同的事。 这一篇放在系列开头,是因为后面五篇都要回答”这个方法让输出分布变了多少”,而采样参数本身就在改分布。不先把”从分布里怎么取”说清楚,量化前...

高效推理与压缩(算法侧):解码、投机、量化与 KV(总纲)

Efficient Inference and Model Compression: The Algorithm Side

内容简介 《高效推理与压缩(算法侧)》是一组共六篇的系列文章,对应《AI 算法工程师学习地图》的第 L6 层。它面向已经理解 Transformer 的成本结构(L4,《Transformer 与 LLM》)、并且做过或准备做后训练(L5,《后训练》)的读者,回答的是一个部署前必然遇到的问题:不改硬件、不改推理引擎,怎么让同一个模型更快、更小、更便宜——以及每种办法让模型的输出改变了多少。 “推理优化”这个词下面混着两类完全不同的东西。一类改变模型或解码过程:量化把权重从 16 bit 变成 4 bit,投机解码让一次前向产出多个 token,KV 驱逐丢掉一部分缓存,剪枝删掉一部分参数。另一类改变调度与内存管理:PagedAttention、continuou...

算法工程师的实验方法论:用有限的算力得出可信的结论

Experimental Methodology for AI Algorithm Engineers: Credible Conclusions on a Finite Compute Budget

本文是《AI 算法工程师学习地图》“横切:实验方法论”一层的导读。它不属于任何一层,对每一层都适用;放在 L5 之后,是因为它要用到的例子——scaling law 的外推(04 系列第十篇)、评测的置信区间(后训练第八篇)、loss spike 的归因(04 系列第十二篇)——到这里都已经讲过了。 一个算法工程师一年里做的事,绝大部分不是”提出新方法”,而是回答一个个具体的问题:这批数据加进去有没有用?lr 调高一倍是不是更好?这个 attention 变体值不值得付出 KV 的代价?换一个 tokenizer 会不会伤中文?每个问题都要用实验回答,而每个实验都花钱——一次 7B 的 SFT 消融几十 GPU 小时,一次预训练配方的对照几千。算力是有限的...

后训练(09):系列总结与通关自测

Post-Training: Series Recap and Final Self-Test

八篇正文回答了一个问题:一个只会续写的基座模型,经过哪几步变成能回答、能拒绝、能一步步推导、能调工具的模型——每一步的目标函数是什么、要几个模型在显存里、生成多少 token、怎么证明它真的变好了。第一篇用 SFT 教格式,第二篇把人的判断造成一个可微的奖励,第三、四篇是用奖励改策略的在线与离线两种解法,第五篇把奖励换成验证器,第六篇把验证器推到多轮环境,第七篇把奖励换成教师的分布,第八篇是贯穿全程的度量。八篇合起来是《AI 算法工程师学习地图》的第 L5 层。 本文不讲新内容,做三件事:把八篇压成一张表与八段回顾,把贯穿八篇的几条线拎出来,然后给一套三段式的通关自测——判断与计算、跨篇综合、面试题。各篇末尾的自测检验的是”这一篇读懂了没有”,这里检验的是”八篇能...

后训练(08):评测:benchmark、LLM-as-judge、Arena 与污染

Evaluating LLMs: Benchmarks, LLM-as-Judge, Arenas and Contamination

前七篇每一篇的结尾都有一句”变好了”:SFT 之后会按格式回答,RL 之后奖励涨了,蒸馏之后小模型接近教师。每一句背后都有一个度量,而度量比方法更容易出错——分数涨了 2 个点,可能是能力提升,可能是换了 few-shot 数,可能是测试题在训练集里,也可能只是 1000 道题上的随机波动(±3 个点)。评测是后训练流水线里唯一贯穿全程的部件,也是”回到数据或配方”那条回边的起点:不会评测,就不知道下一步改什么。 这一篇讲评测的四件事:benchmark——每个测什么、多大、饱和到什么程度,以及协议的每一个细节如何改变分数;统计——多少题才能区分两个模型;judge 与 Arena——用模型和人做偏好评测时各有什么偏差;污染与自建——怎么知道分数是不是假的,什么时...

后训练(07):蒸馏:logits 级、序列级与 on-policy

Knowledge Distillation for LLMs: Logit-Level, Sequence-Level and On-Policy

前六篇的奖励有两种来源:人(经过 RM 或 DPO 的转译)与验证器。第三种来源是另一个模型——一个更大、更强、或已经训好的教师,它对每个 token 的概率分布、或它生成的序列,成为学生的训练信号。这就是蒸馏(Hinton 等 2015)。它在 LLM 上有三种形态:学生匹配教师的 logits(token 级)、学生在教师生成的文本上做 SFT(序列级)、学生自己生成、教师在学生的序列上逐 token 打分(on-policy)。三者学到的东西不同、漏掉的东西不同、成本相差几个数量级。 蒸馏是 2025 年小模型能力的主要来源。DeepSeek-R1 用 80 万条样本 SFT 出的 1.5B–70B 推理模型,比在同样基座上直接做 RL 好得多;Qwen3 ...

×