本文来自“算力大时代,AI算力产业链全景梳理(2023)”,从广义上讲,能运行AI算法的芯片都叫AI芯片。CPU、GPU、FPGA、NPU、ASIC都能执行AI算法,但在执行效率层面上有巨大的差异。CPU可以快速执行复杂的数学计算,但同时执行多项任务时,CPU性能开始下降,目前行业内基本确认CPU不适用于AI计算。
CPU+xPU的异构方案成为大算力场景标配,GPU为应用最广泛的AI芯片。目前业内广泛认同的AI芯片类型包括GPU、FPGA、NPU等。由于CPU负责对计算机的硬件资源进行控制调配,也要负责操作系统的运行,在现代计算系统中仍是不可或缺的。GPU、FPGA等芯片都是作为CPU的加速器而存在,因此目前主流的AI计算系统均为CPU+xPU的异构并行。CPU+GPU是目前最流行的异构计算系统,在HPC、图形图像处理以及AI训练/推理等场景为主流选择。IDC数据显示,2021年中国AI芯片市场中,GPU市占率为89%。
(相关资料图)
在GPU问世以后,NVIDIA及其竞争对手ATI(被AMD收购)一直在为他们的显卡包装更多的功能。2006年NVIDIA发布了CUDA开发环境,这是最早被广泛应用的GPU计算编程模型。CUDA将GPU的能力向科学计算等领域开放,标志着GPU成为一种更通用的计算设备GPGPU(General Purpose GPU)。NVIDIA也在之后推出了面向数据中心的GPU产品线。
GPU性能提升与功能丰富逐步满足AI运算需要。2010年NVIDIA提出的Fermi架构是首个完整的GPU计算架构,其中提出的许多新概念沿用至今。Kepler架构在硬件上拥有了双精度计算单元(FP64),并提出GPUDirect技术,绕过CPU/System Memory,与其他GPU直接进行数据交互。Pascal架构应用了第一代NVLink。
Volta架构开始应用Tensor Core,对AI计算加速具有重要意义。简要回顾NVIDIA GPU硬件变革历程,工艺、计算核心数增加等基础特性的升级持续推动性能提升,同时每一代架构所包含的功能特性也在不断丰富,逐渐更好地适配AI运算的需要。
AI的数据来源广泛,GPU逐渐实现对各类数据类型的支持。依照精度差异,算力可从INT8(整数类型)、FP16(半精度)、FP32(单精度)、FP64(双精度)等不同维度对比。AI应用处理的数据包括文字、图片或视频,数据精度类型差异大。对于数据表征来讲,精度越高,准确性越高;但降低精度可以节省运算时间,减少成本。
总体来看,精度的选择需要在准确度、成本、时间之间取得平衡。目前许多AI模型中运行半精度甚至整形计算即可完成符合准确度的推理和训练。随着架构的迭代,NVIDIA GPU能支持的数据类型持续丰富,例如Turing架构T4开始支持INT8,Ampere架构A100的Tensor Core开始支持TF32。
均衡分配资源的前提下,处理低精度的硬件单元数量更多,表现更高的算力性能。GPU作为加速器得到广泛应用一定程度上得益于它的通用性,为了在不同精度的数据类型上具有良好的性能,以兼顾AI、科学计算等不同场景的需要,英伟达在分配处理不同数据类型的硬件单元时大体上保持均衡。因为低精度数据类型的计算占用更少的硬件资源,同一款GPU中的处理低精度数据类型的硬件单元的数量较多,对应计算能力也较强。以V100为例,每个SM中FP32单元的数量都为FP64单元的两倍,最终V100的FP32算力(15.7 TFLOPS)也近似为FP64(7.8 TFLOPS)的两倍,类似的规律也可以在各代架构旗舰P100、A100和H100中看到。
GPU引入特殊硬件单元加速AI的核心运算环节。矩阵-矩阵乘法(GEMM)运算是神经网络训练和推理的核心,本质是在网络互连层中将大矩阵输入数据和权重相乘。矩阵乘积的求解过程需要大量的乘积累加操作,而FMA(Fused Multiply–accumulate operation,融合乘加)可以消耗更少的时钟周期来完成这一过程。传统CUDACore执行FMA指令,硬件层面需要将数据按寄存器->ALU->寄存器->ALU->寄存器的方式来回搬运。2017年发布的Volta架构首度引入了Tensor Core(张量核心),是由NVIDIA研发的新型处理核心。根据NVIDIA数据,Volta Tensor Core可以在一个GPU时钟周期内执行4×4×4=64次FMA操作,吞吐量是Pascal架构下CUDA Core的12倍。
Tensor Core持续迭代提升其加速能力。Volta架构引入Tensor Core的改动使GPU的AI算力有了明显提升,后续在每一代的架构升级中,Tensor Core都有比较大的改进,支持的数据类型也逐渐增多。以A100到H100为例,Tensor Core由3.0迭代至4.0,H100在FP16 Tensor Core的峰值吞吐量提升至A100的3倍。同时,H100Tensor Core支持新的数据类型FP8,H100 FP8 Tensor Core的吞吐量是A100 FP16 Tensor Core的6倍。
Tensor Core加速下,低精度比特位宽的算力爆发式增长,契合AI计算需要。Tensor Core的应用使算力快速、高效增长,选取Pascal至Hopper架构时期每一代的旗舰数据中心显卡,对比经Tensor Core加速前后的FP16算力指标可以得到:(1)经Tensor Core加速的FP16算力明显高于加速之前。(2)每单位Tensor core支持的算力明显高于每单位Cuda Core支持的算力。同时,Tensor Core从2017年推出以来首先完善了对低精度数据类型的支持,顺应了AI发展的需要。
数据访问支配着计算能力利用率。AI运算涉及到大量数据的存储与处理,根据Cadence数据,与一般工作负载相比,每台AI训练服务器需要6倍的内存容量。而在过去几十年中,处理器的运行速度随着摩尔定律高速提升,而DRAM的性能提升速度远远慢于处理器速度。目前DRAM的性能已经成为了整体计算机性能的一个重要瓶颈,即所谓阻碍性能提升的“内存墙”。除了性能之外,内存对于能效比的限制也成为一个瓶颈,Cadence数据显示,在自然语言类AI负载中,存储消耗的能量占比达到82%。
GPU采用高带宽HBM降低“内存墙”影响。为防止占用系统内存并提供较高的带宽和较低的延时,GPU均配备有独立的的内存。常规的GDDR焊接在GPU芯片周边的PCB板上,与处理器之间的数据传输速率慢,并且存储容量小,成为运算速度提升的瓶颈。HBM裸片通过TSV进行堆叠,然后HBM整体与GPU核心通过中介层互连,因此HBM获得了极高的带宽,并节省了PCB面积。目前,GDDR显存仍是消费级GPU的行业标准,HBM则成为数据中心GPU的主流选择。
硬件单元的改进与显存升级增强了单张GPU算力的释放,然而,随着Transformer模型的大规模发展和应
用,模型参数量呈爆炸式增长,GPT-3参数量达到了1750亿,相比GPT增长了近1500倍,预训练数据量更是
从5GB提升到了45TB。大模型参数量的指数级增长带来的诸多问题使GPU集群化运算成为必须:
(1)即使最先进的GPU,也不再可能将模型参数拟合到主内存中。
(2)即使模型可以安装在单个GPU中(例如,通过在主机和设备内存之间交换参数),所需的大量计算操作也可能导致在没有并行化的情况下不切实际地延长训练时间。根据NVIDIA数据,在8个V100 GPU上训练一个具有1750亿个参数的GPT-3模型需要36年,而在512个V100 GPU上训练需要7个月。
NVIDIA开发NVLink技术解决GPU集群通信。在硬件端,GPU之间稳定、高速的通信是实现集群运算所必须的条件。传统x86服务器的互连通道PCIe的互连带宽由其代际与结构决定,例如x16 PCIe 4.0双向带宽仅为64GB/s。除此之外,GPU之间通过PCIe交互还会与总线上的CPU操作竞争,甚至进一步占用可用带宽。
NVIDIA为突破PCIe互连的带宽限制,在P100上搭载了首项高速GPU互连技术NVLink(一种总线及通讯协议),GPU之间无需再通过PCIe进行交互。
NVLink继续与NVIDIA GPU架构同步发展,每一种新架构都伴随着新一代NVLink。第四代NVLink为每个GPU提供900 GB/s的双向带宽,比上一代高1.5倍,比第一代NVLink高5.6倍。
NVDIA开发基于NVLink的芯片NVSwitch,作为GPU集群数据通信的“枢纽”。NVLink 1.0技术使用时,一台服务器中的8个GPU无法全部实现直接互连。同时,当GPU数量增加时,仅依靠NVLink技术,需要众多数量的总线。为解决上述问题,NVIDIA在NVLink 2.0时期发布了NVSwitch,实现了NVLink的全连接。
NVSwitch是一款GPU桥接芯片,可提供所需的NVLink交叉网络,在GPU之间的通信中发挥“枢纽”作用。借助于NVswitch,每颗GPU都能以相同的延迟和速度访问其它的GPU。就程序来看,16个GPU都被视为一个GPU,系统效率得到了最大化,大大降低了多GPU系统的优化难度。
通过添加更多NVSwitch来支持更多GPU,集群分布式运算得以实现。当训练大型语言模型时,NVLink网络也可以提供显著的提升。NVSwitch已成为高性能计算(HPC)和AI训练应用中不可或缺的一部分。
编辑:黄飞
标签: