LLM 推理的瓶颈正在从算力转向内存带宽:RAG、推理时算力扩展和长上下文应用让请求序列越来越长,而内存容量和通信带宽的增速跟不上负载复杂度——这就是业界常说的"内存墙"。自回归解码每生成一个 token 都要读一遍不断增长的 KV 缓存,数据搬运本身成了延迟和能耗的大头。

UC Berkeley、ICSI 与 LBNL 的研究团队 9 月 14 日在 arXiv 提交论文《LLM Inference in a Flash!》,给出的答案是把推理搬进 Flash 存内计算(Compute-in-Flash)设备,再用算法为这套硬件"量身裁剪"。作者包括 Michael W. Mahoney、Yakun Sophia Shao、Kurt Keutzer、Amir Gholami 等人(arxiv.org/abs/2609.16161)。

两个瓶颈,两套算法

Flash 存内计算把计算单元搬到存储阵列旁边,靠 SSD 的大容量和高内部读带宽绕开内存墙。但直接跑 LLM 有两道坎:这类设备不支持高精度浮点运算,且写入寿命有限——KV 缓存恰好是高频动态写入,正好踩在短板上。

团队的应对是两条算法线并行。其一是端到端整数化量化:从线性层到 Softmax、RMSNorm、SiLU 等非线性算子全部用整数近似(多项式/移位实现),彻底消除浮点计算。在 Llama-3.1-8B 上,完整整数流水线的 WikiText-2 困惑度为 7.5803,与 FP16 基线 7.5454 只差 0.0349;论文特别提到,不加 INT16 重量化的裸整数非线性近似会让激活直接发散成 NaN。

其二是基于稀疏字典编码的 KV 缓存压缩:为每层的 K 和 V 各训练一个 32768 原子的过完备字典,常驻 Flash 只读;每个 KV 向量表示为少数字典原子的线性组合(稀疏码),写入量大幅缩减,正好避开写入寿命限制。配合局部窗口(128 token)加查询感知的两级稀疏(先 3 个原子粗筛、对前 10% token 精修到 16 个原子),Llama-3.1-8B 的 LongBench 平均分 43.65 对基线 44.07,动态 KV 缓存流量压缩 15 倍,Qwen-2.5-7B 上 44.23 对 44.44,同样保住 99% 分数。

为什么这套设计偏爱 Flash

论文有一个诚实的讨论值得注意:同样的字典压缩搬到 GPU 上并不划算——字典得反复从 HBM 搬运,1K 上下文时反而比不压缩更慢(0.96 倍)。只有当字典常驻 CIM 阵列、投影和 gather 在数据旁边就地完成时,收益才兑现。系统级建模显示,对 256K 长上下文,CIM-SSD 方案对比 NPU+DRAM 基线延迟降 4.4 倍、能耗降 6.8 倍;1K 短上下文也有 3.1 倍延迟和 2.7 倍能耗收益。

所以呢

这项工作的真正启示不是"15 倍压缩"这个数字,而是算法与硬件的协同设计范式:与其在 GPU 内存层级里继续挤水分,不如让推理算法迁就新型存储硬件的物理约束——整数化迁就算力约束,只读字典迁就写入寿命。当 HBM 供给紧张、边缘端长上下文需求膨胀时,这类"为 Flash 重写推理"的路线值得持续关注。当然,论文也坦承局限:只覆盖了解码阶段,计算密集的 prefill 如何映射到 CIM 仍是未解问题。