乐于分享
好东西不私藏

小显卡部署大模型:从量化到卸载的显存优化路径

小显卡部署大模型:从量化到卸载的显存优化路径

DeepSeek-V4-Flash发布后,不少打工人遇到一个问题:老板要求本地部署该模型,但一看提供的设备,只是普通的消费级显卡。

老板想要花小钱办大事,这种情况应该要如何应对?本文试从学术角度来讨论这一问题。

大模型所需显存空间构成

大模型部署通常受到两方面的显存限制:一方面是模型参数本身的存储开销,另一方面是推理过程中产生的 KV Cache 开销,工程上一般会留 10% 左右的总显存作为安全余量,避免碎片化、临时 buffer、CUDA graph 等导致显存溢出。

KV Cache 是在 Transformer 自回归推理过程中,对历史 token 在各层注意力模块中计算得到的 Key(键) 和 Value(值) 进行缓存。这样在生成下一个 token 时,模型无需重新计算前面所有 token 的注意力表示,只需在已有缓存基础上继续计算,从而显著提升推理效率。但与此同时,这部分缓存会随着序列长度线性增长,因此在长文本生成、多轮对话和大并发服务场景下,会带来显著的显存压力。

研究方向

为了部署更大参数量的模型,通常会压缩精度降低速度的方式。

精度换空间

“精度换空间”主要是指通过量化(Quantization)等模型压缩手段,将原本采用 BF16、FP16 等高精度格式存储的模型权重、激活值或 KV Cache 转换为 8bit、4bit 乃至更低位宽表示,从而显著降低模型存储开销和推理显存占用。

(1)模型参数量化

近几年常见的模型参数量化如下表所示。

方法
主要量化对象
典型位宽
核心思想
LLM.int8(2022)[1]
权重 W+部分激活
常见 8bit
对大部分矩阵乘采用 8bit 量化,同时将少量异常值通道保留为高精度混合计算,从而在尽量不掉点的情况下显著降低推理显存占用。
GPTQ(2022)[2]
权重 W
常见 4bit / 3bit
利用近似二阶信息,逐层执行高精度后训练权重量化,以尽量减小低比特量化误差。
SmoothQuant(2022)[3]
权重 W+激活 A
常见 W8A8
通过等价变换将激活中的异常值平滑并迁移到权重侧,使权重和激活都能够稳定进行 8bit 量化。
AWQ(2023)[4]
权重 W
常见 4bit
利用激活统计信息识别关键通道,对少量重要权重进行保护,再对其余权重做低比特量化。
OmniQuant(2023)[5]
权重 W+激活 A
常见 W4A4、W4A16、W3A16
在后训练量化框架下,将裁剪参数与等价变换参数设为可学习变量,通过校准同时优化权重和激活量化误差。
QuaRot(2024)[6]
权重 W+激活 A
常见 W4A4
通过旋转变换削弱隐藏状态和激活中的异常值分布,使权重、激活及 KV Cache 的端到端低比特量化更稳定。
SpinQuant(2024)[7]
权重 W+激活 A
常见 W4A4
在旋转量化基础上进一步学习更优的旋转矩阵,以降低 4bit 端到端量化误差。
FlatQuant(2024)[8]
权重 W+激活 A
常见 W4A4
通过更平坦的量化优化策略降低低比特量化误差,使大模型在 W4A4 条件下仍保持较高精度与较好推理效率。
BCQ / LO-BCQ(2025)[9]
权重 W+激活 A
常见 W4A4
通过块级划分、聚类和专门码本设计,提高 W4A4 端到端量化下的精度保持能力。
ReSpinQuant(2026)[10]
权重 W+激活 A
常见 W4A4、W3A3
延续旋转量化路线,引入 layer-wise 高效残差子空间旋转,并尽量将在线旋转代价离线吸收。
GSQ(2026)[11]
权重 W
常见 2bit / 3bit
通过 Gumbel-Softmax 采样联合学习离散量化网格分配与分组尺度,在保持标量量化硬件友好性的同时提升低比特精度。

表中的模型权重为W,在推理前向传播过程中产生的激活值为A,上述方法中有些是仅针对模型权重本身进行量化,有些是针对两者联合进行量化。

模型量化后,往往会产生性能损失,根据文章[21]的实验结论,精度从16位量化到8位,损失并程度并不明显,量化到4位,则会产生明显掉点,最多会出现20%的性能衰退。

(2)KV Cache参数量化

近几年常见的KV Cache参数量化如下表所示。

