查看原文
其他

NVIDIA产品和技术进展(HPC/AI)

常华Andy Andy730
2025-01-01
  • 题目:Compute & Accelerator Forum - NVidia Update

  • 会议:CERN Compute & Accelerator Forum

  • 演讲者:Filippo Spiga,Nvidia

  • 时间:2024年5月29日

我将聚焦于NVIDIA在计算领域的探索,这不仅仅局限于CPU和GPU,更涵盖了软件层面的创新。软件在其中扮演着举足轻重的角色。我将分享我们最新构建和整合的进展,以及这些进展如何引领计算领域的发展方向和未来趋势。

过去的十二个月,特别是近两个月,我们推出了多款CPU产品、CPU+GPU产品及GPU产品,如Grace Hopper和Blackwell。我们的产品线还在不断扩展,包括GPU产品、CPU+GPU产品、纯CPU产品以及网络产品等。从我们的产品路线图来看,从现在到接下来的一个半小时内,可能不会有新的产品发布。毕竟,谈论过于遥远的未来总是存在一定的不确定性。但如果你对NVIDIA有所了解,你会知道我们通常在产品发布后不到六个月就能实现出货。我们始终紧跟市场趋势和社区需求,因此我们的路线图具有高度的灵活性。

今天,我将为大家更新我们已构建的内容,并分享我们对下一步的展望,希望大家能从中窥见未来的方向。

我将主要讲述硬件方面的内容,并稍微涉及AI的作用,希望能为大家带来一些灵感。我作为一名硬件工程师,在HPC领域有着丰富的工作经验。我将重点介绍我们的产品,并分享一些关键的编程更新,这些更新在某种程度上将我们所有的努力紧密地连接在一起。

我们常常将计算与浮点计算联系在一起。但现在,一种新型的计算和科学计算方式已经崭露头角,它依托于一系列新技术,统称为AI。这些技术使我们能够完成一些不同甚至更好的任务,并解锁了我们日常模拟中的新能力。不再是简单的“我在计算机上运行模拟并得到结果”。AI的作用是增强、扩展,有时甚至是替代传统的计算方式。此外,边缘计算也发挥着重要作用,尤其是CERN,大家应该对此非常熟悉,因为你们不仅处理模拟产生的数据,还处理来自实际实验的真实数据,这些数据可以增强、补充或驱动模拟。

这些都是我们软件和产品努力覆盖的领域。我们设计的工具和硬件旨在帮助科学家触及这些前沿领域。

当我们谈到HPC和AI时,今天的科学研究方式已经发生了显著变化。过去,我们通常启动模拟然后离开,稍后再回来查看结果。但现在,越来越多的工作变得分布式和交互式。我们不再只是运行模拟,而是通过AI技术增强模拟样本。实验的角色也变得非常有趣。过去我们捕获数据并离线分析,但现在我们越来越关注在线分析,即在数据产生的同时进行摄取和处理。我们还使用这些数据来引导或控制某些实验。当然,离线分析依然重要,但我们现在将这些元素融合在一起,形成了数字孪生的概念,它结合了观察结果、模拟结果和AI的作用,推动了科学的进步。

过去我们用C和C++编写代码,但现在科学家有了更多的选择,如Python、Julia以及TensorFlow和PyTorch这样的领域特定语言。硬件和软件的角色正在发生变化,并将继续演变以适应这些新的工作方式。

在AI方面,如果我们看看NVIDIA在构建能力上的投入,我们已经开发了几款专为科学家设计的软件和框架。其中之一是Modulus,这是我们用于开发基于物理的神经网络和AI模型的开源平台。它不仅与PyTorch集成,还支持数据摄取、数据操作以及从STL和其他几何格式加载CAD信息。它还提供了设计神经操作符、PINNs、DNNs、CNNs、图网络等的构建模块和示例。我们已经将这些工具应用于能源、气候科学、工业HPC、医疗保健等大规模场景中。

另一个值得关注的工具是Holoscan,这是一个集成了CUDA运行时和加速库的框架,对流式传输、数据摄取和实时数据操作非常有用。例如,你可以通过管道将实验数据从网卡或FPGA推送到GPU加速系统,并使用这个工具包实时获取数据、传输到GPU,并触发内核执行。这个工具包设计为跨系统可扩展,符合边缘计算的概念,不仅适用于数据中心,也能在Jetson等设备上运行。它提供了基于C++和Python的高级API,以简化编程工作。此外,它是开源的,并集成了自己的AI推理引擎等。整个设计理念是让你能够利用传感器数据和需要处理的数据,通过计算机或AI模型实现各种功能。我们已经看到它在处理卫星数据、医疗成像、仪器等领域的应用。

所有这些都汇集到了我们的数字孪生平台Omniverse中。这就是我们今天的重点之一,我们试图将各种技术整合在一起,为模拟和现实世界提供一个可视化、交互式的视图。

