本文从Nvidia GPU架构的发展历程讲起,重点介绍了各代架构的关键特性和技术进步提高了GPU间的通信效率和并行处理能力。文章特别强调了这些技术在大模型时代的应用,如加速AI训练和推理。阿里云ECS实例机型部分介绍了当前在售的GPU实例规格族及其适用场景,指出阿里云如何通过技术弥补了单卡算力不足的问题。
目前很多关于大模型的文章和介绍都是在大模型的工程应用、算法优化、Prompt工程、PAI、百炼等多产品架构组合等。但是在关于这些AI/ML训练任务的管理、任务流的分配、任务的调度关系,数据集的加速等支撑方面介绍比较分散。不同AI任务对于异构资源的调度、分配、隔离的需求是不同,不同的调度策略,对于任务的训练时间、训练结果也会产生差异。以及从客户成本管理角度上看,在GPU卡越来越贵情景下,如何实现AI任务的调度对GPU等异构资源充分利用,实现GPU利用趋于饱和,尽可能减少idle的GPU core,实现效益最大化是至关重要的。
所以,可以将AI/ML划分为:
业务应用:阿里云AI、开源AI、用户AI平台;
AI任务:比如弹性训练、弹性推理;
AI任务流管理平台:kubeflow、Arena;任务调度、数据加速、任务流管理
异构资源的调度:异构资源管理、分配、隔离、拓扑感知,实现并满足不同的AI任务并行需求
基础异构资源:GPU等。
以及整体支撑的AI仓库数据和AI观测。
本系列主要聚焦在介绍基础异构资源、异构资源调度和AI任务流管理平台。
本篇文章会从基础异构资源中的GPU进行介绍,主要介绍Nvidia GPU的机构发展史、以及除了SM core之类的算力增强,为什么要引入NVLink、NVSwitch,为什么要进行L1/共享带宽合并,阿里云ECS目前的异构机型和适用场景等。
2.2.1.Pascal(2016)
关键特性包括:
• CUDA core:每个 SM 包含 64 个单精度(FP32)CUDA core,分为两个处理块,每个块有 32 个 FP32 CUDA core。虽然这比 Maxwell SM 的 CUDA core数量少了一半,但它保持了类似的寄存器文件大小和 warp/线程块占用率。
• 寄存器和线程:尽管每个 SM 的 CUDA core较少,但 GP100 拥有更多的 SM(60个),因此总寄存器数量更多,并支持更多的线程、warp 和线程块同时运行。
每个SM具有FP16计算的Cuda core 64个, FP32的Cuda core 32个.所以一个GP100总的core是:
FP16: 64*60=3840, FP32:32*60=1920个
• 共享内存:由于 SM 数量增加,GP100 GPU 的总共享内存量也增加了,聚合共享内存带宽实际上翻倍。
• 高效执行:改进后的 SM 中共享内存、寄存器和 warp 的比例使得代码执行更加高效,具有更多的 warp 可供指令调度器选择,更高的加载启动次数以及每线程到共享内存的更高带宽。
• 高级调度:每个 warp 调度器(每个处理块一个)能够在每个时钟周期调度两个 warp 指令。
• 新功能:可以处理 16 位和 32 位精度的指令和数据,FP16 操作吞吐量最高可达 FP32 操作的两倍。(DPunit 单元是 Core 的一半)
Tesla P100 引入了 NVIDIA 的新型高速接口 NVLink,它能够提供高达 160 GB/s 的双向带宽,是 PCIe Gen 3 x16 带宽的 5 倍。上图显示了 NVLink 如何在一个混合立方网格拓扑中连接八个 Tesla P100 加速器,从图中可以看到,任意一个GPU都有4个NVLink与其他的GPU相连。下图展示了GPU互联的路径:
-
其中NVLINK表示两个GPU是通过NVLink链接,可以利用总带宽160GB/s带宽(双向),单个GPU-to-GPU之间带宽是40GB/s(双向),单向是20GB/s;
-
PCIE表示需要走PCIE--- CPU--- PCIE 链接,在Pasca架构,是第三代PCIE,理论最大带宽是16GB/s(单向)
-
虽然NVLInk 1.0 GPU-to-GPU单向只有20GB/s,相比较PCIE的16GB/s提高幅度没有很震撼。但是需要清楚的是NVLINK只是G2G独享,但是PCIE的单向16GB/s是两个GPU,2张NIC网卡共用的,真正用于GPU-to-GPU数据传输的其实远远达不到16GB/s。
NVLink:表示最大双向40GB/s
PCIE:表示最大双向32GB/s
所以可以看到,如果GPU需要使用PCIE方式去读区其他GPU上的数据,必然数据传输速度收到了PCIE的影响。从物理架构层面受到PCIE链接带宽限制,AI任务调度方面要尽可能让任务调度到NVLink的关联GPU上。
详情可参加nvidia官网介绍:
https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper-v1.2.pdf
2.2.2.Volta(2017)
关键特性:
-
第二代 NVIDIA NVLink:单GPU支持六条 NVLink 链路,总带宽300 GB/s。
-
HBM2 内存,16 GB HBM2 内存子系统,带宽 900 GB/s。
-
L1和共享内存合并,由4个纹理单元共享,可以看到内存L1/L2分级和扩容都是为了避免数据从内存或硬盘读取,
内存分级也是任务运算的瓶颈之一。
-
Volta 多进程服务 (MPS),提供QOS和隔离。(这一部分会在下一篇文章结合ACK容器GPU算力调度一起说明)
-
GV100,含有6个GPC,每个GPC拥有7个TPC,14个SM。每个SM拥有:64 个 FP32core+64 个INT32 core+32个 FP64core+8个 Tensor core+4个纹理单元。含84个SM 的完整GV100GPU,总共拥有 5376个 FP32 core、5376 个 INT32 core、2688个 FP64 core、672个 Tensor core以及 336个纹理单元。
-
V100 GPU 包含640个 Tensor core:每个SM有8个core,SM内的每个处理块(分区)有2个core。在VoltaGV100中,每个 Tensor core每时钟执行64次浮点 FMA 运算,一个5M中的8个 Tensor core每时钟总共执行512次 FMA 运算(或1024次单个浮点运算)。每个 HBM2 DRAM 堆栈由一对内存控制器控制。完整的GV100 GPU 总共包含6144KB 的L2缓存。Tesla V100 加速器拥有80个SM。
-
新的张量core使 Volta 架构得以训练大型神经网络,GPU 并行模式可以实现深度学习功能的通用计算,最常见卷积/矩阵乘(Conv/GEMM)操作,依旧被编码成融合乘加运算 FMA(Fused Multiply Add),硬件层面还是需要把数据按照:寄存器-ALU-寄存器-ALU-寄存器方式来回来回搬运数据,因此专门设计 Tensor Core 实现矩阵乘计算。
-
NVLInk 2.0 GPU-to-GPU单向提高到25GB/s,相比较1.0提高了5GB/s,但是每个GPU可以链接Link数量提高了到了6条,所以单GPU双向最大带宽来到了25*2*6=300GB/s,相比Pascal架构提升了一倍左右。同时,引入NVSwitch1.0 旨在提高 GPU 之间的通信效率和性能。NVSwitch1.0 可以支持多达 16 个 GPU 之间的通信,可以实现 GPU 之间的高速数据传输。
可以看到Nvidia除了疯狂的堆SM和core,也在想尽一切办法提升GPU-to-GPU之间的带宽,使数据尽可能在GPU间快速读取。隐约可以遇见,如何绕开PCIE,绕开CPU和内核切换是AI时代的瓶颈,毕竟大模型时代,数据量是几何倍数的增长。
2.2.2.1. NVLINK:第一代GPU-to-GPU
NVLink2:表示最大双向100GB/s
PCIE:表示最大双向32GB/s
由此可以看见Volat架构正在努力的将GPU变成一个整体的GPU对外提供GPU能力,但是不通GPU之间的数据传输还是不一样的,这个对于任务调度GPU计算资源提出了挑战。
详情可参加nvidia官网介绍:
https://www.nvidia.cn/content/dam/en-zz/zh_cn/Solutions/Data-Center/volta-gpu-architecture/Volta-Architecture-Whitepaper-v1.1-CN.compressed.pdf
2.2.3.Turing(2018)
关键特性:
-
包含 2,560 个 CUDA core和 320 个 Tensor core。
-
继承自 Volta 架构的增强 MPS 功能:Turing 继承并进一步优化了 Volta 架构中首次引入的多进程服务功能,Tesla T4 上的 MPS 在小批量推理任务中提供了更好的性能,减少了启动延迟,提高了服务质量(QoS),并且能够处理更多的并发客户端请求。
-
大幅提升的内存配置:Tesla T4 配备了 16 GB 的 GPU 内存和 320 GB/s 的内存带宽,这几乎是其前代产品 Tesla P4 GPU 的两倍。
-
每个SM的纹理处理器都引入了wrap进行scheduler调度,并且每个纹理处理器都有自己的寄存器进行数据切换。
-
Turing 架构中的 Tensor Core(张量core)增加了对 INT8/INT4/Binary 的支持,加速神经网络训练和推理函数的矩阵乘法core。一个 TU102 GPU 包含 576 个张量core,每个张量core可以使用 FP16 输入在每个时钟执行多达 64 个浮点融合乘法加法(FMA)操作。SM 中 8 个张量core在每个时钟中总共执行 512 次 FP16 的乘法和累积运算,或者在每个时钟执行 1024 次 FP 运算,新的 INT8 精度模式以两倍的速率工作,即每个时钟进行 2048 个整数运算。
可以看到Turing架构主要是Volta的改版,主要引入了光线追踪的功能,而这个功能更多的是利用在3D大型游戏领域。
T4最适合:小型模型的推理。关键特性:
-
比 L4 更旧且速度较慢。
-
适合小规模实验和原型设计。例如,可以用T4 开始项目,然后在生产环境中使用 L4 或 A10 运行相同的代码。
参考:
https://images.nvidia.com/aem-dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
2.2.4.Ampere(2020)
关键特征:
-
每一个SM含有4个第三代Tensor Cores,每一个拥有256个FP16/FP32,意味着每一个SM拥有1025个。L1共享内存增加到了192KB。其中A100增加到了108SM。
-
多实例 GPU (MIG):允许 A100 Tensor Core GPU 安全地分割成最多 7 个独立的 GPU 实例,每个实例的处理器在整个内存系统中都有单独且相互隔离的路径,片上交叉端口、L2 缓存、内存控制器和 DRAM 地址总线都被唯一地分配给一个单独的实例,确保单个用户的工作负载可以在可预测的吞吐量和延迟下运行,同时具有相同的 L2 缓存分配和 DRAM 带宽,即使其他任务正在读写缓存或 DRAM 接口。用户可以将这些虚拟 GPU 实例当成真的 GPU 进行使用,为云计算厂商提供算力切分和多用户租赁服务。(这一部分会在下一篇文章结合ACK容器GPU算力调度一起说明)
-
第三代 NVLink:第三代 NVLink 的数据速率为 50 Gbit/sec 每对信号,并首次引入NVLink switch full to mesh 的概念。
-
PCIe Gen 4:支持 PCIe Gen 4,提供 31.5 GB/s 的带宽。40 GB HBM2 和 40 MB L2 缓存:
2.2.4.1. NVLink:第三代
上图是一个8个A100组网称的一个大型GPU。可以看到引入了6个NvSwitch的概念。每个GPU链接每个NvSwitch2个Link,每个LInk单向25GB/s,双向50GB/s。由于NvSwitch的池化作用,所以理论上任何一个GPU与其他GPU进行数据交换的理论速度达到了双向50*12=600GB/s。
NVLink12:
表
示最大双向600GB/s
在Ampere架构,Nvidia利用引入的NvSwitch实现了GPU full mesh组网,实现了8卡或4卡整体对外组网提供一致性服务的能力。
除了GPU之间显存的交互,我们还需要注意到PCIE、NIC和GPU之间的组网方式。
解决了GPU之间的数据交换速度不一致情况,我们看一下外部清理。一般情况下,8张NIC网卡,两两bond对外以一张网卡形式对外提供服务。所以其实理论上在系统层面会把8张物理网卡识别为4张软件层面网络设备(NIC0-NIC4)。所以这里又会涉及到NIC和NIC之间、NIC 和CPU之间。
PCIE:表示数据只需要经过PCIE交换,A100使用第四代PCIE,双向达到64GB/s
SYS:表示数据需要经过CPU处理,有上下文和内核切换
PCIE:
表示数据只需要
经过PCIE交换,A100使用第四代PCIE,双向达到64GB/s
CPU:表示数据经过的是同一个CPU处理,只需要跨PCIE和 PCIE host bridge
SYS:表示数据需要经过CPU处理,有上下文和内核切换
可以看到数据的远距离调用和切换,对于任务的运行,耗时、计算等都会产生影响,而这个影响是物理层面的瓶颈,只能尽可能的想尽办法将任务调度得更‘近’一点。
2.2.4.2. 多级带宽
最下面为这次架构升级所引入 NVLink 技术,它主要来优化单机多块 GPU 卡之间的数据互连访问。在传统的架构中,GPU 之间的数据交换受到CPU 和 PCIe 总线的瓶颈。
再往上一层为 L2 Cache 缓存和 DRAM,它负责的是每块 GPU 卡内部的存储。L2 Cache 缓存作为一个高速缓存,用于存储经常访问的数据,以减少对 DRAM 的访问延迟。DRAM 则提供了更大的存储空间,用于存储 GPU 计算所需的大量数据。这两者的协同工作,使得 GPU 能够高效地处理大规模数据集。
再往上一层为共享内存和 L1 Cache,它们负责 SM 中数据存储,共享内存允许同一 SM 内的线程快速共享数据,通过共享内存,线程能够直接访问和修改共享数据,从而提高了数据访问的效率和并行计算的性能。
而最上面是针对具体的计算任务 Math 模块,负责 GPU 数学处理能力。Math 模块包括 Tensor Core 和 CUDA Core,分别针对不同的计算需求进行优化。Tensor Core 是专为深度学习等计算密集型任务设计的,能够高效地执行矩阵乘法等张量运算。而 CUDA Core 则提供了更广泛的计算能力,支持各种通用的 GPU 计算任务。
在 Ampere 之前的 GPU 架构中,如果要使用共享内存(Shared Memory),必须先把数据从全局内存(Global Memory)加载到寄存器中,然后再写入共享内存。这不仅浪费了宝贵的寄存器资源,还增加了数据搬运的时延,影响了 GPU 的整体性能。
如上图所示,Ampere 架构中提供异步内存拷贝机制,通过新指令 LDGSTS(Load Global Storage Shared),实现全局内存直接加载到共享内存,避免了数据从全局内存到寄存器再到共享内存的繁琐操作,从而减少时延和功耗。
另外,A100 还引入了软件层面的 Sync Copy,这是一种异步拷贝机制,可以直接将 L2 Cache 中的全局内存传输到 SMEM 共享内存,然后直接执行,减少了数据搬运带来的时延和功耗。
A100最适合:训练和推理较大模型(70 亿到 700 亿参数)。关键特性:
-
NVIDIA 的主力 GPU,适用于 AI、数据分析和高性能计算(HPC)任务。
-
提供 40GB 和 80GB 两种版本。
-
对于内存受限的工作负载(如在小批量上运行大模型),A100 可能比 H100 更具成本效益。
A10最适合:小型到中型模型(70 亿参数或以下,如大多数基于扩散的图像生成模型)的推理,以及小型模型的小规模训练。关键特性:
-
与 A100 架构相同,因此大多数能在 A100 上运行的代码也能在 A10 上运行。
-
小型工作负载的性能与成本比率良好。
参考:
https://images.nvidia.cn/aem-dam/en-zz/Solutions/data-center/nvidia-ampere-architecture-whitepaper.pdf
https://developer.download.nvidia.com/video/gputechconf/gtc/2020/presentations/s21730-inside-the-nvidia-ampere-architecture.pdf
2.2.5.Ada Lovelace(2022)
关键特征:
-
AD102包含12个GPC,72个TPC,144个SM。
-
每个SM包含128 个 CUDA core,一个第三代 RT Core,四个第四代 Tensor core,四个纹理单元,256 KB 寄存器文件,128 KB 的 L1/共享内存,可以根据图形或计算工作负载的需求配置为不同的内存大小。
-
RT Core 在 Turing 和 Ampere GPU 中:包含专用硬件单元,用于加速数据结构遍历,执行关键的光线追踪任务。
L4最适合:小型到中型模型(70 亿参数或以下,如大多数基于扩散的图像生成模型)的推理。关键特性:
-
成本效益高,但仍具备强大性能。
-
VRAM 容量与 A10 相同,但内存带宽仅为一半。
-
性能比 T4 高出 2 到 4 倍。
参考:
https://images.nvidia.cn/aem-dam/Solutions/Data-Center/l4/nvidia-ada-gpu-architecture-whitepaper-v2.1.pdf
2.2.6.Hopper(2022)
关键信息:
-
结合软件和定制的 Hopper Tensor core:专门设计用于加速 Transformer 模型训练和推理。智能管理 FP8 和 16 位计算,自动处理重铸和缩放,提供高达 9 倍的 AI 训练速度和 30 倍的大型语言模型推理速度。
-
提供近 2 倍的带宽提升:H100 SXM5 GPU 是首款采用 HBM3 内存的 GPU,提供 3 TB/s 的内存带宽。
-
50 MB L2 缓存:缓存大量模型和数据集,减少对 HBM3 的重复访问。
-
第二代MIG技术,提供约 3 倍的计算能力和近 2 倍的内存带宽。
-
每个 GPU 实例支持多达 7 个独立的实例,每个实例有自己的性能监控工具。(这个为云产生切分GPU给多个租户创造条件)
-
第四代NVLink:提供 3 倍的带宽提升:总带宽为 900 GB/s,是 PCIe Gen 5 的 7 倍。
-
第三代NVLink Switch,最多可连接 32 个节点或 256 个 GPU。
-
提供 128 GB/s 的总带宽:每个方向 64 GB/s,是 PCIe Gen 4 的两倍
-
SM提供256 KB 的共享内存和 L1 数据缓存,允许直接 SM 间通信,用于加载、存储和原子操作,跨越多个 SM 共享内存块,引入TMA。
在第 4 代 Tensor Core 中,一个显著的创新是引入了 Tensor Memory Accelerator(TMA),这一功能被称为增量内存加速。这一硬件化的数据异步加载机制使得全局内存的数据能够更为高效地异步加载到共享内存,进而供寄存器进行读写操作。传统的 Warp-Level 编程模式要求所有线程都参与数据搬运和计算过程,这不仅消耗了大量的资源,还限制了计算规模的可扩展性。而单线程 schedule 模型则打破了这一束缚,它允许 Tensor Core 在不需要所有线程参与的情况下进行运算。这种设计大大减少了线程间的同步和协调开销,提高了计算效率。
H100最适合:训练和推理非常大的模型(700 亿参数及以上),基于 Transformer 的架构,低精度(8 位)推理。关键特性:
-
截至2024年底在售的最强大的 NVIDIA 数据中心 GPU。
-
大多数工作负载比 A100 快约两倍,但更难获取且价格更高。
-
优化用于大型语言模型任务,提供超过 3 TB/s 的内存带宽,对于需要快速数据传输的 LLM 推理任务至关重要。
-
包含专门用于低精度(FP8)操作的计算单元。
参考:
https://resources.nvidia.com/en-us-tensor-core
2.2.7.Blackwell
目前据说已经推迟到2025上半年商业化,已经跳票好多次,目前官方还没有发布详细的白皮书信息。以下信息来自官方Breif说明。
-
新型 AI 超级芯片:Blackwell 架构 GPU 具有 2080 亿个晶体管,采用专门定制的台积电 4NP 工艺制造。所有 Blackwell 产品均采用双倍光刻极限尺寸的裸片,通过 10 TB/s 的片间互联技术连接成一块统一的 GPU。
-
第二代 Transformer 引擎:将定制的 Blackwell Tensor Core 技术与英伟达 TensorRT-LLM 和 NeMo 框架创新相结合,加速大语言模型 (LLM) 和专家混合模型 (MoE) 的推理和训练。
-
NVLink 5.0:为了加速万亿参数和混合专家模型的性能,新一代 NVLink 为每个 GPU 提供 1.8TB/s 双向带宽,支持多达 576 个 GPU 间的无缝高速通信,适用于复杂大语言模型。
-
RAS 引擎:Blackwell 通过专用的可靠性、可用性和可服务性 (RAS) 引擎增加了智能恢复能力,以识别早期可能发生的潜在故障,从而更大限度地减少停机时间。
-
安全 AI:内置英伟达机密计算技术,可通过基于硬件的强大安全性保护敏感数据和 AI 模型,使其免遭未经授权的访问。
-
解压缩引擎:拥有解压缩引擎以及通过 900GB/s 双向带宽的高速链路访问英伟达 Grace CPU 中大量内存的能力,可加速整个数据库查询工作流,从而在数据分析和数据科学方面实现更高性能。
参考: