一句话定义:显存卸载(CPU Offload)是把模型的部分权重或推理时的 KV 缓存(Key-Value Cache)从 GPU 显存挪到内存(CPU RAM),需要计算时再搬回显存,从而让显存装不下的模型也能跑起来,代价是速度明显下降。
打个比方:显存像厨房台面,只够摆一口锅和几盘切好的菜;内存像冰箱,容量大但拿取慢。你要做一桌宴席(大模型),不可能把所有食材都摊在台面上,于是把大部分先放冰箱,每次只拿当前要下锅的那几样。台面够大时,厨师流水线顺畅;频繁开冰箱拿取,做饭就慢。GPU 计算极快,但数据从内存经 PCIe 总线搬到显存,比显存内部读写慢得多,而且搬运时 GPU 可能在等。
常见做法有两种。一是按层卸载:把一部分网络层留在内存,前向传播到那层时再加载,算完放回。二是 KV 缓存卸载:长上下文推理时,旧 token 的 KV 缓存太占显存,就挪到内存,需要时再取回。框架通常还会做预取(prefetch),尽量用计算掩盖传输,但效果受限于总线带宽。
和相邻概念的区别:
| 手段 | 省的是什么 | 主要代价 | 典型场景 |
|---|---|---|---|
| CPU Offload | 显存占用 | 搬运导致速度下降 | 单卡跑大模型、长上下文 |
| 量化(AI 词典:Quantization">Quantization) | 显存占用和算力 | 精度损失 | 推理部署 |
| 梯度检查点(Gradient Checkpointing) | 训练激活显存 | 重算时间 | 训练大模型 |
| 张量并行(Tensor Parallelism) | 单卡显存 | 通信开销、需多卡 | 多卡训练推理 |
| 统一内存(Unified Memory) | 编程复杂度 | 自动换页不可控 | 驱动/系统级托管 |
Offload 不改变数值精度,只改变数据存放位置;量化是让每个参数占更少比特;梯度检查点用重算换显存;张量并行是把模型切到多张卡,靠高速互联而不是内存。统一内存由驱动自动换页,Offload 通常是框架显式控制,调优空间更大。
对从业者的意义:Offload 是"能不能跑"和"跑得快不快"之间的旋钮。显存不足时,它能让大模型先跑起来;追求吞吐时,通常优先考虑量化、合适尺寸的模型或换更大显存的卡,把 Offload 当兜底。调参时关注分层策略、预取和锁页内存(pinned memory),不同框架的参数名和支持程度不一样,以官方页面为准。
对普通职场人:这解释了为什么同一个模型在不同机器上速度差很多,也解释了"显存不够"的报错为何能靠卸载缓解但会变慢。买机器或选云实例时,显存容量决定能跑多大,显存带宽决定跑多快;如果预算有限又必须跑大模型,接受速度掉档就是必要的取舍。
