1. 显存基础:显存的作用与架构、显存带宽与容量、显存与算力的关系

各位同学,咱们今天聊聊显存。说实话,我见过太多压测翻车的案例,十有八九都跟显存有关。你模型再牛,算力再强,显存一炸,全白搭。所以这一章,咱们把显存的老底儿翻出来看看。

1.1 显存到底在干啥?

显存,全名叫「视频随机存取存储器」。说白了,它就是GPU的临时仓库。你训练模型时,参数、梯度、中间激活值、优化器状态,全得往里塞。

我打个比方:算力是厨师,显存就是案板。案板太小,菜都放不下,厨师再快也没用。我在项目中遇到过,有人买了两张A100,结果显存只配了40GB版本,跑个大模型直接OOM。嗯,这就是典型的「算力配比失衡」。

核心作用三件套:

  • 存储模型参数:权重、偏置,这些是模型的大脑
  • 存储中间激活:前向传播的中间结果,反向传播要用
  • 存储优化器状态:Adam的动量、方差,占显存的大头

1.2 显存架构:从HBM到GDDR

现在的显存架构,主流就两种:HBM(高带宽显存)和GDDR(图形双倍数据率显存)。

HBM长啥样?它像叠罗汉一样,把多个DRAM die堆叠在一起,通过硅通孔(TSV)连接。这样做的好处是——带宽极高,功耗相对低。A100、H100用的就是HBM2e和HBM3。

GDDR呢?它更像平铺在地板上的瓷砖,走线长,频率高,但带宽不如HBM。RTX 4090用的就是GDDR6X。

我个人习惯:做推理部署时,优先看GDDR,性价比高。做训练压测,尤其是大模型,必须上HBM。你想想看,训练Llama 2 70B,用GDDR的话,通信开销能把你逼疯。

下面这张图,我画了显存的核心架构,帮你理清数据怎么流动:

显存核心架构与数据流 GPU 核心 流处理器 / Tensor Core 负责计算 显存控制器 (MC) 调度与地址映射 HBM 堆叠 DRAM Die 0 DRAM Die 1 DRAM Die 2 DRAM Die 3 TSV 硅通孔 带宽通道 1024-bit 位宽 2 TB/s 带宽 容量规格 40GB / 80GB 常见 数据流:GPU核心 → 显存控制器 → HBM堆叠(通过TSV访问各层) ⚠ 瓶颈常出现在:控制器调度延迟 + HBM带宽上限

1.3 显存带宽与容量:两个关键指标

带宽和容量,这两个参数你得刻在脑子里。我见过太多人只看容量,不看带宽,结果压测时吞吐死活上不去。

带宽公式:

显存带宽 = 显存频率 × 显存位宽 × 2(DDR双倍速率)

举个例子:A100 80GB,HBM2e频率1215 MHz,位宽5120-bit。

带宽 = 1215 MHz × 5120 bit / 8 × 2 ≈ 2039 GB/s ≈ 2 TB/s

容量呢?它决定了你能塞多大的模型。我算过一笔账:

模型规模 参数数量 FP16权重 Adam优化器 梯度+激活 总显存需求
LLaMA 7B 70亿 14 GB 28 GB ~8 GB ~50 GB
LLaMA 13B 130亿 26 GB 52 GB ~15 GB ~93 GB
LLaMA 70B 700亿 140 GB 280 GB ~80 GB ~500 GB

我曾经踩过的坑: 有一次压测LLaMA 13B,我算着显存刚好够93GB,结果跑起来直接OOM。为什么?因为我忘了算「通信缓冲区」和「框架内部缓存」。后来我学乖了,算显存时至少留20%余量。

1.4 显存与算力的关系:匹配才是王道

算力和显存,就像发动机和油箱。发动机再猛,油箱太小,跑不远。反过来,油箱再大,发动机没劲,也跑不快。

我习惯用一个指标来衡量匹配度——算力带宽比:

算力带宽比 = 峰值算力(TFLOPS) / 显存带宽(GB/s)

这个比值告诉你:每读取1GB数据,GPU能做多少次计算。比值太高,说明算力过剩,显存带宽成了瓶颈。比值太低,说明显存带宽浪费,算力不够用。

我建议的参考值:

  • 大模型训练:算力带宽比在 200-300 之间比较合理
  • 推理场景:比值可以低一些,100-200 就够
  • 如果比值超过 400,你大概率被显存带宽卡死了

举个例子,A100 80GB的算力是312 TFLOPS(FP16),带宽是2 TB/s。算力带宽比 = 312 / 2039 ≈ 0.15 TFLOPS/GB。嗯,这个值其实偏低,说明A100的设计更偏向带宽密集型任务。

而H100呢?算力高达1979 TFLOPS(FP8),带宽3.35 TB/s,比值约0.59。明显更均衡,适合大模型训练。

你想想看,如果你用一张算力超强的卡,但显存带宽跟不上,会发生什么?GPU核心大部分时间在等数据,利用率上不去。我在压测时就见过,GPU利用率只有30%,但显存带宽已经跑满了。这就是典型的「显存带宽瓶颈」。

实战判断方法:

压测时,用 nvidia-smi dmon 或者 Nsight Systems 看两个指标:

  • GPU利用率:如果低于80%,说明算力没喂饱
  • 显存带宽利用率:如果接近100%,说明带宽是瓶颈

两个指标一对比,瓶颈在哪一目了然。

好了,这一章咱们把显存的基础打牢了。记住:显存不是越大越好,带宽、容量、算力三者要匹配。下一章,咱们聊聊怎么用工具把这些指标抓出来,看看压测时到底谁在拖后腿。


想要更多资料,联系可可