AI的发展势头迅猛,其应用范围也越来越广泛。它不再局限于十年前那种简单的猫和人的识别。如今,流行的概念是生成式AI,这些大型模型或基础模型能在特定领域提供基础智能。行业巨头最初都集中在大型语言模型上,但随着这一趋势的发展,他们开始关注其他领域或科学领域,我们看到这些基础模型在生物学(如AlphaFold)、气候学,甚至材料科学等领域的应用层出不穷。我不清楚是否已有关于高能物理或粒子物理的大型项目,但这也不是没有可能。只是我对这方面的信息了解有限,因为这确实是当前非常热门的领域。

生成式AI模型因其训练需要成千上万的GPU而著称,它们需要从零开始进行训练。

当我们观察如何构建一个基础模型时,会发现实际上并不需要大量的GPU。当然,一定数量的GPU是必要的,但并不需要像构建下一个ChatGPT或Bard那样与云计算巨头竞争。特别是在科学领域,由于数据的规模、类型以及为了在这些训练模型中获得高质量数据所需的特性,通常不需要过多的GPU。

我们的做法通常是从一个预训练的模型开始,甚至是一个使用不同模式进行泛化的语言模型,然后进行再训练、微调、模型检查等步骤,最后进行进一步的优化。这些步骤都需要GPU的支持,但大约使用100个GPU就能在几天内完成训练,而不是几个月。这证明了即使在看似需要大量GPU的AI领域,特别是在科学领域,只需适量的GPU和深厚的领域专业知识,就能完成许多工作。关键在于更少的技术投入,但更多的对方法、物理或科学的理解,以及更多地应用智慧而非计算能力。当然,一定的计算能力也是必不可少的。

在过去的一年半里,驱动所有这些技术发展的引擎是Hopper。Hopper是我们专门为AI构建的GPU,它不仅是我们首个以AI为中心设计的GPU,还是首个包含众多旨在加速AI模型训练的新创新的GPU。我会简要介绍其中的一些。它是一款功能强大的GPU,采用4N TSMC工艺制造,并且你现在仍可以在不同形态的设备中找到它。它采用单片式芯片设计。

H100的流式多处理器(SM)架构由第四代Tensor Core构成。我们支持新型的规格尺寸,并改进了可编程性,引入了Thread Block Clusters技术,这对于熟悉CUDA和C++的用户来说是一个好消息。此外,还推出了Tensor Memory Accelerator这一硬件组件,它允许在不需要在寄存器中进行双重拷贝的情况下,在多处理器和共享内存之间高效移动数据。它还具备一系列其他特性...

与10年前相比,Hopper作为一款GPU展现出了非常强大的性能。如今,我们拥有的计算能力已远远超过10年前的GPU。在过去的10年里,我们的性能提升了20到60倍,具体取决于你如何计算浮点运算性能(单精度、双精度或Tensor Core)。所有的软件开发都是为了找到最佳利用GPU并行性和计算能力的方法,因为从技术的角度来看,进步非常迅速,但我们通常处理的软件和问题并未暴露出足够的并行性来充分利用如此强大的GPU。


H100是我们的旗舰GPU。它采用SXM规格尺寸,并常与四路和八路HGX系统配套使用。它可以配备高达80或96 GB的HBM3内存,并通过各种OEM厂商以不同形态提供。

我们还有另一款GPU,名为L40S,相对较少见。它基于另一种架构,可以看作是Hopper的缩小版,主要设计用于数据中心,但更多地应用于AI计算,特别是训练和推理任务。例如,Hopper完全支持FP64,因此在AI计算和传统计算方面都表现出色。而L40S并不具备同样的FP64能力。然而,如果你需要进行渲染、光线追踪、AI训练或AI推理,这款GPU完全可以胜任。其PCIe规格尺寸使得它更容易安装到服务器中,从而构建大型服务器集群。

从产品组合的角度来看,我们有H100,它适用于数据中心,是训练、推理和计算的理想选择。L4在很多应用场景中也足够应对。此外,我们还有一种特别小巧的规格尺寸设计,专门用于推理、视频处理和边缘计算,能够轻松安装到边缘服务器中。这些GPU功耗低且尺寸小巧,虽然性能上不如全尺寸的数据中心GPU,但它们仍然被广泛应用,这是完全没问题的。

关于Grace Hopper架构的发布。我有幸直接参与了这个项目,对此非常熟悉。我们基于多个因素做出了这一决定,包括缺乏合适的PCIe连接、提高能源效率的需求,以及加强CPU和GPU协同工作时的额外功能,从而构建了这一平台,并首先开始制造我们自己的CPU,随后构建了我们自己的CPU加GPU的联合平台。

我们创建了Superchip平台,该平台集成了CPU加GPU或两个CPU。我们将这款CPU命名为“Grace”,它基于ARM架构。Grace Superchip本质上是一个iPad大小的迷你板,可以轻松地插入到适配的主板或服务器中。它集成了CPU、所有内存、功率调节器和I/O等组件。它就像一个独立的小型计算机,所有部件都集成在板上,非常节能。整个板子的功耗大约为500瓦特。它配备了两个插槽,内置ARM Neoverse核心。Neoverse是专为数据中心设计的ARM核心系列。作为参考,Graviton 3是V1,而Graviton 4将是V2。

