WAKMan: Workload Aware KVCache Manager
vLLM 的前缀缓存该用哪种淘汰策略,取决于此刻的流量。agent 请求几秒后就带着同样的历史回来,默认的 LRU 正合适;热门系统提示和多轮对话的历史隔很久才回来,要靠优先保护反复被用的块的 S3FIFO 才留得住。作者在 20 种请求混合上实测,两种策略各有输赢。WAKMan 每 15 分钟把刚过去的流量在两套模拟缓存上各重放一遍,下一段时间用命中率更高的那套,平均比只用 LRU 多 5 个点的命中率。
今日场景今天基础设施赛道有 10 篇,4 篇有深度解读,主线是让大模型推理在显存紧张时省得下、跑得动。GateRQ 按门控决定每次查表读几级精度,把 Engram 记忆表压到原来的八分之一左右;WAKMan 按最近的流量在两种前缀缓存淘汰策略之间切换;折叠偏置的方法让压缩后的 KV cache 能直接交给 vLLM。eBay 先给图索引节点重新编号再压缩边,边存储省下约一半且查询不变慢。另有三值模型导出时的 bf16 舍入问题,以及 CUDA 13.4 的 GPU 显存隔离。做推理服务的团队可以先看折叠偏置和 WAKMan,做向量检索的团队可以先看 eBay 的图索引压缩。 — 评分 118 篇,入选 10 篇,分数 4.00 – 4.40
给大模型的 n-gram 记忆表做低比特量化时,把精度留给访问最多的行反而比随机挑还差。原因在门控:DeepSeek 的 Engram 这类条件记忆层查出的向量要乘一个门控,常见虚词的门控很小,罕见实体名的门控很大,量化误差按门控放大。GateRQ 把每行存成几级单比特残差码,每次查表先读第一级算出门控,再在同一个 batch 里按门控估出的重要度排序,排在最前的一小部分读到第三级,其次的读到第二级,其余停在第一级;各级的比例由事先定好的平均读取比特数预算决定。不重训模型,DeepSeek 最新的 Flash 模型每张 GPU 上的表从 23.6 GiB 降到 3.0 GiB,省下的显存让长上下文吞吐比 FP8 表明显更高。
vLLM 的前缀缓存该用哪种淘汰策略,取决于此刻的流量。agent 请求几秒后就带着同样的历史回来,默认的 LRU 正合适;热门系统提示和多轮对话的历史隔很久才回来,要靠优先保护反复被用的块的 S3FIFO 才留得住。作者在 20 种请求混合上实测,两种策略各有输赢。WAKMan 每 15 分钟把刚过去的流量在两套模拟缓存上各重放一遍,下一段时间用命中率更高的那套,平均比只用 LRU 多 5 个点的命中率。
KV cache 压缩已能把长文档的缓存砍到十分之一,但效果最好的 Attention Matching 给每个保留的键向量加了一个偏置,vLLM 没有地方放它。这篇论文用读文档时产生的 query 为每个注意力头算出一个方向,让这些 query 在它上面的投影平均正好是 1,再把每个键向量沿它挪动一段与偏置成正比的距离,投影接近 1 的 query 看到的分数变化就约等于偏置。不改源码的 vLLM 在一张 T4 上同时装下的请求从 4 个变成 31 个。
向量检索的 HNSW 图索引里,向量本身已经常被量化压小,邻接表里的边反而成了内存大头,但边要在每次查询走图时现场解码,压缩不能拖慢查询。eBay 和比萨大学的这篇工作先离线给节点重新编号,让相邻节点的编号靠近,再用支持 SIMD 的整数压缩器 Stream VByte 现场解码。边存储最多省下 52.7%,延迟几乎不变;在 eBay 线上部署时,边存储最多减少 44.3%,查询延迟没有变差。
三值大模型发布时,导出流程先把潜在权重转成 bf16,这一步会悄悄抹掉小学习率微调学到的大部分改动。原因是微调更新的是高精度的潜在权重,只有潜在权重越过阈值(所在张量平均幅度的一半)时,对应的三值码才会改变;小学习率下,多数改动只比阈值多出一点点。而阈值附近 bf16 能表示的相邻数值隔得比这点改动还远,一转就把刚越过阈值的权重拉回原处。按文档流程导出后,Falcon-E-1B-Base 的 GSM8K 准确率从 58.79% 掉到 0.78%。
权重和激活都量化到低比特后,同一个量化区间里的激活被取成同一个值,精度因此下降。ResCom 把激活被舍掉的残差拿回来补偿层输出误差。它在校准数据上统计残差的协方差,以及输出误差和残差的互协方差。先用前者把残差各维的尺度和相关性拉平,再对拉平后的互协方差矩阵做奇异值分解。取最能解释输出误差的几个方向,就直接得到低秩修正矩阵,不需要梯度训练。在 4 bit 权重和激活的 Llama-3-8B 上,五样本 GSM8K 准确率从 23.96% 提到 36.16%。
agent 服务里,模型推理跑在 GPU 集群上,工具调用跑在分散的 CPU 上,现有调度器不看工具什么时候返回,也只用启发式规则决定哪些会话上 GPU、放在哪个节点。TAO 为每个会话和每个节点算三项:这个节点上缓存还能复用多少(随时间衰减),工具是否会在下个调度窗口内返回(按工具自己报告的进度或同类工具的历史耗时估算),会占多少 token。动态规划在容量限制下一起决定选谁、放哪,目标是让选中会话的缓存复用总量最大,平手时就绪的会话越多越好,再平手时偏向 token 多的。在 12 组模型、负载和并发设置里,首 token 平均延迟最多降低 36.3%。
混合注意力模型做变长训练时,最长的样本在全注意力层需要几十张卡组成的大序列并行组,稀疏注意力层在单机小组里就能平衡。复用大组会让稀疏层通信跨机,单独再切换分组又要多搬一次数据。全注意力层本来就要做一次全交换通信来交换注意力头,Layerwise Repacking 在这次交换里顺便把样本重新分到单机小组,隐状态留在小组里直到下一个全注意力层,端到端训练时间平均缩短 7.61%。
同一个底座模型挂着大量 LoRA 适配器时,要在共享的秩预算下压缩它们,既要定每个适配器各层留多少秩,也要定预算在适配器之间怎么分。FRA 不用标注,拿一小批无标注输入,比较压缩前后适配器输出分布的差异(JS 散度),逐个截断模块测出这个差异,用动态规划拼出每个适配器的压缩曲线,再在整批适配器上做让最差者损失最小的分配。在 3 个公开集合共 78 个适配器上,预算紧时最差适配器的效果明显更好。
很多 AI 任务只用得了一块 GPU 的一小部分,以往的共享方式里,轮流占用的时间片不限制显存,多进程并发的 MPS 也没有对应用透明的显存上限。NVIDIA 的这篇博客介绍 CUDA 13.4 新增的显存边界:任务申请多少就只能用多少,超出就分配失败,也可以设保底加可突发的上限。配套的开源 GPU Fractioning Operator 在 Kubernetes 节点上配置和监督 MPS,KAI Scheduler v0.18.0 负责按注解把分数 GPU 分给各个容器。