我们在模型的使用过程中,经常会发现一些模型显存够用但是算力跟不上,这时就会出现有关显存和算力之间的关系,尤其是有些模型会出现不吃显存但是很吃算力的情况,需要具体情况具体进行分析。
1、显存和算力的关系
概念 | 通俗理解 | 决定因素 |
---|---|---|
显存(Memory) | GPU 上存数据的"仓库" | 模型参数大小、KV cache、大批量输入、激活值等 |
算力(Compute) | GPU/CPU 执行矩阵乘法的"发动机" | AICore/SM 数量、主频、算力峰值(TFLOPS) |
显存不是抽象的"容量",而是由独立的存储芯片提供的,焊在 GPU 板卡上,常见的显存芯片是HBM和GDDR:
- GDDR6/GDDR6X:常见于消费级显卡(RTX 系列),容量一般 8GB~24GB
- HBM2e/HBM3:用于数据中心级(A100、H100、Ascend 910B),容量 40GB~192GB,带宽更高
决定显存大小的物理因素:
- 显存芯片颗数与容量(比如 8 颗 × 8GB = 64GB)
- 显存总线宽度与带宽(影响数据读写速度)
- GPU 控制器支持的最大寻址容量
A100(80GB)用的是 HBM2e,显存芯片总容量物理就是 80GB,没法通过软件"变大"。如果模型 + KV cache 超过了 80GB,就只能拆分(分布式)或换更大显存的卡。
算力的载体是GPU 核心(SM/AI Core),算力来自 GPU 内部的计算单元(CUDA Core、Tensor Core 或 NPU AICore)。它们负责执行矩阵乘法、向量加法等浮点操作。
算力大小的主要物理决定因素:
硬件指标 | 含义 | 对算力的影响 |
---|---|---|
核心数量 (SM / AICore 数量) | 并行计算单元多少 | 决定并行能力 |
每核心算力 (FLOPs per core) | 单核每秒能算多少次浮点 | 决定单位核心性能 |
时钟频率 (MHz/GHz) | 工作频率 | 频率越高,算力越强 |
数据类型支持 (FP32 / FP16 / BF16 / INT8) | 不同精度对应不同吞吐 | 混合精度可大幅提升算力 |
类似CPU的计算原则,算力 = 核心数 × 每核每周期操作数 × 主频 × (是否使用 Tensor Core 等加速单元)
2、硬件是显存和算力的根本制约
限制对象 | 来自硬件的物理约束 |
---|---|
显存容量 | 显存芯片数量、单颗容量、控制器寻址范围 |
显存带宽 | 显存接口位宽、时钟频率 |
算力上限 | SM/AICore 总数、主频、工艺制程、功耗散热能力 |
数据精度支持 | 硬件是否支持 FP16/BF16/INT8 等指令集 |
软件无法"创造"更多显存或算力,只能更高效地利用现有资源(比如通过量化节省显存,或通过并行提升利用率)。总的来说1、显存是容量限制,由 GPU 上的存储芯片决定,决定你能"装下"什么。2、算力是计算能力,由核心数量和频率决定,决定你能"算得多快"。
3、HBM
HBM(High Bandwidth Memory) 是一种专为高性能计算(HPC、AI、大模型)设计的显存技术,它最大的特点就是:
- 带宽极高(是 GDDR6 的 3~5 倍)
- 封装紧凑(垂直叠层 TSV 封装,距离 GPU 核心极近)
- 功耗更低(同样带宽下耗电远小于 GDDR)
简单说:GDDR 就像是「在主板上插内存条」;HBM 就像是「把内存直接焊在 CPU 上」,离核心更近、传得更快。