在内存方面,Grace提供了不同的SKU选项。目前,我们生产的是480GB的SKU,每个核心大约拥有1.7GB的内存。但到今年年底,我们将推出960GB的容量,每个核心将享有4-5 GB/s的带宽。这一代内存直接焊接在板上,不可扩展,基于LPDDR5X技术。这是一个有趣的选择,因为它提供了来自内存控制器的直接带宽。从功耗的角度来看,这是一种非常高效的内存。通常,在整个行业中,包括移动和客户端市场,这种内存不带有错误校正功能,但我们与内存提供商合作,为其添加了错误校正功能。这使得Grace的内存完全适合数据中心使用。整个模型的能效非常高。

Grace的适用场景非常广泛。显然,我们将其定位为HPC、LLM和大型AI训练的理想选择。因此,它非常适合处理高性能任务。你可以完美地运行数据库、处理视频、图像,甚至游戏服务器,这都得益于其内部网络带宽、内存带宽、整数和浮点性能以及每瓦浮点性能之间的良好平衡。同时,它在传统的消费者和数据中心工作流中也表现出色。坦白说,你甚至可以在Grace上运行Web服务或非常轻量级的服务。但由于其核心数量只有144个,我们不认为Grace是那些更依赖核心数量而非核心强度的前端工作的最佳选择。虽然你可以购买Grace来仅运行Web服务,但这可能会有点浪费其强大的计算能力,但这也是我们看到的Grace的一个应用场景。它几乎可以覆盖所有的用例。

Grace在系统启动和部署方面尤为重要,特别是当你不希望管理过多异常和特殊硬件时。Grace是ARM生态系统中完全符合SBSA(Server Base System Architecture,服务器基础系统架构)标准的平台。我们有ARM的服务器就绪计划,这基本上意味着如果你的CPU通过了这种系统就绪认证,就表示它符合一整套标准,可以启动UEFI等。PCIe检测、所有ARM就绪的操作系统或ARM64兼容的操作系统都可以在Grace上启动,无论它们是旧的还是新的,这一点非常重要。这给部署系统的人带来了信心,确保系统能够开箱即用。系统供应商也会通过某种程度的认证。

人们可能会质疑Grace的性能,因为显然我们制造了CPU。但需要注意的是,Grace并不是作为浮点运算引擎而设计的。如果你需要强大的浮点运算能力,我们有GPU可以满足你的需求。Grace主要作为一个数据传输者,与GPU协同工作。在今天的架构中,你会注意到芯片内部网络有时会出现瓶颈,尤其是在你希望驱动更高带宽的I/O但CPU无法应对时,或者当你拥有足够的带宽但CPU的多架构设计使得进程固定化变得复杂时。我们设计Grace的理念是作为一个高效的数据传输者。它是一个单芯片解决方案,非常扁平化,拥有我们自己构建的非常强大的NOC(Network on a Chip,网络芯片),这不是ARM的IP。我们在芯片内部构建了很多内存通道,以支持大量的内存带宽。显然,你可以看到所有你期望看到的特性,包括PCIe Gen5。在这个特定情况下,我们有一个特定的链接叫C2C,可以将Grace连接到另一个Grace或Grace连接到Hopper。

如果启动一个仅基于Grace的系统,对于许多未加速或加速不足的用例来说,这将是非常吸引人的。你将拥有一个在功耗和性能上均表现出色的系统,它只有两个NUMA节点,因为包含两个芯片,但它们之间的带宽非常大,而且尽管内存不可扩展,但仍然是相当可观的RAM容量。这一切都在500瓦的功耗内实现。竞争平台可能拥有更大的内存容量,但使用的是普通的DDR内存,放入系统的内存越多,功耗就越高。你可能会遇到多芯片的CPU,需要更精细地处理NUMA分片问题。然而,即使在这种情况下,功耗仍然可能是一个限制因素。如今,当我们与客户交谈时,他们往往在空间不足之前就耗尽了电力。对于一个系统而言,电力在今天至关重要。

这里有一些数字,但主要思想是,无论你的应用场景如何,Grace都不会比竞争对手的CPU快两到三倍。这并不是它的设计初衷。有趣的是,即使性能提升非常小,有时你会觉得这不足以让你更换设备,但在能量效率方面,它始终优于竞争平台,这正是它的设计目的。

我们将两个Grace中的一个替换为Hopper,创建了Grace Hopper Superchip。我们在这个配置中只使用了72个核心,因为我们只有一个Grace芯片,然后是GPU。Grace Superchip中的GPU与之前介绍的一致,只是配备了更多的内存。它是相同的芯片,相同的架构,我们使用了六个HBM而不是五个,因此我们将内存从80GB增加到96GB。

