【AI系统】NV Switch 深度解析

简介: 英伟达的NVSwitch技术是高性能计算领域的重大突破,旨在解决多GPU系统中数据传输的瓶颈问题。通过提供比PCIe高10倍的带宽,NVLink实现了GPU间的直接数据交换,减少了延迟,提高了吞吐量。NVSwitch则进一步推动了这一技术的发展,支持更多NVLink接口,实现无阻塞的全互联GPU系统,极大提升了数据交换效率和系统灵活性,为构建强大的计算集群奠定了基础。

在当今的高性能计算领域,英伟达的 GPU 技术无疑是一颗璀璨的明星。随着 AI 和机器学习技术的飞速发展,对于计算能力的需求日益增长,GPU 之间的互联互通变得尤为重要。在这样的背景下,英伟达推出了 NVLink 协议,以及基于此技术的多 GPU 互联解决方案——NV Switch。

本文将深入探讨 NV Switch 的发展历程、工作原理以及其在构建高性能服务器集群中的关键作用,为读者揭开这一技术背后神秘的面纱。

为什么需要 NV Switch

随着单个 GPU 的计算能力逐渐逼近物理极限,为了满足日益增长的计算需求,多 GPU 协同工作成为必然趋势。

PCle 互联

然而,要对其他 GPU 的 HBM2 进行访问,需要经过 PCIe 接口。如上图所示,传统的 PCIe 接口在数据传输速率和带宽上存在限制,这导致 GPU 间的通信通常会成为性能瓶颈。为了克服这一限制,英伟达开发了 NVLink 技术,它提供了比 PCIe 高 10 倍的带宽,允许单个服务器内的 8 个 GPU 通过点对点网络连接在一起,形成所谓的混合立方体网格。

NVLink 技术的核心优势在于它能够绕过传统的 CPU 分配和调度机制,允许 GPU 之间进行直接的数据交换。这种设计不仅减少了数据传输的延迟,还大幅提升了整个系统的吞吐量。此外,通过 NVLink GPCs 可以访问卡间 HBM2 内存数据,也可以对其他 GPU 内的 HBM2 数据进行访问。

在多 GPU 系统中,NVLink 还起到了 XBARs 的作用,它作为不同 GPU 之间的桥梁,允许数据在 GPU 之间自由流动。还巧妙地避开了与 PCIe 总线的冲突,使得 NVLink 和 PCIe 可以作为互补的解决方案共存,共同为系统提供所需的数据传输能力。

NV Switch 则是在此基础上进一步发展,支持完全无阻塞的全互联 GPU 系统,通过提供更多的 NVLink 接口,没有任何中间 GPU 跳数,实现更大规模的 GPU 互联,从而构建出更加强大的计算集群。

NV Switch 的出现

在英伟达的技术演进历程中,Pascal 架构首次引入了 NVLink,这一创新如同开辟了一条高速通道,极大地提升了 GPU 之间的通信效率。然而,真正的技术飞跃发生在下一代的 Volta 架构中,伴随着 NVSwitch 的诞生。

NVSwitch 的出现,犹如在数据传输的网络中架设了一座智能枢纽,它不仅支持更多的 NVLink 链路,还允许多个 GPU 之间实现全互联,极大地优化了数据交换的效率和灵活性。

NV Switch 演进

如上图所示,在 Volta 架构中,GPU to GPU 间的通信达到 300GB/s,而到 Hopper 架构中已经发展到 900GB/s。这一壮举的背后,是 NVLink 链路数的显著提升,从 Volta 的 6 路扩展至 Hopper 的 18 路,如同在原本的高速公路上增设了立交桥和环岛,使得数据流能够更加高效地穿梭于各个 GPU 之间,为高性能计算和大规模并行处理提供了强有力的支撑。

NVLink 与 NVSwitch 相关的服务器

上图展示的是 DGX 服务器 GPU 芯片互联的架构图,如图所示,在 DGX-1 P100 中有 8 张 GPU 卡,每张 GPU 卡支持 4 条 NVLink 链路,这些链路允许 GPU 之间进行高速通信。在 DGX-1 P100 中,GPU 卡被组织成两个 cube mesh,每个 cube 包含 4 个 GPU(GPU 0~3 和 GPU 4~7)。在每个 cube 内部,GPU 之间可以直接通过 NVLink 或通过 PCIe Switch 进行通信。然而,跨 cube 的通信(例如 GPU 0 和 GPU 4)需要通过其他 GPU 间接进行。

