1. 显存基础概念:显存是什么、显存的作用、显存与内存的区别
大家好,我是你们这堂课的主讲人。咱们今天聊点实在的——显存。
很多同学一上来就问我:“老师,显存是不是就是显卡上的内存?”嗯,这个说法对了一半。但搞AI的人,如果只理解到这一层,后面踩坑是迟早的事。我自己就吃过这个亏,所以今天咱们把显存这个概念彻底掰扯清楚。
1.1 显存到底是什么?
显存,全名叫“视频随机存取存储器”(VRAM,Video Random Access Memory)。说白了,它就是显卡上专门用来存数据的高速仓库。
你想想看,CPU有内存,GPU凭什么不能有自己的专用存储?因为GPU的工作模式跟CPU完全不同。CPU处理的是通用任务,数据量小但逻辑复杂;GPU处理的是大规模并行计算,数据量大得惊人。如果让GPU去抢内存的数据,光排队就能把性能拖垮。
所以,显存就是给GPU量身定做的“专属仓库”。
核心定义:显存是GPU芯片直接访问的高速存储区域,用于暂存待处理的图像数据、模型参数、中间计算结果等。
我在项目中遇到过一件事:有次训练一个7B参数的LLM,显存只有16GB,结果模型死活加载不进去。后来一查,光是模型参数就占了14GB,加上优化器状态和梯度,直接爆显存。嗯,这就是典型的“仓库不够大,货进不去”。
1.2 显存到底在干什么活?
显存的作用,我总结成三件事:
- 存模型——你的神经网络权重、偏置,全在显存里待着。
- 存数据——训练用的batch数据、推理用的输入输出,也得放显存。
- 存中间结果——前向传播的激活值、反向传播的梯度,这些临时数据最吃显存。
举个例子,你用PyTorch训练一个ResNet-50,batch size设为64。模型参数大概25MB,但一张224x224的RGB图像是150KB,64张就是9.6MB。再加上每一层的激活值,前向传播时显存占用轻松飙到几百MB。反向传播时还要存梯度,又翻一倍。
为什么会这样?因为GPU的计算速度太快了,它不能等数据从内存慢慢搬过来。显存必须提前把数据准备好,GPU伸手就能拿到。这就是显存存在的根本原因——消除数据搬运的瓶颈。
个人经验:我习惯在训练前先用torch.cuda.memory_summary()看一眼显存分配情况。这能帮你提前发现哪些层在“偷吃”显存。
1.3 显存 vs 内存:到底差在哪?
很多新手把显存和内存混为一谈,其实它们差别大了去了。我画了一张对比图,你看完就明白了。
从图上你能看到几个关键差异:
| 对比维度 | 系统内存 | 显存 |
|---|---|---|
| 访问者 | CPU | GPU |
| 典型容量 | 8GB ~ 128GB | 4GB ~ 80GB |
| 带宽 | ~50 GB/s (DDR5) | ~900 GB/s (HBM2e) |
| 延迟 | ~100ns | ~200ns(但吞吐量高) |
| 主要用途 | 操作系统、应用程序 | 图形渲染、AI计算 |
| 物理位置 | 主板上,靠近CPU | 显卡PCB上,靠近GPU核心 |
这里有个关键点:显存带宽是内存的10到20倍。为什么?因为GPU一次要喂几千个线程的数据,带宽不够的话,所有核心都得干等着。我见过一个项目,用RTX 3090训练模型,显存带宽936GB/s,换成DDR4内存的话,带宽只有25GB/s,训练速度直接掉到1/30。
避坑指南:我曾经犯过一个错误——以为显存不够可以用内存来凑。结果用torch.cuda.amp做混合精度训练时,显存确实省了,但频繁的CPU-GPU数据交换导致训练速度暴跌。后来我学乖了:显存不够时,优先考虑梯度检查点或模型并行,而不是依赖内存交换。
1.4 显存的技术演进
显存不是一成不变的。我入行那会儿,主流还是GDDR5,带宽也就200GB/s出头。现在HBM(高带宽显存)已经干到2TB/s以上了。为什么要有这么多代?因为AI模型越来越大,显存必须跟上。
目前常见的显存类型:
- GDDR6/GDDR6X:消费级显卡标配,比如RTX 4090就用GDDR6X,带宽约1TB/s。
- HBM2e/HBM3:专业计算卡用的,比如A100、H100,带宽可达2TB/s以上。
- LPDDR:一些低功耗设备会用,但带宽和容量都有限。
你想想看,HBM为什么快?因为它把显存堆叠在GPU核心旁边,通过硅中介层连接,走线短、通道多。GDDR6是走PCB走线的,距离长、通道少。这就是物理差距。
1.5 显存管理为什么重要?
搞AI的人,迟早会遇到显存瓶颈。我见过太多人,模型写好了,一跑就OOM(Out of Memory)。然后开始调batch size、换小模型、甚至换显卡。其实很多时候,问题出在显存管理上。
举个例子,PyTorch默认会缓存显存分配器,你del tensor之后,显存不会立刻释放给系统,而是留在缓存里。这本身是为了加速,但如果你不注意,就会觉得显存“只增不减”。
一句话总结:显存是AI计算的“命门”。不理解显存,你就无法真正掌控模型训练和推理的性能。
好了,这一章的内容就到这里。显存的基础概念我们讲清楚了:它是什么、干什么用、跟内存有什么区别。下一章我们会深入显存的分配机制,看看GPU到底是怎么管理这块“黄金仓库”的。
想要更多资料,联系可可