使这个系统特别的是C2C链接。这台机器将CPU和GPU紧密结合,创造了一个统一的内存空间的错觉。实际上,CPU有一个物理内存。我们为CPU选择了合适的内存。我们偏爱DDR,因为DDR具有低延迟的优势,适合缓存层次结构,因此任何对延迟敏感的任务都适用。我们为GPU选择了HBM,因为HBM的延迟较高但带宽非常大。因此,它非常适合像GPU这样的输出引擎。我们通过C2C链接让它们互相访问,实现了这两个引擎之间的缓存一致性,给人一种单一内存池的印象,但实际上它们是分开的。这样我们可以在其中一个上增加容量,在另一个上进行创新,同时利用两者的最佳特性。

C2C链接实现了这种高级别的一致性。此外,它是一个非常高效的总线。这得益于其构建方式,这条总线的IP和与GPU通信的方式,以及它们物理上紧挨在一起的布局。这条总线在两个芯片之间仅传输2到3毫米的距离,这也对散热和布线等有很大的影响。通过这条总线,Grace Hopper实现了一种称为AST的技术,它创建了一个统一的内存虚拟地址空间,这基本上意味着在任何时候,CPU和GPU的地址转换硬件都可以读取单一的页表并立即找到数据位置。然后,通过这条使用CHI(AMBA一致性枢纽接口)协议的链接,这基本上是CPU网络芯片和GPU内部的一致性协议,使一个引擎可以直接读取和写入另一个引擎的内存,功能非常强大。

在超级芯片中集成CPU和GPU还使我们能够实现其他几项重要功能。其中之一是自动功率调节的概念。如果我设置了一个功率限制,比如一千瓦,这是Grace超级芯片的最大TDP。当GPU负载较高时,功率会自动转移到GPU;当CPU接管时,功率会返回到CPU。显然,如果因为某种原因你受到功率限制,你可以选择以更低的功率运行。但这种机制允许你根据需要将功率分配给一个引擎或另一个。例如,如果你的GPU在执行浮点运算或大规模矩阵乘法,你希望提升GPU的频率,以便从GPU中推送更多的浮点运算性能。

这种功率调节功能由GPU驱动。当GPU负载较高时,它会吸收更多功率并加速运作。当GPU负载较低时,说明CPU可能正在执行其他任务,功率会重新分配等。通过这一概念,用户可以检查如何进行应用功率调优。只要获得适当的权限,用户始终可以设置超级芯片的最大功率和GPU的最大功率,并相应地调整功率分配。

我们观察到Grace Hopper基于其独特特性,能在各种工作负载中展现卓越性能。如果你的应用仍有部分未充分加速的部分,这在目前多数应用中都很常见,你将能从CPU的高速内存带宽中获益。因为当遇到大量浮点运算时,可以交给GPU处理;但如果CPU仍有任务需要执行,很多时候这些任务受限于内存带宽,因此更快的CPU将带来性能提升。若你的应用需要将大量数据从CPU传输到GPU,无论是为了I/O还是计算需求,C2C带宽比PCIe快七倍,可显著加快数据传输速度。

此外,扩展的GPU内存或互访对方内存的理念将解锁一些新的应用场景。这可以分为两种情况:你可以直接访问其他内存而不必通过API,这样做的好处是无需考虑API延迟,只需读取所需数据;或者,对于一些内存需求极高的AI框架,如RAG或嵌入式应用,你可以将大量数据存储在CPU中,几乎不需要移动到GPU,仅在需要时通过C2C访问,尽管速度可能不及HBM,但仍能达到至少500GB/s的传输速度。

这是我们的现有产品。那么接下来呢?在产品设计方面,我们沿用了Grace Hopper的规格尺寸,并进行了扩展。我们增加了HBM3,这意味着更高的带宽和更大的容量。这仅仅是HBM方面的小改动,规格尺寸保持不变。接着我们开发了NVLink双GH200,这是两个平台组合在一起的配置。稍后你们将看到它们的外观。这些平台采用了名为MGX的系统SE规格尺寸设计,这一设计已被多家OEM和ODM采用,适用于常规数据中心。你只需要一个具备足够冷却能力的机架,大多数都可以采用风冷或水冷方式。

这是双GH200的示意图。引人注目的是,在一个系统中,你现在拥有了一个Grace和两个Grace SKU的选项。它们通过NVLink连接,实现了最大的数据交换能力。Grace之间通过额外的一致性NVLink连接,这与C2C不同,速度也有所不同。Grace和Hopper之间的最大数据传输速度通过C2C实现,但基本上你会看到类似于SMP模式的配置,即144个核心和两个GPU。之后,你可以通过添加INF网络或其他网络来进一步扩展系统。

启用C2C AST和GPU之间的NVLink的好处在于,你能够以非常灵活的方式访问内存。如果你在GPU上运行进程,并且这两个GPU之间注册了内存段,那么它们之间可以交换数据。不仅GPU可以读取和写入另一个GPU的内存(橙色部分),而且从GPU还能读取和写入远程节点的CPU内存。在这种情况下,你的限制因素是内存带宽500GB/s,因为C2C链接的带宽高达900GB/s,足以维持全带宽的数据传输。它允许你从GPU进程的角度几乎将GPU的内存扩展到整个系统。在拥有多个这样的系统,并切换到多节点配置时,我可以肯定地说,这在从GPU开始构建的系统中是可能的。如果从CPU开始,你只能看到本地内存的部分。