DGX-2 引入了英伟达的第一代 NVSwitch 技术,这是一个重要的进步,因为它允许更高效的 GPU 间通信。在 Volta 架构中,每张 GPU 卡支持 6 条 NVLink 链路,而不再是 4 条。此外,通过引入 6 个 NVSwitch,NVSwitch 能够将服务器中的所有 GPU 卡全部互联起来,并且支持 8 对 GPU 同时通信,不再需要任何中间 GPU 跳数,实现直接高速通信,这大大提高了数据传输的效率和整体计算性能。

DGX-A100 使用的是第二代 NVSwitch 技术。相比于第一代,第二代 NVSwitch 提供了更高的通信带宽和更低的通信延迟。在 A100 架构中,每张 GPU 卡支持 12 条 NVLink(第三代)链路,并通过 6 个 NVSwitch 实现了全连接的网络拓扑。虽然标准的 DGX A100 配置仅包含 8 块 GPU 卡,但该系统可以扩展,支持更多的 A100 GPU 卡和 NVSwitch,以构建更大规模的超级计算机。

DGX-H100 使用的是第三代 NVSwitch 和第四代 NVLink 技术,其中每一个 GPU 卡支持 18 条 NVLink 链路。在 H100 架构中,通过引入了 4 个 NV Switch,采用了分层拓扑的方式,每张卡向第一个 NV Switch 接入 5 条链路,第二个 NV Switch 接入 4 条链路,第三个 NV Switch 接入 4 条链路,第四个 NV Switch 接入 5 条链路,总共 72 个 NVLink 提供 3.6 TB/s 全双工 NVLink 网络带宽,比上一代提高 1.5 倍。

NV Switch 详解

英伟达的 NVSwitch 技术是实现高效 GPU 间通信的关键组件,特别是在构建高性能计算(HPC)和 AI 加速器系统中。

初代 NVSwitch

NVSwitch 的设计引入为英伟达创建一个完全无阻塞的全互联 GPU 系统,这对于需要大规模并行处理的应用至关重要。

第一代 NVSwitch 支持 18 路接口,NVSwitch 能够支持多达 16 个 GPU 的全互联,实现高效的数据共享和通信。

NVSwitch 互联

如上图所示,在 V100 架构中,每块 GPU 拥有 6 条 NVLink 通道,这些通道可以连接到 NVSwitch 上,从而形成一个高带宽的通信网络。在 DGX-2 系统中,8 个 V100 GPU 通过这些 NVLink 通道与 6 个 NVSwitch 相连,构建了一个强大的基板。

V100 芯片基板

第一代的 NVSwitch 支持的 NVLink 2.0 技术,每个接口能够提供双通道,高达 50GB/s 的带宽。这意味着通过 NVSwitch,整个系统能够实现总计 900GB/s 的惊人带宽,极大地提升了数据传输速率和计算效率。

其次,NVSwitch 基于台积电的 12nm FinFET FFN 工艺制造,这种先进的工艺技术使得 NVSwitch 能够在 100W 的功率下运行,同时集成了高达 2 亿个晶体管。

在电路 IO 和封装方面,NVSwitch 封装在一个大型的 BGA 芯片中,具有 1940 个引脚,其中 576 个专门用于支持 18 路 NVLink。其余的引脚用于电源和各种 I/O 接口,包括 x4 PCIe 管理端口、I2C、GPIO 等,为系统提供灵活的管理和扩展能力。具体的参数如下表所示:

NV Switch 参数

从上表我看可看到,每个 NVLink 双向带宽高达 50GB/s,实际利用率最高能达到 80%。

初代 NVSwitch Block

NV Switch Block

如上图所示,在左侧为 GPU XBAR,它是一个高度专业化的桥接设备,专门设计用于 NVLink 互连环境中,可以使得数据包能够在多个 GPU 之间流动和交换,同时对外呈现为单个 GPU。通过 GPU XBAR,客户端应用程序能够感知并利用多个 GPU 的集合性能,减少了客户端进行 GPU 间通信管理的复杂性。