方法
量化对象
典型位宽
核心思想
KIVI(2024)[12]
KV Cache
常见 2bit
对 Key 采用 per-channel 量化、对 Value 采用 per-token 量化,属于 tuning-free 的非对称 2bit KV Cache 量化方法。
KVQuant(2024)[13]
KV Cache
常见 3bit / sub-4bit
结合 pre-RoPE Key 量化、per-channel Key 量化、非均匀量化和稀疏—致密混合表示,面向超长上下文场景压缩 KV Cache。
ZipCache(2024)[14]
KV Cache
自适应低比特
通过显著 token 识别与混合精度量化,对重要 token 保留更高质量表示,对不重要 token 更激进压缩。
NQKV(2025)[15]
KV Cache
常见 4bit
基于 KV Cache 元素近似服从正态分布的观察,采用 per-block quantile quantization,以更贴合分布的方式降低量化误差。
XQuant(2025)[16]
KV Cache
低比特输入缓存
不再长期存完整 KV,而是缓存低比特层输入并按需重建 K/V,通过额外计算换取更低缓存占用和更少内存带宽压力。
XQuant-CL(2025)[17]
KV Cache
等效 sub-1.4 bit
引入数据无关校准与跨层压缩,利用相邻层 KV 相似性实现超低等效位宽压缩。
QAQ(2025)[18]
KV Cache
自适应低比特
认为 Key 与 Value 的量化敏感性不同,因此采用质量自适应的 KV Cache 量化策略。
SAW-INT4(2026)[19]
KV Cache
INT4
面向真实 serving 约束设计的系统感知型 4bit KV Cache 量化,强调兼容 paged memory、规则访存和 fused attention。
Adaptive KV-Cache Quantization(2026)[20]
KV Cache
2bit / 4bit / 8bit / FP16 自适应
根据 token 重要性动态分配 KV 精度,把有限 bit 预算优先分配给更重要的 token,以改善精度—延迟折中。
TurboQuant(2026)[22]
KV Cache
4bit
Google 提出的极限压缩路线,面向长上下文把 KV Cache 压到约 3bit,同时强调低运行时开销和强精度保持。

KV Cache做量化的空间比模型参数量化的空间大一些,以Google最新的TurboQuant[22]为例,对KV Cache做了约4倍量化(16->4)后,精度仍然能保持99.7%。

速度换空间

“速度换空间”主要是指在模型参数规模过大、显存无法完整容纳模型权重或长上下文推理过程中 KV Cache 占用过高的情况下,不再单纯依赖低比特量化压缩模型表示,而是通过CPU-GPU 异构卸载、分层加载、KV Cache 卸载、按需重算以及混合注意力计算等方式,将原本需要常驻显存的数据转移到 CPU 内存甚至磁盘中,以增加数据搬运与额外计算时间为代价,换取更大的模型部署能力。

与“精度换空间”相比,这类方法通常不会直接改变模型参数本身的数值精度,因此模型能力保持相对稳定,但其代价在于推理速度下降、端到端时延增加,尤其在长上下文和超大模型场景下更为明显。

近几年常见的模型空间优化方法如下表所示。

方法
主要优化对象
核心思想
文献结果
ZeRO-Inference(2022)[23]
模型权重
将大模型权重卸载到 CPU 内存或 NVMe 中,推理时按层动态加载到 GPU,解决超大模型无法完整驻留显存的问题。
MT-NLG-530B 半精度推理的 GPU 内存可由约 1TB 降到 10GB;论文强调该方法适用于 non-latency-sensitive applications,说明其主要代价是更高时延。
FlexGen(2023)[24]
模型权重 + Attention Cache
将 GPU、CPU 与磁盘统一纳入资源池,并对权重与缓存进行分层放置和压缩,以极限方式提升单卡可部署模型规模。
在单张 16GB GPU 上运行 OPT-175B 时,生成吞吐约 1 token/s;论文还给出,在允许 5000 s 延迟时,相对 ZeRO-Inference 吞吐可提升 40×以上,在允许 12000 s 延迟时可提升 69×,说明该路线显著依赖高时延换取更大部署规模。
LM-Offload(2024)[25]
模型权重
通过性能模型指导权重放置、量化和并行控制,提高 CPU-GPU 卸载推理效率。
相比 FlexGen,吞吐最高提升 195%、平均提升 134%;相比 ZeRO-Inference,最高提升 188%、平均提升 57%。这表明其速度虽优于已有 offload 方法,但本质上仍属于“以更高调度复杂度换更大模型部署能力”的路线。
KTransformers(2025)[26]
MoE 模型权重专家模块
面向 MoE 大模型,将共享专家等热点模块驻留 GPU,将其它专家卸载到 CPU,并结合异步调度提高 CPU-GPU 协同效率。
相对现有 hybrid inference 系统,prefill 提速 4.62–19.74×,decode 提速 1.25–4.09×;项目主页给出的部署示例为 24GB VRAM + 382GB DRAM 运行 DeepSeek-R1/V3,说明其本质仍是用更大的系统内存和更复杂调度换取单卡部署能力。
XQuant(2025)[27]
KV Cache
不长期保存完整 KV,而是缓存更小的低比特输入激活,在需要时再重建 K/V,以额外重算代替部分缓存存储。
该方法的核心出发点就是 rematerialization:通过“少存多算”降低 KV 缓存占用,因此其速度代价来自额外的 K/V 重建计算。论文将其定位为 Breaking the Memory Wall,即以内存节省换取计算开销。