针对HPC领域,我们进一步构建了四路GH200节点架构。这些节点非常密集,因此只能采用液冷方式散热,因为它们在满TDP状态下运行时会产生大量热量。不同供应商的TDP有所不同,HPE的产品大约在650至670瓦之间,甚至可能略微超过700瓦。与每个节点配置两个GH200相比,现在每个节点配置了四个,因此密度极高。这种高密度解决方案的一个副作用是,目前仅有NVIDIA和HPE设计了能够容纳一个或两个四模块配置的板子,且其密度极大,刀片式规格尺寸非常定制化,单个刀片可以消耗高达8到10千瓦的功率。因此,这是一项重大的投资,需要管理大量的硬件资源。为什么这很重要呢?在接下来的六个月内,全球将有多台基于Grace Hopper GH200的超级计算机上线。

我们在美国有Venado,在沙特阿拉伯有KAUST,在布里斯托有Isambard-AI,还有在Jülich的JUPITER,这将是欧洲第一台百亿亿次超级计算系统。欧洲的首个百亿亿次超级计算系统将基于这种节点设计。它们将使用Slingshot或InfiniBand进行多节点扩展。

我们今天所拥有的平台、编程方式,特别是关于如何编程Grace,因为这在CPU中属于新颖的概念,融合了新GPU的功能和缓存一致性等特性。从编程的角度来看,除了不断增添新的功能修复和持续支持标准语言外,我们始终坚定并热情地支持多种编程模型。现在,你几乎可以选择任何你心仪的编程模型在GPU上运行,并且大多数情况下,这些模型都能顺畅运行在NVIDIA GPU上。我们主要支持三个关键类别。

CUDA,无疑是榨取GPU性能的最佳选择,我们称之为光速编程。我们不断创新,引入各种先进的API和功能,真正发挥Tensor核心、Transformer引擎等硬件优势,以及如何高效管理内存等。过去几年,我们在标准语言支持方面下了很多功夫,现在你不再需要专门编写GPU程序,而是可以通过语言中的并行构造编写并行程序,例如使用并发和数组表示。如果你选择这样做,你的代码看起来将不再像传统的GPU代码,但通过编译器的优化,你可以轻松将其运行在GPU上。

显然,这背后有着深厚的编译器工程支持。还有一项关键技术叫做统一内存,它依赖于CPU和GPU能够相互了解对方的内存位置。在需要时,它可以通过页错误机制将内存从一个设备迁移到另一个设备。目前,在x86加GPU的软件架构中,这一技术已经可以实现。虽然可行,但由于其依赖软件实现,存在不少缺点,有时开发者体验并不理想。然而,随着Grace Hopper的推出,这方面的复杂性得到了极大的简化,因为硬件层面的支持使得整体开发者体验显著提升。

在CUDA和标准语言之间,我们仍然提供指令级支持。无论你喜欢使用OpenACC还是OpenMP,这些指令都能在GPU上运行,虽然实现方式有所不同,但都能有效工作。指令级编程仍然被证明是将大型代码库从仅CPU运行有效移植到GPU运行的有效方法。因为左边的ISO标准语言可能并不完全支持你现有的代码库,而右边的CUDA,虽然功能强大,但也有人批评其存在供应商锁定的风险。然而,这正是我们持续努力的三大支柱。

选择哪种编程模型取决于你更看重控制、性能还是生产力。开发者可以根据自己的需求选择合适的编程模型。

我们在软件和SDK方面的最新工作可以在这张幻灯片上一览无余。事实上,从六个月前开始,我们就增加了对C++ 17和C++ 20的支持。例如,我们引入了协程和发送接收的概念验证,虽然根据我的了解,这些功能尚未完全符合C++标准。但由于Grace Hopper的推出,我们还增加了对ARM构建的支持和统一内存测试。此外,我们还加强了内存支持和相关功能。我们不断完善数学库,并在所有编程模型上进行改进。由于我们频繁发布更新,因此很难一一列举所有的变化。


对于科学计算领域而言,我们在多节点加速库方面投入了大量资源,比如cuSOLVERMp和cuBLASMp。这些库在许多科学计算代码中都是不可或缺的。

这个软件包是随产品一同提供的,而且是免费的。这个软件包可以免费下载,我们每年会发布五到六个新版本,主要涵盖编译器、库和API的更新。

另一方面,Grace Hopper的推出为我们带来了新的挑战和机遇。为了应对这些挑战并抓住机遇,我们一直在进行投资。我们将继续投资未来,以支持更广泛的ARM生态系统,因为我们是第一个推出RV9架构支持的厂商。我们是第一个在公共补丁中推动并使软件能够在这种新架构上运行的人。相信未来会有更多的厂商跟随我们的步伐。

