优化选择:收益与代价一起看
先找瓶颈,再决定改变哪个对象。不要把“少存”“少算”“少等”和“更便宜”当成同一件事。
本章目录
O01 · GQA/MQA:减少的是K/V组数
为什么
长序列或多并发时KV内存和读取带宽压力很大。
怎么做
使用训练/适配好的分组查询架构,并让运行时按正确组映射读取。
代价/错误条件
可能改变质量;若实现物理复制共享K/V,实际内存收益会被抵消。
怎么验证
分别验证组映射、内存实占、任务质量和速度;不能只看理论字节数。
O02 · 量化:省存储,也引入近似
为什么
减少权重或KV等对象的存储与搬运压力。
怎么做
选清量化对象和格式,校准范围,使用匹配内核,逐层或任务级验证。
代价/错误条件
误差、异常值、反量化开销、缺少高效内核,都可能削弱质量或速度收益。
怎么验证
对比原值与还原值;更重要的是比较真实任务表现与实测峰值内存。
O03 · LoRA:冻结大表,学习小增量
为什么
全量微调所需梯度和优化器状态可能太大。
怎么做
冻结基础权重,训练低秩增量,保留正确缩放和模块匹配。
代价/错误条件
小秩可能限制能力;基础模型与适配器版本不匹配;低精度合并有数值差异。
怎么验证
验证x(W+AB)=xW+xAB,再做独立任务质量与资源对照。
O04 · FlashAttention:一边读一边累计,不攒整张表
为什么
大中间矩阵造成显存读写与容量压力。
怎么做
分块计算并以在线softmax维护归一化统计,减少外部显存访问。
代价/错误条件
实现复杂;数值顺序变化有舍入差异;不适用的硬件或形状收益可能很小。
怎么验证
与完整softmax加权结果做容差对照,再在目标硬件实测而非把教学计数当加速倍数。
O05 · PagedAttention:逻辑连续,物理可以分块
为什么
序列动态增长,连续预留常造成空间浪费并限制并发。
怎么做
用固定大小块和映射管理增长、释放及条件允许的共享。
代价/错误条件
仍有尾页空槽和管理开销;共享页写入需正确处理引用与复制。
怎么验证
核对逻辑顺序、页所有权、增长和释放,确保不同请求不会混用内容。
O06 · 连续组批:有座位空出来,就接下一位
为什么
不同请求长度不同,固定批次会浪费提前空出的计算位置。
怎么做
在迭代边界移除完成请求、纳入候选,并用预算管理prefill/decode竞争。
代价/错误条件
吞吐提升可能伴随首Token或长尾延迟上升,不能只看平均速度。
怎么验证
同负载测吞吐、TTFT、逐Token延迟和尾延迟;单独报告排队。
O07 · 推测解码:草稿可以快,但必须正确校验
为什么
用便宜草稿和批量验证减少目标模型逐Token串行负担。
怎么做
正确计算接受概率与残差分布,维护接受前缀后的缓存位置。
代价/错误条件
错误拒绝补偿会改变分布;草稿、校验和回退开销可能超过节省。
怎么验证
本例接受质量0.8、补偿质量0.2,合起来必须逐项等于p。
O08 · MoE:每个Token选部分计算路径
为什么
在扩大总参数容量的同时限制每Token激活计算。
怎么做
按路由规则分配与合并,并配合容量和负载管理。
代价/错误条件
专家拥堵、跨设备通信、路由失衡、训练不稳定都可能抵消收益。
怎么验证
测实际激活分布、掉Token/溢出策略、吞吐与任务质量。
O09 · Activation Checkpointing:少存一点,反向时重算
为什么
训练激活内存可能限制序列长度或批大小。
怎么做
保存关键节点,反向时重建中间激活并维持相同计算语义。
代价/错误条件
额外计算、随机状态处理、不可重复副作用与重算峰值。
怎么验证
比较开启/关闭后的损失与梯度,并分别测峰值内存和训练步耗时。
O10 · 压缩、检索与Prompt Cache:三种不同的“省”
为什么
减少上下文占用与重复推理成本,同时保持任务连续性。
怎么做
选择合适的层:证据按需获取、历史有损摘要、稳定前缀计算缓存分别处理。
代价/错误条件
把有损摘要当无损缓存;把命中缓存当作模型已永久学会;权限与版本变化后误用结果。
怎么验证
分别比较内容保真、检索召回、缓存命中与任务成功率,而不是只报Token减少。
O11 · 多Agent:可并行的工作,比Agent数量重要
为什么
利用真正独立的研究或实现方向,并隔离无关上下文。
怎么做
按依赖和写入边界分工,交接必要证据,主任务核验整合结果。
代价/错误条件
重复搜索、同文件覆盖、相关错误和过度委派会提高时间与Token成本。
怎么验证
与单Agent同任务同预算对照,记录集成缺陷和重做次数。
O12 · 模型路由:便宜一次,不一定便宜一项成功任务
为什么
在不降低可接受质量的前提下降低总投入。
怎么做
用可验证的任务边界路由,保留明确回退与质量门槛。
代价/错误条件
小模型失败未被发现、复杂任务被过早分流、重试成本和等待被忽略。
怎么验证
报告成本/成功任务、漏检率、退化题和延迟分布;不以模型自报置信度作为唯一升级条件。