FOSCAR让2比特KV缓存不再逐值反量化:把缩放与偏移折进矩阵乘,H100与B200上解码注意力快过BF16
核心概要
低比特KV缓存能减少显存读取,但现有内核仍要逐个把整数还原成浮点并乘缩放、加偏移,指令发射成为新瓶颈。FOSCAR把每个量化组共享的缩放与偏移折叠到矩阵乘的另一操作数或部分积上,并用位操作直接从打包整数构造张量核操作数。在H100与B200上,其INT2内核相对FlashInfer BF16取得几何平均加速,并已作为内核库开源。
深度剖析
解码注意力读取低比特KV缓存时,瓶颈从显存带宽转向指令发射:把每个整数还原成浮点并施加组内缩放与偏移,占用了稀缺的指令发射槽。 此前KIVI、QServe、BitDecoding、SAW-INT4、OSCAR等内核都在每次矩阵乘之前转换或重建低比特数值,即使不把反量化后的K、V写回显存,逐元素准备仍限制延迟收益。 在H100上,为四个BF16张量核操作数做INT4重建需要六条指令,即每条warp lane六个lane-slot,而四个INT4值只占两个字节;B200上重建四个值需要十二条指令。按每字节的指令需求与硬件峰值相比,INT2重建在B200上超过峰值,INT4重建也占去峰值预算的相当部分。
FOSCAR不逐值施加缩放与偏移,而是把每个量化组共享的缩放乘到矩阵乘的另一输入或部分积上,把偏移作为输出修正加上。 这一做法称为仿射折叠,按量化方案分两种:token-wise的K对QK部分积做累加器折叠,channel-wise的K则先缩放查询;V侧对应地折叠到PV的输入或部分积。 在精确算术下,仿射折叠得到的注意力输出与逐值反量化后再做矩阵乘的结果相同;在H100与B200上,相对逐值重建的消融显示折叠带来额外加速,B200上把INT2的KV操作数从FP8换成FP4还带来进一步加速。
启示与展望
演示范围限于NVIDIA H100与B200上的解码注意力内核,以及把FOSCAR接入SGLang、以Qwen3-8B在100K输入与1K输出、99%或95%前缀缓存命中率下测得的服务吞吐;量化组为token-wise的K与V、组内共享FP32缩放与偏移。
服务精度对比中,各配置在GPQA-Diamond与GSM8K上的准确率差异的95%置信区间均跨零,五次运行既未显示可测的提升也未显示损失,但不足以确立形式等价;INT2内核误差与OSCAR INT2处于同一量级,误差来自2比特量化而非仿射折叠。