除此之外,我们的其他工作几乎都是针对NVIDIA平台的。从优化的操作系统和供应商软件,到新的编译器,再到在Linux系统上运行时所期望看到的基本软件,这些工作都是公开的,并且对其他ARM架构也是有用且可移植的。当我们开始为产品配备GPU时,我们就拥有了自己的软件堆栈和针对GPU计算的优化技术。

就编译器而言,LLVM和Clang是我们最重要的合作伙伴。我们直接为这些编译器贡献代码,以维护对ARM架构的支持。我们也开始向GCC贡献代码,尽管由于许可问题,这比与其他编译器的合作更为复杂,但我们已经开始迈出这一步。通过这样做,我们基本上为用户提供了多种编译器选择,让他们可以根据自己的喜好和需求进行选择。


接下来要提及的是数学库。除了人们通常所期望的常规功能外,对于编程爱好者来说,他们还期望有一个能够理解Grace性能和性能计数器底层细节的工具。我们最初先启用了我们的工具,因为这样做相对容易,但随后我们针对Hopper推出了流处理功能,并且我们还在与第三方工具合作,以确保它们能全面支持Grace。在不久的将来,我们将见证一个从开发者角度出发的完整生态系统,包括编译器、库、性能工具等,只需简单地在Grace上构建即可获得最佳性能。

在编程模型方面,Grace Hopper软件架构的新功能之一是系统分配内存的能力。与其根据谁在使用内存来选择更方便的迁移方式(无论是显式地还是通过内存管理自动进行),系统分配内存功能允许将内存保留在一侧,并在另一侧以读写模式进行访问。这种策略遵循首次接触原则,即数据首次在哪一侧被访问,就优先保留在该侧。

在CUDA中,我们通常使用API来移动数据。但如果你使用系统分配的API,如Malloc或CUDA Malloc,首次接触的位置实际上非常重要。如果你在CPU上进行new或malloc操作,但首次在GPU上访问该数据,物理内存将在GPU端分配,你可以通过C2C(CPU到CUDA)的方式在另一侧访问它。

如果你在CPU上分配内存,但首次接触发生在CPU上,那么物理内存将在CPU上分配,GPU内核将通过C2C从CPU读取数据,并直接读写到CPU内存中。

在以前的模式中并没有引入这种改变,但这种新模式在某些场景下可能非常强大。如果你使用标准语言或指令,你实际上不会使用CUDA API来管理数据移动。我们扩展了编译器以使用名为Unified的新模式,它基本上允许即使在未经管理的情况下也能访问CPU上的数据结构。

在正常情况下,以OpenCC为例,你需要明确地将数据从一侧移动到另一侧,因此两个内存空间是分开的。但当数据被统一管理时,基于你何时访问以及何时需要的动态定位数据将自动迁移。这是幕后发生的事情,但显然全局变量、静态变量、位于此并行区域之外的事物在Unified模式下都是可访问的。通过Unified模式,无论数据是否经过管理,你都可以真正访问两个处理器上的所有数据。

几个月前,我们已经宣布了下一代GPU的名称,它叫做Blackwell。与Grace相比,Blackwell是一个全新的怪兽,因为我们专门为AI设计了这个GPU。我们已经见证了AI模型在种类和维度上的爆炸式增长。现在我们谈论的是拥有数万亿个参数的模型,这简直是惊人的,我甚至无法真正想象。这真的是一个庞大的数字。大型超大规模公司、大型云服务提供商,他们都在从头开始训练模型,进行微调,不断完善和推动这些大型语言模型的边界和创新。

为了以最高效的方式处理这些类型的用例,无论是从解决方案时间还是能源效率的角度来看,我们实际上构建了Blackwell,这是一个专为AI设计的GPU。当然,你可以用它来做任何事情,但它特别适用于AI领域。我们在其中所做的一切改进,包括链接方面、Transformer工程方面、新精度方面等,都是针对这些特定用例的。

这也是我们首次采用多种类型方法构建的GPU。由于需要大量的资源和硅材料,我们与台积电合作,利用这项技术将两个芯片组合在一起,形成单一GPU。通过这样做,我们能够增加更多的HBM大小,这意味着更高的内存带宽和更大的内存容量,同时也提升了计算能力,配备了更多的流多处理器。

我们扩展的Transformer引擎,无论是操作第一个、第二个还是后续的Transformer引擎,都关注于减少精度的同时提升效率。现在我们支持FP6、FP4等更低精度的计算。我们还支持具有不同尾数和指数变量的FP4变体,以应对不同场景的需求。同时,我们成倍地提升了整数运算的吞吐量,确保不仅能满足训练需求,也能满足推理需求。推理对于未来应用的重要性不言而喻。我们常常谈论AI模型的训练,但实际上,一旦模型训练完成且效果满意,推理将是更为频繁和重要的操作。我们特别为推理用例设计了整数精度的优化。

有趣的是,当我们开始分析AI模型的发展趋势时,会发现它们变得多么庞大、复杂,参数数量之多简直令人咋舌。显然,这些模型永远不会仅由单个GPU来承载。我们仍然需要借助多个GPU来存储和高效训练这些模型。在此过程中,可能会遇到数据瓶颈、管道瓶颈或模型瓶颈。有多种技术可以应对这些挑战。但值得注意的是,这些先进的混合专家模型实际上更加强调了GPU内外通信的重要性。

