2.5 大模型硬件
GPU
GPU是什么?
GPU的英文全称Graphics Processing Unit,图形处理单元。
说直白一点:GPU是一款专门的图形处理芯片,做图形渲染、数值分析、金融分析、密码破解,以及其他数学计算与几何运算的。GPU可以在PC、工作站、游戏主机、手机、平板等多种智能终端设备上运行。
GPU和显卡的关系,就像是CPU和主板的关系。前者是显卡的心脏,后者是主板的心脏。有些小伙伴会把GPU和显卡当成一个东西,其实还有些差别的,显卡不仅包括GPU,还有一些显存、VRM稳压模块、MRAM芯片、总线、风扇、外围设备接口等等。
CPU 与 GPU 区别
CPU和GPU都是运算的处理器,在架构组成上都包括3个部分:运算单元ALU、控制单元Control和缓存单元Cache。
但是,三者的组成比例却相差很大。
在CPU中缓存单元大概占50%,控制单元25%,运算单元25%;
在GPU中缓存单元大概占5%,控制单元5%,运算单元90%。
结构组成上的巨大差异说明:CPU的运算能力更加均衡,但是不适合做大量的运算;GPU更适合做大量运算。
这倒不是说GPU更牛X,实际上GPU更像是一大群工厂流水线上的工人,适合做大量的简单运算,很复杂的搞不了。但是简单的事情做得非常快,比CPU要快得多。
相比GPU,CPU更像是技术专家,可以做复杂的运算,比如逻辑运算、响应用户请求、网络通信等。但是因为ALU占比较少、内核少,所以适合做相对少量的复杂运算。
常见 GPU 参数
| GPU型号 | 架构 | FP16性能 | FP32性能 | 显存 | 显存类型 | 带宽 |
|---|---|---|---|---|---|---|
| H100 | Hopper | 1,671 TFLOPS | 60 TFLOPS | 80GB | HBM3 | 3.9 TB/s |
| A100 | Ampere | 312 TFLOPS | 19.5 TFLOPS | 40GB / 80GB | HBM2 | 2,039 GB/s |
| A6000 | Ampere | 77.4 TFLOPS | 38.7 TFLOPS | 48GB | GDDR6 | 768 GB/s |
| A4000 | Ampere | 19.17 TFLOPS | 19.17 TFLOPS | 16GB | GDDR6 | 448 GB/s |
| V100 | Volta | 125 TFLOPS | 15.7 TFLOPS | 32GB | HBM2 | 900 GB/s |
| P6000 | Pascal | 12 TFLOPS | 12 TFLOPS | 24GB | GDDR5X | 432 GB/s |
| RTX 4000 | Turing | 14.2 TFLOPS | 7.1 TFLOPS | 8GB | GDDR6 | 416 GB/s |
| L40s | Ada Lovelace | 731 TFLOPS | 91.6 TFLOPS | 48GB | GDDR6 | 864GB/s |
| L4 | Ada Lovelace | 242 TFLOPS (Tensor Core) | 30 TFLOPS | 24GB | GDDR6 | 300GB/s |
通信协议
PCIE
是一种高速串行计算机扩展总线标准,由英特尔在2001年提出,旨在替代旧的PCI、PCI-X和AGP总线标准
- 差分通信:使用差分信号传输,具有抗干扰能力强、信号完整性好的特点,通过提高总线频率来提高总线带宽
- 多lane支持:由多个lane组成,每个lane由两组差分线组成,一组用于发送,另一组用于接收。
NVLink
同主机内不同 GPU 之间的一种高速互联方式。
- 短距离通信优化:是一种短距离通信链路,保证包的成功传输,更高性能,替代 PCIe,
- 多lane支持:link 带宽随 lane 数量线性增长,
- 互联通信:同一台 node 内的 GPU 通过 NVLink 以 full-mesh 方式(类似 spine-leaf)互联
- NVIDIA专利技术:专为NVIDIA的GPU设计,以实现最佳的性能和效率。
NVSwitch
- NVSwitch 是 NVIDIA 的一款交换芯片,封装在 GPU module 上,并不是主机外的独立交换机,用来连接同一台主机内的 GPU。 下边真机图A100的右边6块超厚散热片下面就是 NVSwitch 芯片
- 2022 年,NVIDIA 把这块芯片拿出来真的做成了交换机,叫 NVLink Switch , 用来跨主机连接 GPU 设备。
技术对比
| 特性 | PCIe | NVLink | NVSwitch |
|---|---|---|---|
| 主要用途 | 通用互联接口,连接 GPU、CPU、SSD 等设备 | GPU-GPU 或 GPU-CPU 的高速互联 | 多 GPU 系统的全互联,实现 GPU 间直接通信 |
| 连接设备数量 | 理论无限制,但共享总带宽 | 通常最多 8 块 GPU | 支持 16 GPU 以上的全互联 |
| 单连接带宽(双向) | PCIe 4.0: 32GB/sPCIe 5.0: 64GB/s | NVLink 3.0 (A100): 600GB/sNVLink 4.0 (H100): 900GB/s | 7.2TB/s (H100 集群内部的总带宽) |
| 延迟 | 相对较高 (受制于主板总线和 CPU 调度) | 较低,GPU-GPU 间直接通信 | 更低,支持多 GPU 高效协作 |
| 拓扑结构 | 树形结构 | 点对点互联 (可链式或星型) | 多 GPU 全互联 |
| 适用范围 | 通用,支持所有扩展设备 | NVIDIA GPU 专用 | 高端 GPU 集群 (如 DGX 系列) |
| 成本 | 主板自带,无额外费用 | 需要 NVLink Bridge,成本较高 | 集成于 DGX 系列服务器,需配套硬件 |
| 典型应用场景 | 单机小规模 GPU 系统或通用计算 | 深度学习分布式训练、GPU 高效协作 | 超大规模分布式集群 (16+ GPU,全互联任务) |
HBM
全称:高带宽内存(High Bandwidth Memory)
GDDR6 和 GDDR6X 封装
封装位置:GDDR6和GDDR6X显存芯片通常被直接焊接在显卡的PCB(印刷电路板)上,围绕着GPU芯片。
封装方式:这些显存芯片通常采用平面封装(Planar Packaging),并以多个芯片的形式排列在GPU周围。
散热设计:由于显存芯片和GPU都在PCB上,显卡通常会使用散热片和风扇等散热解决方案来散热。
应用示例:
- NVIDIA GeForce RTX 30系列显卡使用GDDR6X显存,显存芯片围绕在GPU周围排列
- AMD Radeon RX 6000系列显卡使用GDDR6显存,封装方式类似
HBM封装
封装位置:HBM显存与传统显存不同,它采用3D堆叠封装,并通过硅通孔(TSV)技术实现垂直连接。HBM显存芯片堆叠在一起,并与GPU一起封装在一个多芯片封装(MCP)中。
封装方式:HBM显存与GPU封装在同一个基板(Interposer)上,形成一个紧凑的整体。这种设计使得显存与GPU之间的信号路径更短,从而显著提高了带宽和降低了延迟。将多个 DDR 芯片堆叠之后与 GPU 芯片封装到一起,这样每片 GPU 和它自己的显存交互时,就不用再去 PCIe 交换芯片绕一圈,速度最高可以提升一个量级。
散热设计:由于HBM和GPU封装在一起,散热设计需要同时考虑两者的散热需求。通常会使用高效的散热方案,如液冷或高性能散热片。
应用示例:
- AMD Radeon VII显卡使用HBM2显存,显存芯片与GPU一起封装在一个基板上
- NVIDIA Tesla V100使用HBM2显存,采用类似的封装方式。
大模型精度
大模型精度是什么
在深度学习中,“精度”指的是模型在计算中表示数值的位数和范围,通常用浮点数格式表示(FP = Floating Point)。
主要几种常见精度如下(以 IEEE 754 格式为例):
| 精度类型 | 位数 | 说明 | 优点 | 缺点 |
|---|---|---|---|---|
| FP64 (double) | 64 位 | 1 位符号 + 11 位指数 + 52 位尾数 | 精度最高,科学计算用 | 速度慢、显存占用大 |
| FP32 (single) | 32 位 | 1 位符号 + 8 位指数 + 23 位尾数 | 精度较高,常用于训练 | 占显存大,计算慢于低精度 |
| FP16 (half) | 16 位 | 1 位符号 + 5 位指数 + 10 位尾数 | 显存占用小,速度快 | 精度损失,易出现溢出/下溢 |
| BF16 (bfloat16) | 16 位 | 1 位符号 + 8 位指数 + 7 位尾数 | 与 FP32 相同指数范围,精度低 | 速度快,易训练大模型 |
| FP8 | 8 位 | 两种常见格式(E5M2 / E4M3) | 极小显存占用,速度极快 | 精度损失明显,需配合量化和算法优化 |
关键点:
- 精度越高,表示范围和数值精确度越好,但计算更慢、显存占用更多。
- 低精度计算(如 FP16、BF16、FP8)可以加快训练速度、降低显存压力,但需要一定的数值稳定性优化。
不同尺寸、精度大模型所需显存
| 精度 | 7B (GB) | 13B (GB) | 30B (GB) | 70B (GB) | 110B (GB) |
|---|---|---|---|---|---|
| FP16 | 12 | 24 | 60 | 120 | 200 |
| INT8 | 8 | 16 | 40 | 80 | 140 |
| INT4 | 6 | 12 | 24 | 48 | 72 |
| INT2 | 4 | 8 | 16 | 32 | 48 |
混合精度
混合精度训练指在同一模型的训练过程中同时使用多种数值精度(通常是 FP16/BF16 和 FP32)来计算。
其核心目标是在不影响模型最终精度的情况下,提升训练速度并减少显存占用。
典型的混合精度训练做法:
- 权重存储
主权重(master weights)用 FP32 保存,以避免精度损失。
- 前向传播和反向传播计算
大部分矩阵乘法、卷积运算用 FP16 / BF16 计算,以加快速度并节省显存。
- 梯度缩放(Gradient Scaling)
由于 FP16 数值范围较小,为防止梯度下溢(underflow),会在反向传播前先乘一个缩放因子,再在更新前还原。
- 损失函数计算
一般用 FP32 计算,保持数值稳定性。
混合精度的好处
- 更快:FP16/BF16 运算在 GPU 张量核心(Tensor Core)上速度更快(尤其是 NVIDIA Volta、Ampere、Hopper 架构)。
- 更省显存:同样显存下,可以训练更大的 batch size 或更大的模型。
- 几乎无精度损失:合理使用梯度缩放等技术,最终模型精度和全 FP32 基本一致。
使用场景
- 大模型训练(LLM、Transformer):常用 BF16/FP16 混合精度。
- 推理:甚至可以用 FP8 / INT8 混合精度(量化推理)。
- 分布式训练:混合精度能减少通信带宽压力。