使用这类方法会造成模型的吞吐量大幅降低,通常会降低10倍以上,仅适用于对“时延不敏感”的离线推理场景。

总结

想要在硬件受限的情况下部署大参数模型,要么就是牺牲精度,要么就是牺牲速度,天下没有免费的午餐。

对实际应用来说,主要还是区分应用场景,比如应用场景是让模型去清洗数据这种无强时效性的场景,可以优先选择 CPU offload 的思路;如果是实时对话,那只能从量化和压缩的角度考虑。

参考文献

[1] Dettmers T, Lewis M, Belkada Y, et al. LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale[EB/OL]. 2022.
[2] Frantar E, Ashkboos S, Hoefler T, et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers[EB/OL]. 2022.
[3] Xiao G, Lin J, Seznec M, et al. SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models[EB/OL]. 2022.
[4] Lin J, Tang J, Tang H, et al. AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration[EB/OL]. 2023.
[5] Shao W, Chen M, Zhang Z, et al. OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models[EB/OL]. 2023.
[6] Ashkboos S, Mohtashami A, Croci M L, et al. QuaRot: Outlier-Free 4-Bit Inference in Rotated LLMs[EB/OL]. 2024.
[7] Liu Z, Zhao C, Fedorov I, et al. SpinQuant: LLM Quantization with Learned Rotations[EB/OL]. 2024.
[8] Sun Y, Liu R, Bai H, et al. FlatQuant: Flatness Matters for LLM Quantization[EB/OL]. 2024.
[9] Elangovan R, Sakr C, Raghunathan A, et al. BCQ: Block Clustered Quantization for 4-bit (W4A4) LLM Inference[EB/OL]. 2025.
[10] Kim S, et al. ReSpinQuant: Efficient Layer-Wise LLM Quantization via Residual Subspace Rotation[EB/OL]. 2026.
[11] Dadgarnia A, Tabesh S, Nikdan M, et al. GSQ: Highly-Accurate Low-Precision Scalar Quantization for LLMs via Gumbel-Softmax Sampling[EB/OL]. 2026.
[12] Liu Z, Yuan J, Jin H, et al. KIVI: A Tuning-Free Asymmetric 2bit Quantization for KV Cache[EB/OL]. 2024.
[13] Hooper C, Kim S, Mohammadzadeh H, et al. KVQuant: Towards 10 Million Context Length LLM Inference with KV Cache Quantization[EB/OL]. 2024.
[14] He Y, Zhang L, Wu W, et al. ZipCache: Accurate and Efficient KV Cache Quantization with Salient Token Identification[EB/OL]. 2024.
[15] Cai Z, Zhang X, Tan Z, et al. NQKV: A KV Cache Quantization Scheme Based on Normal Distribution Characteristics[EB/OL]. 2025.
[16] Tomar A, Hooper C, Lee M, et al. XQuant: Breaking the Memory Wall for LLM Inference with KV Cache Rematerialization[EB/OL]. 2025.
[17] Yang H, et al. XQuant: Achieving Ultra-Low Bit KV Cache Quantization with Cross-Layer Compression[EB/OL]. 2025.
[18] Cheng W, et al. QAQ: Quality Adaptive Quantization for LLM KV Cache[EB/OL]. 2025.
[19] Jia J, Li J, Zhou Z, et al. SAW-INT4: System-Aware 4-Bit KV-Cache Quantization for Real-World LLM Serving[EB/OL]. 2026.
[20] Boroujeni S P H, Mehrabi N, Woods P, et al. Don’t Waste Bits! Adaptive KV-Cache Quantization for Lightweight On-Device LLMs[EB/OL]. 2026.
[21] Lee J, Park S, Kwon J, et al. Exploring the trade-offs: Quantization methods, task difficulty, and model size in large language models from edge to giant[J]. arXiv preprint arXiv:2409.11055, 2024.
[22] Zandieh A, Daliri M, Hadian M, et al. Turboquant: Online vector quantization with near-optimal distortion rate[J]. arXiv preprint arXiv:2504.19874, 2026
[23] Rajbhandari S, Ruwase O, Aminabadi R Y, et al. ZeRO-Inference: Democratizing Massive Model Inference[EB/OL]. 2022.
[24] Sheng Y, Zheng L, Zhong C, et al. FlexGen: High-Throughput Generative Inference of Large Language Models with a Single GPU[EB/OL]. 2023.
[25] Wu J, Yin S, Liu S, et al. LM-Offload: Performance Model-Guided Generative Inference of Large Language Models with Parallelism Control[EB/OL]. 2024.
[26] Chen H, et al. KTransformers: Unleashing the Full Potential of CPU/GPU Hybrid Inference for MoE Models[EB/OL]. 2025.
[27] Tomar A, Hooper C, Lee M, et al. XQuant: Breaking the Memory Wall for LLM Inference with KV Cache Rematerialization[EB/OL]. 2025