在这款Blackwell上,我们配备了新一代的NVSwitch和NVLink技术。简单来说,这是一种新的NVLink和NVSwitch芯片组合,它们实质上进一步增强了驱动GPU集群之间全带宽连接的能力。

我们将这种技术视为构建大型计算系统的基石。我们有Grace Blackwell GB200 Superchip,与Grace Hopper相比,它不再是一对一的比例,而是一对二的比例。这个一对二的比例是为了更好地发挥GPU的性能优势。

我们推出的这款Superchip板,如果完全启动,其功率大约在2.3至2.4千瓦之间,这确实是一个耗电量较大的设备。因此,我们将其放入了一个计算托盘中,并采用液冷技术来确保散热效果。由于密度和散热需求,两个GPU无法放在单个U位中。此外,我们还推出了NVSwitch托盘,用于实现这个托盘与其他托盘之间的连接。虽然InfiniBand是一个不错的选择,但其带宽不足以支持以全速训练这些模型。

当我们将这些Superchip板放置在4U机架形式中时,我们构建的系统被称为GB200 NVL72。它实质上是72个GPU在一个机架中通过NVLink完全连接在一起,形成了一个超过100千瓦的超级计算单元。整个系统都采用水冷散热技术,并且重量也相当可观。这不是一种随处可见的硬件类型,但下一波AI、生成式AI和大型语言模型的创新很可能会在云中以这种机架形式作为幕后驱动。

我们不仅仅推出了这款GB200 NVL72系统。作为CPU的Blackwell将与Grace GPU配对使用。此外,我们还将推出HGX B100系统,它将在年底上市。HGX B100将具有一定的内存容量,虽然GB200具有更大的功率和更大的内存容量,但两者在计算能力上是相当的。我们还将推出B40系统,这是一个PCIe版本的产品。Blackwell将以不同的规格尺寸呈现,但这些都是我们将在HPCAI工厂或云中看到的,用于推动这场新的大型语言模型竞赛。

接下来让我们谈谈性能方面的表现。

我们已经看到许多合作伙伴对构建中间机架或HGX规格尺寸的系统非常感兴趣。在上一代产品中,我们也有四路配置的产品。当然,我们也有PCIe接口的产品、四路Hopper在sxm规格尺寸中以及八路配置的产品,类似于dgx的类型。

对于Blackwell系列,出于多种原因,我们决定不追求四路配置。我们将提供一个PCIe接口的产品,它可以通过NVLink桥接器与其他PCIe产品连接,但仍然是PCIe规格尺寸,支持两个或四个GPU的配置。这是你在Grace Hopper中可以进行的最大配对。此外,我们还将推出HGX b100系统。所有这些系统之间都将通过交换机实现GPU之间的全带宽连接。这对于在AI中进行高效训练至关重要,而NVL72将是那些需要数万个GPU来训练数万亿个AI模型的顶尖设施的必备之选。

展望未来,我们将迎来下一代CPU和与Blackwell配对的下一代GPU。我们有一个融合了两者优势的路线图。我们的Grace下一代预计将在2025年某个时候推出。至于下一代GPU,我们刚刚宣布了Blackwell系列,所以需要更多的时间进行研发。但通常我们保持一年半的发布节奏,因此你可以在日历上设置提醒,关注下一个可能的发布时间。这是对我们计算和加速器产品组合的概述以及我们最近宣布的内容和未来计划的简要介绍。

-----

问:关于Grace Hopper上的内存管理,以及我们如何考虑内存从CPU或GPU访问的讨论,我颇感意外。因为我原本以为,即使是像CUDA malloc和CUDA host malloc这样的标准内存分配方式,也能够在Grace Hopper上实现GPU和CPU内存的跨访问。但根据你的介绍,我感觉只有使用NVIDIA HPC SDK才能做到这一点。

回答:不是的,使用CUDA,你拥有完全的灵活性。现在,你可以使用CUDA做三件事情。你可以使用系统分配器和CUDA管理器,它允许基于首次触摸进行内存放置。你使用的分配器并不关键,它会根据你首次访问的位置,自动将数据移至CPU或GPU。然而,由于这两种内存在物理上是分隔的,你仍然可以选择仅在CPU上分配内存,让GPU无法访问;或者在GPU上分配内存,让CPU无法访问。这种设计主要是为了保持与旧有模型的向后兼容性,以确保不会出现任何问题。但如果你想管理这种跨平台访问,只需分配内存,然后让系统允许你在另一侧访问即可。

问:我想我明白了。之前我认为,即使我使用CUDA malloc在GPU上专门分配内存,我仍然能在Grace Hopper上直接从主机访问它。

现在我理解了这个设置,我知道我可以在主机上或GPU上专门分配内存,并且只要我对从错误位置访问内存的性能损失有所准备,我仍然可以跨设备边界访问它。但现在我明白了,只要我使用CUDA malloc分配的内存,它就只能从GPU访问。

