1、AI驱动下,英伟达数据中心业务蓬勃发展

英伟达是GPU的发明创造者。1999年,英伟达在纳斯达克挂牌上市,并于同年提出了GPU概念,发布了GeForce 256。这被业界视为现代计算机图形技术的开端。

最初,GPU主要应用于PC游戏和主机游戏(如Sega、Xbox和PS3),能够通过硬件支持T&L(多边形转换与光源处理)。T&L在3D图像渲染中扮演重要角色,计算多边形的3D位置和处理动态光线效果,提供细致的3D物体和高级的光线特效。由于3D图像渲染中的任务是并行计算的,各区域之间没有联系或依赖关系,因此可以轻松拆分成独立的并行任务,提高计算速度。

这种并行计算能力让GPU意外成为AI计算的硬件基础设施。在AI计算中,深度学习是最常见的任务。深度学习模型需要进行大量的矩阵计算,而GPU擅长同时执行大量的矩阵运算,加速了深度学习模型的训练和推理过程。

英伟达作为全球GPU市场的巨头,目前占据主导地位,并在AI时代迎来新的发展机遇。由于芯片产业的赢家通吃效应,英伟达在数据中心领域的GPU应用获得广泛认可,并在各行业的AI项目中广泛采用。随着人工智能应用的兴起和需求的增加,英伟达的数据中心业务有望持续高增长。

2、算力领域的架构创新

英伟达不断改进芯片架构以满足高算力需求。每1到2年推出新的架构,适应计算需求的升级。历年来的架构创新包括:

Kepler架构(2012年)引入了GPUDirect技术,实现了本机和其他机器GPU之间的直接数据交换。
Pascal架构(2016年)除了支持深度学习和DP unit外,还引入了NVLink来实现单机内多GPU的点到点通信,带宽达到160GB/s。
Volta架构(2017年)以Deep Learning为核心,引入了Tensor Core。
Ampere架构(2020年)提高了FP32着色器操作数量、RT Cores的光线/三角形相交测试吞吐量,并加速稀疏神经网络处理速度。
Hopper架构(2022年)引入了新一代流式多处理器的FP8 Tensor Core,加速AI训练和推理,并提供高速的Transformer引擎,在大型NLP模型上提供高达9倍的AI训练速度和30倍的AI推理速度。

3、NVIDIA常见的产品线

Quadro类型:Quadro系列显卡一般用于特定行业,比如设计、建筑等,图像处理专业显卡,比如CAD、Maya等软件。
GeForce类型:这个系列显卡官方定位是消费级,常用来打游戏。但是它在深度学习上的表现也非常不错,很多人用来做推理、训练,单张卡的性能跟深度学习专业卡Tesla系列比起来其实差不太多,但是性价比却高很多。
Tesla类型:Tesla系列显卡定位并行计算,一般用于数据中心,具体点,比如用于深度学习,做训练、推理等。Tesla系列显卡针对GPU集群做了优化,像那种4卡、8卡、甚至16卡服务器,Tesla多块显卡合起来的性能不会受>很大影响,但是Geforce这种游戏卡性能损失严重,这也是Tesla主推并行计算的优势之一。
TITAN系列:主要应用于高性能计算领域,如机器学习、超级计算机等。代表产品包括TITAN RTX、V或者X等。

以及Jetson系列:Jetson系列是基于NVIDIA Tegra处理器平台的嵌入式系统模块,专为物联网、自动驾驶、机器人等应用而设计。其中包括Jetson Nano和Jetson Xavier NX等产品。Drive AGX:Drive AGX是英伟达推出的自动驾驶平台,采用了先进的深度学习技术,可为自动驾驶车辆提供视觉感知、决策和控制等方面的支持。

Quadro类型分为如下几个常见系列
NVIDIA RTX Series系列: RTX A2000、RTX A4000、RTX A4500、RTX A5000、RTX A6000
Quadro RTX Series系列: RTX 3000、RTX 4000、RTX 5000、RTX 6000、RTX 8000

GeForce类型分为如下几个常见系列
Geforce 10系列: GTX 1050、GTX 1050Ti、GTX 1060、GTX 1070、GTX 1070Ti、GTX 1080、GTX 1080Ti
Geforce 16系列:GTX 1650、GTX 1650 Super、GTX 1660、GTX 1660 Super、GTX 1660Ti
Geforce 20系列:RTX 2060、RTX 2060 Super、RTX 2070、RTX 2070 Super、RTX 2080、RTX 2080 Super、RTX 2080Ti
Geforce 30系列: RTX 3050、RTX 3060、RTX 3060Ti、RTX 3070、RTX 3070Ti、RTX 3080、RTX 3080Ti、RTX 3090 RTX 3090Ti