此外,GPU XBAR 利用基于静态随机存取存储器(SRAM)的缓冲技术,实现非阻塞的数据传输。这种缓冲机制保证了数据传输的连续性和效率,即使在高负载情况下也能保持高性能。

从 V100 GPU 开始,英伟达重新使用了 NVLink 的 IP 块和 XBAR 设计,这不仅保证了不同代产品之间的兼容性,也使得 NVLink 技术能够不断迭代和优化,同时减少了开发成本和时间。

NV Switch 物理内存共享

如上图所示,我们结合整个 GPU 来看下 NVSwitch 和 GPU 之间是如何进行数据传输和分发的。

我们都知道在编程中,开发者通常处理的是虚拟地址。这些虚拟地址是由操作系统管理和抽象的,它们为不同的程序提供了独立的地址空间。然而,在物理内存中,数据实际上是以物理地址存储的。物理地址直接指向内存中的具体位置,这是实现数据访问的基础。而虚拟地址到物理地址的转换通常由 GPU 的图形处理单元(GPU 核心)或者固定功能单元(如内存管理单元)来完成。

而在通过 NVLink 传输数据时,如上图所示,其使用的是物理地址而非虚拟地址。这是因为物理地址能够直接指向数据的实际存储位置,从而加快了数据的索引和访问速度。

NVSwitch 作为 NVLink 的桥接设备,它不仅提供了高带宽的通信路径,还负责维护复杂的路由和缓冲机制,确保数据包能够按照正确的物理地址快速且准确地传输到目的地。通过使用物理地址进行 NVLink 通信,可以减少在目标 GPU 上进行地址转换的需要,从而降低延迟,提高数据传输速率。这对于需要快速处理大量数据的高性能计算和 AI 应用来说是至关重要的。

NVSwitch 简化原理与特性

  1. 无 NVSwitch 的直接 GPU 间连接

    无 NVSwitch 的直接 GPU 间连接

    如上图所示,在没有 NVSwitch 的配置中,GPU 之间的连接通常是通过将 NVLinks 聚合成多个组(Gang)来实现的。这意味着多个 GPU 通过共享的 NVLink 链路进行通信。然而,这种方法的一个限制是任意两个 GPU 之间的最大带宽受限于它们所在 Gang 的 NVLink 数量和带宽。

  2. 引入 NVSwitch 后的改进

    英伟达的 NVSwitch 技术为 GPU 间的通信带来了革命性的改进。NVSwitch 作为一个高速交换机,允许所有链路上的数据进行交互。

    在 NVSwitch 架构中,任意一对 GPU 都可以直接互联,且只要不超过六个 NVLink 的总带宽,单个 GPU 的流量就可以实现非阻塞传输。这也就意味着,NVSwitch 支持的全互联架构意味着系统可以轻松扩展,以支持更多的 GPU,而不会牺牲性能。每个 GPU 都能利用 NVLink 提供的高带宽,实现快速的数据交换。

NVSwitch 在解决多 GPU 间的互联有以下优势和特性:

  1. 扩展性与可伸缩性:

    NVSwitch 的引入为 GPU 集群的扩展性提供了强大的支持。通过简单地添加更多的 NVSwitch,系统可以轻松地支持更多的 GPU,从而扩展计算能力。

  2. 高效的系统构建:

    例如,八个 GPU 可以通过三个 NVSwitch 构建成一个高效的互连网络。这种设计允许数据在所有 GPU 链路之间自由交互,最大化了数据流通的灵活性和效率。

  3. 全双向带宽利用:

    在这种配置下,任意一对 GPU 都能够利用完整的 300 GBps 双向带宽进行通信。这意味着每个 GPU 对都能实现高速、低延迟的数据传输,极大地提升了计算任务的处理速度。

  4. 无阻塞通信:

    NVSwitch 中的交叉开关(XBAR)为数据传输提供了从点 A 到点 B 的唯一路径。这种设计确保了通信过程中的无阻塞和无干扰,进一步提升了数据传输的可靠性和系统的整体性能。

  5. 优化的网络拓扑:

    NVSwitch 支持的网络拓扑结构为构建大型 GPU 集群提供了优化的解决方案。它允许系统设计者根据具体的计算需求,灵活地配置 GPU 之间的连接方式。

