1. 显存基础概念:显存是什么、显存的作用、显存与内存的区别

大家好,我是你们这堂课的主讲人。咱们今天聊点实在的——显存。

很多同学一上来就问我:“老师,显存是不是就是显卡上的内存?”嗯,这个说法对了一半。但搞AI的人,如果只理解到这一层,后面踩坑是迟早的事。我自己就吃过这个亏,所以今天咱们把显存这个概念彻底掰扯清楚。

1.1 显存到底是什么?

显存,全名叫“视频随机存取存储器”(VRAM,Video Random Access Memory)。说白了,它就是显卡上专门用来存数据的高速仓库。

你想想看,CPU有内存,GPU凭什么不能有自己的专用存储?因为GPU的工作模式跟CPU完全不同。CPU处理的是通用任务,数据量小但逻辑复杂;GPU处理的是大规模并行计算,数据量大得惊人。如果让GPU去抢内存的数据,光排队就能把性能拖垮。

所以,显存就是给GPU量身定做的“专属仓库”。

核心定义:显存是GPU芯片直接访问的高速存储区域,用于暂存待处理的图像数据、模型参数、中间计算结果等。

我在项目中遇到过一件事:有次训练一个7B参数的LLM,显存只有16GB,结果模型死活加载不进去。后来一查,光是模型参数就占了14GB,加上优化器状态和梯度,直接爆显存。嗯,这就是典型的“仓库不够大,货进不去”。

1.2 显存到底在干什么活?

显存的作用,我总结成三件事:

  1. 存模型——你的神经网络权重、偏置,全在显存里待着。
  2. 存数据——训练用的batch数据、推理用的输入输出,也得放显存。
  3. 存中间结果——前向传播的激活值、反向传播的梯度,这些临时数据最吃显存。

举个例子,你用PyTorch训练一个ResNet-50,batch size设为64。模型参数大概25MB,但一张224x224的RGB图像是150KB,64张就是9.6MB。再加上每一层的激活值,前向传播时显存占用轻松飙到几百MB。反向传播时还要存梯度,又翻一倍。

为什么会这样?因为GPU的计算速度太快了,它不能等数据从内存慢慢搬过来。显存必须提前把数据准备好,GPU伸手就能拿到。这就是显存存在的根本原因——消除数据搬运的瓶颈。

个人经验:我习惯在训练前先用torch.cuda.memory_summary()看一眼显存分配情况。这能帮你提前发现哪些层在“偷吃”显存。

1.3 显存 vs 内存:到底差在哪?

很多新手把显存和内存混为一谈,其实它们差别大了去了。我画了一张对比图,你看完就明白了。

显存 vs 内存:核心差异对比 系统内存(DRAM) CPU 直接访问 容量大(8GB~128GB) 带宽低(~50GB/s) 显存(VRAM) GPU 直接访问 容量小(4GB~80GB) 带宽高(~900GB/s) 注:显存带宽通常是内存的 10~20 倍,但容量小得多

从图上你能看到几个关键差异:

对比维度 系统内存 显存
访问者 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到底是怎么管理这块“黄金仓库”的。

想要更多资料,联系可可