Tesla类型分为如下几个常见系列:
在Tesla系列中,标识分为三个部分,分别是产品代号、产品等级和计算能力。以Tesla V100为例,V100为产品代号,V为产品等级,100代表计算能力,其性能越高,数字越大。
A-Series系列: A10、A16、A30、A40、A100
T-Series系列: T4
V-Series系列: V100
P-Series系列: P4、P6、P40、P100
K-Series系列: K8、K10、K20c、K20s、K20m、K20Xm、K40t、K40st、K40s、K40m、K40c、K520、K80

安培架构不兼容低版本cuda
需要注意3060、3060Ti,3090、3090Ti、3080Ti、A5000等Ampere(安培)架构的GPU需要cuda11.x版本才能使用,请使用较高版本的框架。 如果代码需要使用 cuda9、cuda10 等版本,请使用RTX5000,V100S,V100,P100,T4,2080Ti等非Ampere(安培)架构的GPU。

4、GPU CPU选择

选择GPU

显卡性能主要根据如下几个参数来判断:

显存: 显存即显卡内存,显存主要用于存放数据模型,决定了我们一次读入显卡进行运算的数据多少(batch size)和我们能够搭建的模型大小(网络层数、单元数),是对深度学习研究人员来说很重要的指标,简述来讲,显存越大越好。

架构:在显卡流处理器、核心频率等条件相同的情况下,不同款的GPU可能采用不同设计架构,不同的设计架构间的性能差距还是不小的,显卡架构性能排序为:Ampere > Turing > Volta > Pascal > Maxwell > Kepler > Fermi > Tesla

CUDA核心数量:CUDA是NVIDIA推出的统一计算架构,NVIDIA几乎每款GPU都有CUDA核心,CUDA核心是每一个GPU始终执行一次值乘法运算,一般来说,同等计算架构下,CUDA核心数越高,计算能力会递增。

Tensor(张量)核心数量:Tensor 核心是专为执行张量或矩阵运算而设计的专用执行单元,而这些运算正是深度学习所采用的核心计算函数,它能够大幅加速处于深度学习神经网络训练和推理运算核心的矩阵计算。Tensor Core使用的计算能力要比Cuda Core高得多,这就是为什么Tensor Core能加速处于深度学习神经网络训练和推理运算核心的矩阵计算,能够在维持超低精度损失的同时大幅加速推理吞吐效率。

半精度:如果对运算的精度要求不高,那么就可以尝试使用半精度浮点数进行运算。这个时候,Tensor核心就派上了用场。Tensor Core专门执行矩阵数学运算,适用于深度学习和某些类型的HPC。Tensor Core执行融合乘法加法,其中两个44 FP16矩阵相乘,然后将结果添加到44 FP16或FP32矩阵中,最终输出新的4*4 FP16或FP32矩阵。NVIDIA将Tensor Core进行的这种运算称为混合精度数学,因为输入矩阵的精度为半精度,但乘积可以达到完全精度。Tensor Core所做的这种运算在深度学习训练和推理中很常见。

单精度: Float32 是在深度学习中最常用的数值类型,称为单精度浮点数,每一个单精度浮点数占用4Byte的显存。

双精度:双精度适合要求非常高的专业人士,例如医学图像,CAD。
具体的显卡使用需求,还要根据使用显卡处理的任务内容进行选择合适的卡,除了显卡性能外,还要考虑CPU、内存以及磁盘性能,关于GPU、CPU、内存、磁盘IO性能。

对于不同类型的神经网络,主要参考的指标是不太一样的。下面给出一种指标顺序的参考:
卷积网络和Transformer:Tensor核心数>单精度浮点性能>显存带宽>半精度浮点性能
循环神经网络:显存带宽>半精度浮点性能>Tensor核心数>单精度浮点性能
大模型:大模型尤其需要关注nvlink为代表的数据互通的速度,因为大模型涉及到多机多卡的协作以及卡之间的数据流通。

选择CPU

在load数据过程中,就需要用到大量的CPU和内存,如果CPU主频较低或者CPU核心较少的情况下,会限制数据的读取速度,从而拉低整体训练速度,成为训练中的瓶颈。

建议选择核心较多且主频较高的的机器,每台机器中所分配的CPU核心数量可以通过创建页面查看,也可以通过CPU型号去搜索该CPU的主频和睿频的大小。

CPU的核心数量也关系到num_workers参数设置的数值,num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮…迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU进行复制)。num_workers的经验设置值是 <= 服务器的CPU核心数。