答:是的,CUDA内存专门用于GPU,这是其设计初衷。

-----

问:由于最新的GPU架构确实是针对AI优化的,它们正在提升低精度甚至更低精度的性能。我想知道在Blackwell与Hopper相比,是否仍可以期待FP64或FP32的改进,或者将来我们是否可能担心FP64的性能会下降,因为它与AI不再直接相关。你能否就此发表评论?

答:GPU上的空间有限,因此在GPU上放置FP64需要额外的硅空间和功耗。对于AI任务,我们选择减少FP64和FP32的能力,以便更多地推进这种更低的精度。这并不是说它们不存在,而是在一个物理单元中,fp16和FP64之间的FLOPS(每秒浮点运算次数)数量的比率非常大。与Hopper相比,Blackwell在FP64上几乎没有改进,可能甚至略有下降,尽管在其他精度上,Blackwell要快得多。这是一款AI GPU,我们一直很坦诚地说明这一点。你可以在Blackwell上运行FP64,但请不要期望有速度提升。

这并不意味着你不能使用这种精度做其他事情,也不意味着我们会完全放弃FP64。我们在科学计算和HPC领域也非常活跃。Hopper仍然是一款非常强大的用于FP64计算的GPU,并且现在我们生活在一个可以选择更多一种或另一种产品的时代,这取决于你更多关注HPC还是AI。Hopper对AI来说也很好,只是不像Blackwell那样快。但与此同时,你也不应该只购买Blackwell来做科学计算,这不是合适的选择。因此,从这个角度来看,你仍然可以购买Hopper。

对于未来,可能会有一些专业化。但我们不会放弃FP64;这不会发生。但现在就未来产品和FP64比率做任何评论还为时过早。

问:你说Blackwell上的FP64可能会有所降低。那么FP32呢?

答:从性能提升的角度来看,它们与FP64有类似的依赖关系。但Blackwell在FP32上的性能相较于Hopper会有显著提升。

-----

问:关于ARM CPU的性能分析(profiling),你提到标准的Nvidia工具也能很好地对Grace CPU进行性能分析。这里可能有点令人困惑,因为我想很多人会针对不同的ARM芯片来优化我们的代码,那么这些性能分析工具在其他ARM架构上也能正常工作吗?

答:这取决于具体情况。这些工具确实可以在其他ARM架构上工作,比如像Alra或Grait这样的工具。但如果你只关心优化CPU,那么你可能不需要使用这些工具。我提到这些工具是因为它们还能显示GPU方面的性能情况。如果你只针对CPU进行优化,你可能会更倾向于使用HPC工具包。这些工具基于Linux内核的性能计数器(Performance Counters)构建,这些计数器通过Puppy这样的API进行访问。我们为ARM Neoverse V2核心启用了支持,因此,任何使用ARM Neoverse V2核心构建的CPU,无论是Grace、Graviton 4,还是未来推出的其他CPU,都将具备这种性能计数器的支持。只要你的开源工具支持最新的Puppy版本,你就可以查看各种性能数据,比如SIMD指令数量、缓存未命中数量等。

现在,唯一还没有在开源中提供的是我们称之为“核外”的性能计数器。Grace使用了ARM的shell核心,我们构建了NOC,以及连接CPU和GPU的C2C总线。C2C总线有自己的性能计数器,但这些是NVIDIA特有的。除非你拥有Grace系统,否则这些计数器对你来说没有实际意义。我们可能会在未来某个时候将这些计数器开源。但对于Grace来说,如果你只关心CPU部分,请使用你熟悉的性能分析工具。如果你正在为Grace开发GPU应用程序,那么使用我们的工具会更合适,因为你可以同时查看CPU和C2C总线的性能计数器,从而了解通过C2C总线传输的数据量等信息。

问:我澄清一下,我之所以提出这个问题,是因为我们也在考虑将不同类型的ARM CPU与NVIDIA GPU一起使用,我想知道我们是否仍然可以使用相同的性能分析工具集。

答:是的,你完全可以使用相同的性能分析工具集。我想强调的是,NVIDIA并不只关注Grace上的ARM。我们构建Grace是出于特定的需求,但我们仍然与Graviton等其他ARM架构保持合作,我们也希望未来能与更多ARM架构的CPU合作。我们的目标是让NVIDIA的GPU能够在任何ARM 64 V8和V9类型的架构上顺畅工作,为客户提供更多的选择。同时,我们也在继续开发适用于各种ARM架构的GPU产品。


--【本文完】---

近期受欢迎的文章:

  1. AI在如何从HPC汲取数据存储方面的经验

  2. Google支持DAOS成为HPC/AI高性能存储方案

  3. HPC-AI市场报告:预计2024年市场将非常强劲

  4. 《2023年HPC-AI市场报告与2024年至2028年预测》概要

  5. NVlink:突破AI与HPC的数据传输瓶颈



更多交流,可添加本人微信

(请附姓名/单位/关注领域)

继续滑动看下一个
Andy730
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存