点击下方 卡片 ,关注“ 慢慢学AIGC ”
引言
Nvidia 发布 B100、B200 和 GB200 的公告在科技界引起了比 iPhone 发布更大的关注。 大家都在问的真正问题是,实际的性能提升是多少? Nvidia 声称提升了 30 倍,但这是真的吗? 更重要的问题是,性能/总拥有成本(TCO)是多少?
在上一代 H100 中,由于价格的大幅上涨, 性能/总拥有成本的提升相对于 A100 来说并不理想 ,因为H100的内存带宽增幅不大,而价格却从 2022 年第三季度 A100 的低谷价格大幅上涨 。然而,这并没有太大影响,因为 AI 行业对训练的需求大大超过了推理,H100 的更高 FLOPS 性能更适合训练,而且大部分价格上涨是由于 Nvidia 的高利润率。
随着 Blackwell 的推出,这一切都改变了,因为价格的代际上涨幅度并不大。这是由于现有大量 H100 和 H200 的竞争以及如超大规模定制硅、AMD 的 MI300X 和 Intel 的 Gaudi 2/3 等新兴挑战者进入市场,并提出自己的性能/总拥有成本论据。因此,Nvidia 必须提出一个有说服力的论据来销售他们的新一代产品。当然,他们不会让竞争对手侵占市场,采用非常激进甚至是仁慈的定价策略。
Nvidia 声称 Blackwell 比 Hopper 性能高出多达 30 倍。 问题是,这 30 倍的数字是基于一个非常具体的最佳情况。 需要明确的是,这种情况确实是现实且可能实现的(除去不公平的量化差异),但并不完全代表市场情况。 今天,我们将逐步分析 Nvidia 的性能声明,并关注多种应用程序的实际性能提升,包括使用我们过去 1.5 年构建的大模型性能模拟器进行的推理和训练。 我们还将剖析竞争对手在销售他们的商用硅时是否有机会,以及超大规模硅是否能与 Nvidia 的新产品竞争,尽管存在巨大的成本差异。
应该跟踪一些主要的工作负载,每个工作负载都有不同的特点。推理与训练显然是不同的,因为训练中有反向传播和批量大小的差异。处理大型模型可能导致非常不同的性能特点,例如超越典型 HGX H100 服务器中的 8 个 GPU 的并行性扩展。
许多人在讨论性能时倾向于关注今天的小模型推理(<1000 亿参数),但随着 Blackwell 大幅降低推理成本,并且工作负载需求继续未能得到小模型的满足,结合 Databricks DBRX 132B、xAI Grok-1 314B、Cohere Command R+ 104B、Mistral 8x22B 以及 Meta LLAMA 3 发布,显然重点将重新回到大模型的推理性能上。
大于 1000 亿参数的模型将成为“小模型”微调和推理的新标准,而大于 1 万亿参数的稀疏模型将在大模型中成为常态。需要明确的是,这些大模型已经占据了今天大部分的推理和训练计算需求。随着未来模型的发布,大模型的门槛将只会继续提高。记住,为了在经济上合理,硬件必须能够持续有效 4-6 年,而不仅仅是到下一代模型发布之前。
让我们先看看规格,然后再深入研究我们的 LLM 性能模拟器,以及它告诉我们关于大模型和小模型推理与训练的情况。
硬件规格 - 别只看表面
在主题演讲中展示的性能提升是通过多维度改进实现的——最基础且最容易理解的因素是内存带宽和浮点运算(FLOPS)能力的提升。
风冷 700W 的 B100 将是首批发货的型号,提供 1750 TFLOPS 的 FP16/BF16 计算性能。B100 的底板设计可以插入今天 HGX H100 系统中使用的相同设计中,迫使 B100 在现有系统的热包络内以较低的功率和时钟速度运行。很快在 B100 发货后,B200 将以更高的功率和更快的时钟速度进入市场,提供 2250 TFLOPS 的 FP16/BF16 计算性能。此外,液冷的 GB200 NVL72 将允许 Blackwell GPU 在更高的功率水平下运行,进一步提升性能——提供 2500 TFLOPS 的 FP16/BF16 计算性能,比 H100 和 H200 提升 153%。这里还有一个 1200W 的 B200 没有包括在表格中。
FP16 和 TF32 的 FLOPS 提升了 77%,但随着功率的增加和进一步的量化,总 FLOPS 可以扩展到 4 倍。 内存带宽,这一可能最重要的规格升级,从 H100 的 3.4 TB/s 和 H200的 4.8 TB/s 增长到 Blackwell 系列中的最高 8.0 TB/s,这最直接地改善了推理吞吐量和交互性(每秒用户的 tokens 数量),因为推理通常受到内存带宽的限制。
我们应注意,即使在最坏的情况下,FP16 与 FP16 相比,FLOPS 提升了 153%,但内存带宽的提升较小。从 A100 到 H100 的带宽提升比这一代更大。内存墙是AI行业未来扩展面临的最大挑战之一。
更重要的是看 FLOPS 乘以比特数再除以带宽 ; 这个指标显示了真实的情况。 在大多数数值格式下,比例大致相同,即完全利用 FLOPS 所需的算术强度保持稳定。 除了新的数值格式外,大多数代码应该可以移植并实现类似的利用率,考虑到算术强度。 一旦充分利用了 Blackwell 张量核心的所有新技巧,Blackwell 相对于 Hopper 的总体 MFU(机器学习性能利用率)应更好。
然而,这些性能提升应在考虑 Blackwell 硅片面积(约1600mm²,2080 亿个晶体管)是 Hopper(约 800mm²,800 亿个晶体管)的两倍的背景下进行评估。鉴于摩尔定律的放缓和 3nm 问题,Nvidia 必须在没有真正的工艺节点缩减的情况下提供代际性能。通过使用 DTCO 和温和的 6% 光学工艺缩减,Blackwell 仍然能够提供 Hopper 两倍的性能。
看一下每平方毫米硅片的原始 TFLOPS,即相对于逻辑制造成本的基准,B100 实际上提供的性能更低,FP16 FLOPS 提高了 77%,而 硅片面积增长了约 100% 。这是由于为了快速进入市场,在现有 700W 平台上进行降频,而仅在 B200 和 GB200 NVL72 中,我们才看到每平方毫米硅片性能的提升。
按硅片面积增益标准化,风冷 B200 仅提供 14% 的 FP16 FLOPS 每平方毫米硅片的提升——这并不是一个全新架构所期望的。因为大部分性能提升仅通过增加硅片面积和量化实现。人们需要理解微缩的工作原理,并解决 Blackwell 架构的 FP8、FP6 和 FP4 训练问题。
还请注意,在本文中,我们展示了 H100 和 H200 的 FP4 和 FP6 FLOPS 与 FP8 FLOPS相同。虽然从内存加载 FP4 后转换为 FP8 会有轻微的开销,但在计算受限场景中,内存带宽节省降低了功耗,并为实现最大 FLOPS 提供了更多的余地,这有效地在实际使用中消除了开销。
鉴于硅片面积翻倍应需要双倍功率,分析等功率性能提升(即每 GPU 瓦特实现的 FLOPS)是重要的。
虽然 B100 在相同 700W 功率下提供 77% 的 FP16/BF16 FLOPS 提升,但 B200 和 GB200 在每增加的功率中提供的 FLOPS 提升却逐渐减少。 GB200 在每 GPU 瓦特下提供的 47% 的 TFLOPS 提升相对于 H100 是有帮助的,但在不进一步量化模型的情况下,仍然不足以实现主题演讲中展示的 30 倍推理性能。
FLOPS 成本同样不显著。GB200 NVL 和 B200 的 TFLOPS 每美元的故事并没有显著不同。
如上所述的 简单分析表明, 规格仅是故事的一小部分,声称的 30 倍推理性能提升中的绝大部分来自量化以及其他变革性维度的架构改进 。
模型性能调查
Nvidia 声称 GB200 比 H200 性能提升 30 倍,但如上所述的分析表明,没有一个单一的规格接近这种提升。
这怎么可能?因为系统比单个芯片规格更重要。FabricatedKnowledge 有一个关于 Jensen 多年来一直在说的“数据中心是计算单元”的精彩思考文章,这在 GB200 NVL72 中终于实现。我们应注意,NVLink 背板和机架级产品在机器学习硬件的背景下并不新鲜。
自 2018 年以来,Google 一直在发运 64 个 TPU 被动铜连接子片,超出此范围则通过完全水冷的机架光学连接。TPUv5p(Viperfish)和 TPUv5e(Viperlite)之间的主要区别除了芯片级规格之外,还在于 v5e(Viperlite)使用铜连接 256 个 TPU,而 v5p(Viperfish)使用铜连接 64 个 TPU,并通过光学电路交换机(OCS)连接到 8960 个 TPU 的其余部分。
以下可能是我们见过的关于机器学习性能建模和最佳总拥有成本(TCO)搜索空间的最酷的图表。它揭示了关于LLM性能建模和趋势的许多信息。它还展示了各种并行策略和批量大小。
在单个 GPU 上运行小模 型推 理时,通常会得到类似下图的曲线,该曲线在低批量大小下显示出非常高的交互性(每秒用户的 tokens 数量),随着批量大小的增加,吞吐量增加,但交互性也下降。 系统吞吐量(每个 tokens 的成本)与单用户交互性(用户体验)之间存在权衡曲线。
不幸的是,对于像 GPT-4 这样的大型模型,单一权衡曲线的简单性被抹去了。 大型模型必须在许多 GPU 之间拆分,这会引入许多复杂性。关于 GPT-4 模型详细内容可以参考 《 万字长文解析 GPT-4o 背后的技术原理 》这篇文章。 GPT-4 MoE 具有 55B 的注意力参数和每个 120 层的 16 个专家,每个有 111B 参数,总共需要 1831GB 的内存。
这个模型不可能适合单个 GPU 甚至是 8 个 GPU 的服务器。 因此,它必须在数十个 GPU 之间拆分。 模型的拆分方式非常重要,因为每种不同的配置意味着非常不同的性能特性。
让我们从简单的开始,然后逐步深入。
推理并行技术——管道并行、张量并行、专家并行和数据并行
并行性,即在多个 GPU 之间分配任务,是为了将模型装入系统中。但正如我们将看到的,并行性不仅仅是解决容量限制问题。让我们解释最重要的并行形式以及使用不同并行配置是如何在性能提升中起核心作用的。我们将从一个简化的解释开始,这个解释忽略了一些复杂性,以使其更易理解,然后进入真正的模型,该模型考虑了 KVCache、预填充以及各种内存、计算和通信开销。
管道并行(Pipeline Parallel, 简称 PP)
在管道并行中,最简单的并行形式,模型的层被分割到多个 GPU 上——在下面的 GPT-4 MoE 示例中,将 120 层分割到 16 个 GPU 上。
在前向传播过程中,每个用户查询中的每个 token 依次通过每个 GPU,直到通过整个模型。因为每个 GPU 的层数较少,模型现在可以跨越所有 16 个 GPU。
然而,由于查询中的 token 仍然必须依次通过管道并行设置中的所有 GPU,交互性(每秒用户的 tokens 数量)没有净提升。
将上述 PP16 设置与假设的一个 GPU 部署进行比较,我们看到交互性是相同的(忽略 1 个 GPU 系统的 FLOPS 和内存容量限制——在 GPT-4 MoE 的推理中触发)。
管道并行的主要好处是缓解内存容量压力——使模型适应,而不是使其加速。 管道的每个阶段将依次处理不同的用户集。
张量并行
管道并行和张量并行都克服了内存容量限制(即将模型装入系统),但在张量并行中,每一层的工作在多个 GPU 上分配,一般是在隐藏维度上。在每一层的自注意力、前馈网络和层归一化期间,通过设备间的 all-reduce 多次交换中间工作。这需要高带宽,尤其需要非常低的延迟。
实际上,域内的每个 GPU 与其他所有 GPU 一起工作在每一层,就像它们是一个巨大的 GPU。 下图展示了 DGX H100 中的两个网络——即 NVLink 扩展网络(连接到 NVSwitch 的多彩线路)和通过 ConnectX-7 网络接口卡(橙色)访问的 InfiniBand/以太网扩展网络。
像 NVLink 和 Google 的 ICI 这样的扩展网络使张量并行比扩展网络更快。
张量并行允许内存带宽在所有 GPU 之间共享和池化。 这意味着在前向传播过程中,每层加载模型参数时,内存带宽从 8,000 GB/s 提升到 128,000 GB/s。
在下面的示例中,交互性(每秒用户的 tokens 数量)比 PP16 示例高 16 倍,在 TP16 系统中为 69.9 tokens/second/user,而在 PP16 系统中为 4.4。系统总吞吐量也相应地增加了 16 倍,在这个简化的示例中。
然而,上述示例是完美的场景,未考虑各种导致现实中观察到的内存带宽利用率(MBU)较低的因素。 这里最重要的影响是 GPU 之间需要的 all-reduce 和 all-to-all 操作的通信开销。 张量并行中的 GPU 数量越多,这种影响就越大,从而降低了交互性和吞吐量。
实际上,由于较少的 GPU 间通信瓶颈,管道并行实现了比张量并行更高的吞吐量。它还通常实现更高的批量大小/MFU。
专家并行
在张量并行中,所有 GPU 一起工作以托管所有层,而在专家并行中,专家在不同的 GPU 上分布,但注意力是复制的。
在下面的 EP16 系统示例中,每个 GPU 托管一个专家。这将总参数加载降低到每个专家域仅为 166B,即 55B 用于复制的注意力和 111B 用于每个专家。
每个专家域还必须加载注意力,这增加了每个 token 的内存带宽需求。 因此,在专家并行中,内存带宽需求较大,导致 EP16 示例的交互性为48.2,低于 TP16 示例(交互性为 69.9)。
请记住,张量并行引入的通信开销对内存带宽利用率产生重大影响,降低了吞吐量。这种影响与专家并行中的注意力层额外开销相对立,哪种影响占主导取决于通信开销的程度。
来源:一种混合张量-专家-数据并行的方法优化专家模型训练。Singh等。https://arxiv.org/abs/2303.06318
专家并行也有通信开销,如上图所示,但分割专家域并复制注意力意味着显著减少开销。基本上,图右侧的 All Reduce 和 All to All 操作在专家并行中不需要执行。我们还应注意,并行计算的 Transformers 在推理和训练成本方面有很大改进,特别是随着模型规模的扩大,尤其是因为每层内所需的通信减少。然而,在目前开源模型中,大规模实现仍存在挑战。
数据并行
数据并行可能是所有并行中最简单的——基本上它复制系统中的所有内容而不共享或合并任何系统资源。这就像在美国和亚洲各有一个 Web 服务器。不同的用户访问每个服务器,它们运行相同的内容,但彼此完全独立。
在下面的示例中,由于每个数据并行系统的 TP16 已经达到内存限制,交互性没有提高。保持相同的总用户数量为 100,总吞吐量也与 TP16 示例相同。数据并行增加了用户数量的余地,因为有 32 个 GPU 的 FLOPS 可用(相对于 TP16 的 16 个),但如果我们不引入更多的用户生成更多的吞吐量,从 TP16 到 TP16 DP2 是资源浪费。
如果我们保持以前 TP16 系统示例的 100 个用户,但实施两个数据并行系统——即总共 200 个用户,那么我们将拥有两倍的吞吐量。大模型推理阶段 数据并行的最重要好处是没有通信开销,因为每个数据并行系统完全独立运行。 我们应注意,尽管在其他系统中我们为了简化解释忽略了所有开销,但在数据并行中没有任何开销!
堆叠并行
我们还可以堆叠各种并行方案,以适应特定的模型、用户和交互性以及吞吐量目标。
在下面的 TP2 EP8 并行示例中,我们实施了 8 个专家域,每个域中有两个 GPU 运行 TP2 张量并行。与 EP16 并行相比,每个专家域现在加载两个专家的参数和注意力,而不是一个专家的参数和注意力——从而减少了总体内存容量需求和带宽开销。因此,TP2 EP8 的总系统参数内存需求低于 EP16 的 2656 GB 内存需求。
这使得 TP2 EP8 的交互性达到 57.8 tokens/s/user,高于 EP16 的 48.2 tokens/s/user。然而,虽然内存容量/带宽开销减少了,但转向 TP2 EP8 会引入通信开销,这在本分析中被忽略了。
72路并行堆叠
GB200 NVL72 的发布(详见《英伟达 DGX 产品:十年谋划,步步为营》)引起了轩然大波——部分原因是错误的——引发了对增加液冷含量和更高数据中心功率密度的热切期待。NVL72 在 72 个 GPU 之间实现了 900GB/s 单向带宽的非阻塞 all-to-all 网络,远快于当前 InfiniBand/以太网扩展网络提供的 50GB/s(400G)。更重要的是, NVL72 还实现了更低的延迟。
综合起来,NVL72 的主要创新是它大大扩展了 NVLink 网络启用的并行性集合。H100 和 H200 的 8 GPU NVLink 网络仅允许少量配置——例如,张量并行和专家并行的实际排列组合列表并不长:(TP1 EP8)、(TP2 EP4)、(TP4 EP2)和(TP8, EP1)。我们说实用是因为你可以在单个服务器之外运行张量并行,但这样做会大大降低性能。
(在糟糕的一天中)对 H200 进行基准测试
当我们查看 H200 在 FP8 下运行 GPT-4 时,并行性选项的帕累托最优边界在 GPU 数量增加时表现得非常糟糕。
在 TP8 时,GPU 通过 NVLink 进行通信,因此延迟不大,因为交互性(每秒用户的tokens数量)提高了,但随后,吞吐量大幅下降。这是因为张量并行超出了 8 个 GPU 的范围。为了从交互性约 6.3 提升到约 6.5,导致每 GPU 总吞吐量下降约 23%。这是一个非常严重的影响,原因在于张量并行的通信必须越过 NVLink 网络的边界,进入 InfiniBand/以太网。
主要原因是通过 ConnectX-7 NIC 和网络交换机的延迟相对较高。 此外,为了跨越服务器,通常需要通过 DSP 和光学器件或 AEC(有源电缆)。 相比之下,NVLink 网络只需要通过 NVLink 交换机,此外仅需短距离铜缆。
此外,这种影响在超过 16 个和 32 个 GPU 的张量并行时再次发生。
考虑到这一点,回到主题演讲的幻灯片中——注意到 Nvidia 在幻灯片中选择了基于 TP64 的基准测试,这是在 H200 上运行的最差的并行方案。
不仅如此,Nvidia 还故意限制了 H200 和 B200 系统使用 FP8,而 GB200 使用 FP4。 所有这些系统都可以从内存的角度受益于使用 FP4,这会将所有这些曲线向右推移,关于交互性指标。 此外,B200 被限制为 FP8,尽管在 FP4 时具有 2 倍的 FLOPs。
解释 30 倍性能提升的最明显因素是比较 GB200 NVL 在 FP4 下的性能与 H200 和 B200 在 FP8 量化下的性能。通过模拟器剥离这一点显示,从 H200 到 GB200 我们只有约 18 倍的性能提升。这并不像 Nvidia 所声称的 30 倍那样令人震惊,但仍然是一个非常令人印象深刻的成就。
下一个最具影响的因素稍微更微妙——基准场景对 GPT-4 施加了 32k 输入、1k 输出的约束,所有基准测试都有 5 秒的首次 token 生成时间限制。预填充非常受限于 FLOPS,因此在 H200 等低 FLOPS 系统上,这些限制非常严格。此外,通过最大化每用户的预填充 tokens 数量并最小化解码,这些约束变得更为严格。
这种情况通过有效消除所有大型批量大小系统设置的 H200 系统,玩弄了基准测试,因为在 H200 系统上运行大批量大小将远远超过 5 秒的首次 token 生成时间限制,因为较低的 FLOPS。没有大批量大小,就没有办法 H200 系统能够提供高总体系统吞吐量——这意味着 H200 曲线比在没有 5 秒限制的情况下更低。
需要明确的是,拥有较短的首次 token 生成时间是非常理想的,但这是用户需要考虑和做出的权衡。这个基准测试减小了 H200 系统在吞吐量方面可以实现的性能范围,尽管是在牺牲首次 token 生成时间的情况下。
如果这是一个 512 输入 2k 输出的场景,具有相同的 5 秒首次 token 生成时间(TTFT)和 20 交互性要求,性能提升不到 8 倍。我们不确定大规模部署的输入与输出 tokens 的比例,但可能很多人需要非常高的输入和低的输出比例。潜在的代理和其他新兴工作负载的预填充与解码比例可能高于 Nvidia 展示的 32:1 比例。
即使在这个精心挑选的场景中,由于架构和网络增益,性能提升仍然显著,即使剥离了纯规格和营销噱头的影响。
让我们看看各种模型大小和训练与推理的实际性能和 TCO 改进。此外,让我们深入了解这些性能提升对推理系统盈利能力的影响。
实际性能和 TCO 改进
当我们运行我们的模型模拟器时,每个 GPU SKU 的性能提升非常不同。接下来,让我们深入研究从 H100/H200 到 B100、B200 和 GB200 的大模型和小模型在训练和推理中的性能和 TCO 改进。此外,我们将展示 GPT-4 大规模推理系统的收入、成本和盈利能力数据。
很难确切知道实际可以实现的利用率和 FLOPS,因为在实际场景中,H100 的最大利用率仅能达到 70%。目前,我们主要基于 B100、B200 和 GB200 的功率/揭示的规格进行估计,但归根结底,训练性能提升比推理温和得多。
对于大模型的训练,GB200 的性能提升约为 3.5 倍,而 B100 的提升较小,仅比 H100 高 1.5 倍。对于小模型,B100、B200 和 GB200 之间的性能提升基本上与 FLOPS 差异一致,范围从约 2 倍到 3 倍不等。
虽然整个堆栈的 TCO 略有改善,但对于仍专注于训练小模型(少于 500B 参数)的用户,B200 似乎是最佳选择,相对于 H100 在大规模部署中的性能/TCO 改善约 85%。对于大模型,GB200 是最佳选择。这里你可以继续使用 H100 很长一段时间。
在推理方面,GB200 显示出相对于其他系统的最大分化。B200 相对于 H100 的性能提升约为 6 倍。对于小模型,B200 是最佳选择,因为 GB200 的轻微性能提升对帮助不大,特别是如果考虑到增加的成本和部署复杂性。只有在需要>TP8 时,GB200 才比 B200 更重要。
因此,在像 GPT-4 这样的大模型中,B200 在 GPT-4 推理中带来约 4 倍到 7 倍的性能提升,当量化公平设置时,具体取决于选择的交互性曲线点。相比之下,GB200 的提升范围从约 5 倍到 21 倍——更大的提升。很明显,那些在模型生成方面落后于大公司的人应该购买 GB200 用于他们的大模型训练和推理。
需要明确的是,如果公司只打算训练和服务如 Databricks DBRX 132B、X.ai Grok-1 314B Cohere Command R+ 104B、Mistral 8x22B 这样的模型,实际上最好使用 B200。基础设施采购至少是 4 年的承诺,如果不是更长时间,必须提前计划。今天的大模型将是明天的小模型。
推理的盈利能力
但这些性能提升对底线意味着什么?
GB200 NVL72 的每小时计算成本将高于 H200。这是由于每 GPU 成本较高以及每 GPU 显著更高的网络内容。