第三代 NVSwitch

第三代 NVSwitch
06DeepNvswitch10.png

从上图可以看出,第三代 NVSwitch 采用了 TSMC 的 4N 工艺制造,即使在拥有大量晶体管和高带宽的情况下,也能保持较低的功耗。它提供了 64 个 NVLink 4 链路端口,允许构建包含大量 GPU 的复杂网络,同时保持每个 GPU 之间的高速通信。同时支持 3.2TB/s 的全双工带宽,显著提升了数据传输速率,使得大规模数据集的并行处理更加高效。

在信号技术方面,采用了 50 Gbaud PAM4 信号技术,每个差分对提供 100 Gbps 的带宽,保持了信号的高速传输和低延迟特性。

NVSwitch 集成了英伟达 SHARP 技术,包括 all_gather、reduce_scatter 和 broadcast atomics 等操作,为集群通信提供了硬件加速,进一步提升了性能。NVSwitch 3.0 的物理电气接口与 400 Gbps 以太网和 InfiniBand 兼容,提供了与现有网络技术的互操作性。

第三代 NVSwitch Block

英伟达的第三代 NVSwitch 引入了多项创新特性,其中新 SHARP 模块和新 NVLink 模块的加入,为 GPU 间的高效通信和数据处理提供了显著的性能提升,如上图所示。

  • 新 SHARP 模块

新引入的 SHARP 模块拥有强大的数据处理能力,支持多种运算符,从逻辑运算到算术运算,同时兼容多种数据格式,如 FP16 和 BF16,为 AI 和机器学习工作负载提供了强有力的支持。SHARP 控制器的设计能够并行管理多达 128 个 SHARP 组,同时处理众多任务,大幅提升了数据并行处理的效率,顺利完成大规模的数据处理任务。

NVSwitch 中的交叉开关(XBAR),经过精心调整和优化,与 SHARP 模块的数据传输需求完美匹配。这一协同设计,确保了数据在 GPU 间传输时的高效率和低延迟,提升系统的整体性能。

  • 新 NVLink 模块

新 NVLink 模块的集成,不仅为数据和芯片提供了额外的安全保护,防止未授权访问和潜在的数据泄露,更增强了系统的数据安全性。端口分区功能的引入将不同的端口隔离到单独的 NVLink 网络中,为系统提供了更高的灵活性,允许在不同的网络之间实现资源的逻辑分割,优化了多任务处理的能力。

控制器对下一代 Octal Small Formfactor Pluggable(OSFP)电缆的支持,提供了更高的数据传输速率和更低的信号衰减,适合长距离的高速通信,为未来的网络扩展提供了无限可能。

新 NVLink 模块还扩展了遥测功能,使得系统管理员能够更精确地监控和优化网络性能,确保系统的稳定运行。而集成的前向纠错(FEC)技术,增强了数据传输的可靠性,尤其是在面对信号衰减或干扰时,能够保证数据的完整性和准确性。

目录
相关文章
|
1天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
17天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
21天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
12天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
|
6天前
|
人工智能 自然语言处理 前端开发
100个降噪蓝牙耳机免费领,用通义灵码从 0 开始打造一个完整APP
打开手机,录制下你完成的代码效果,发布到你的社交媒体,前 100 个@玺哥超Carry、@通义灵码的粉丝,可以免费获得一个降噪蓝牙耳机。
2700 11
|
13天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
3471 9
|
11天前
|
人工智能 自然语言处理 前端开发
什么?!通义千问也可以在线开发应用了?!
阿里巴巴推出的通义千问,是一个超大规模语言模型,旨在高效处理信息和生成创意内容。它不仅能在创意文案、办公助理、学习助手等领域提供丰富交互体验,还支持定制化解决方案。近日,通义千问推出代码模式,基于Qwen2.5-Coder模型,用户即使不懂编程也能用自然语言生成应用,如个人简历、2048小游戏等。该模式通过预置模板和灵活的自定义选项,极大简化了应用开发过程,助力用户快速实现创意。
|
25天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
7天前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
550 4
|
9天前
|
云安全 人工智能 自然语言处理