生成式人工智能/大语言模型

借助 NVIDIA cuBLAS 12.9 提高矩阵乘法速度和灵活性

NVIDIA CUDA-X 数学库助力开发者为 AI、科学计算、数据处理等领域构建加速应用。

CUDA-X 库的两个最重要的应用是训练和推理 LLM,无论是用于日常消费者应用,还是用于药物研发等高度专业化的科学领域。要在 NVIDIA Blackwell 架构上高效训练 LLM 和执行 具有突破性性能的推理任务 ,多个 CUDA-X 库不可或缺。

cuBLAS 是一个 CUDA-X 库,可提供高度优化的内核,用于执行最基本的线性代数任务,例如矩阵乘法 (matmuls) ,这些任务对于 LLM 训练和推理至关重要。

NVIDIA CUDA 工具包 12.9 中新推出的 cuBLAS 支持进一步优化 cuBLAS matmul 性能的新功能。它还通过调整浮点精度和利用模拟的基础模组,实现了更大的灵活性,以平衡准确性和能效等需求。

本文将介绍 cuBLAS 12.9 的具体方法:

  • 为 NVIDIA Hopper GPU 推出新的 FP8 扩展方案,提供灵活性和性能。
  • 利用适用于 FP4 和 FP8 matmuls 的 NVIDIA Blackwell 第五代 Tensor Cores 提供的块扩展功能。
  • 与 Blackwell 和 Hopper GPU 上的 FP8 matmuls 相比,可在各种精度(包括 FP4)下实现高达 2.3 倍和 4.6 倍的加速。
  • Blackwell BF16 Tensor Core 支持 FP32 仿真,其运行 matmuls 的速度比 Blackwell 和 Hopper 原生 FP32 matmuls 快 3 到 4 倍,同时提高了能效。

基于 NVIDIA Hopper 的 Channel-and-block-scaled FP8 matmuls

在使用窄数据类型 (例如 FP8) 执行 matmuls 时,扩展是保持训练和推理准确性的基础。之前的 cuBLAS 版本在 NVIDIA Hopper 和 NVIDIA Ada GPU 上支持 FP8 张量范围扩展 (单扩展因子) 。现在,cuBLAS 12.9 为 Hopper GPU 上的几种新扩展方案提供了更大的灵活性。

第一种是通道范围或 外向量缩放 ,支持将单个缩放系数应用于 A[MxK] 的单个矩阵行或 B[KxN] 的列。这可以通过块缩放进一步扩展,块缩放会对 K 维中的每个 128 元素 1D 块或矩阵 A 和 B 的 128 × 128 2D 块应用缩放系数。

使用 1D 块可提高准确性,而 2D 块可提供更好的性能。cuBLAS 支持 A 和 B 的不同缩放模式 (1D x 1D、1D x 2D 和 2D x 1D)。

图 1 显示了各种大小的大型 matmuls 的基准测试。使用各种 FP8 扩展方案可以提供高达 1.75 倍的加速,除一种情况外,在所有其他情况下,FP8 扩展方案提供的加速至少是 BF16 基准的 1.25 倍。

A bar chart of the speedups provided by the three new FP8 scaling schemes and the previous tensor-wide scaling, compared to a baseline BF16 for a range of matmul sizes.
图 1。针对 H200 GPU 上各种矩阵大小的不同 FP8 扩展方案与 BF16 基准的基准比较 (输入矩阵维度定义为 A[MxK]B[KxN])

有关使用 示例 ,请参阅 cuBLASLt 库 API 示例。

基于 NVIDIA Blackwell 的块级 FP4 和 FP8 matmuls

NVIDIA Blackwell Tensor Core 原生支持细粒度 1D 块级 FP4 和 FP8 浮点类型 ,可在降低的精度和吞吐量之间实现更高水平的平衡。与使用单一全局缩放系数相比,此方法可更精确地表示每个块内的值,从而提高整体准确性。

cuBLAS 12.9 可以通过以下 cuBLASLt API 使用这些新精度,其中`E` 是定义数字动态范围的指数,`M` 用于表示尾数精度:

  • `CUDA_R_4F_E2M1`:具有`CUDA_ R_UE4M3` 比例和 16 个单元块的 matmuls。缩放类型是`CUDA_R_E4M3` 的变体,符号被忽略。查看 API 示例
  • `CUDA_R_8F` 变体:具有 `CUDA_R_UE8` 比例和 32 个单元块的 matmuls。此处,缩放类型为 8 位无符号指数型浮点数据类型,可视为不带符号和尾数位的 FP32。请参阅 API 示例
The diagram shows how inputs, (de)quantizations, scaling factors, and outputs tie together for the new FP4 and FP8 block-scaled datatypes.
图 2 。块级 GEMM 图,包含结语、缩放因子和 cuBLASLt API 支持的多个输出

此外,得益于小块大小和新的缩放模式,cuBLAS matmul 内核可以在输出为 FP4 或 FP8 时计算 D 张量 (图 2 中的 scaleD) 的缩放系数。这消除了在执行转换之前估计缩放系数或额外传递数据的需求,而这对于张量范围的缩放是必不可少的。

请注意,如果 D 是 FP4 张量,则在对所有值进行量化之前,会对其应用二级缩放系数。 有关更多详情,请参阅 cuBLAS 文档中的量化说明

NVIDIA Blackwell GPU 上的 cuBLAS 12.9 matmul 性能

借助 cuBLAS 12.9 中提供的新数据类型、运行时启发式算法和内核优化,用户可以充分利用 Blackwell GPU 的出色性能。

图 3 展示了 cuBLAS 中适用于各种精度的最新 matmul 性能,并将 NVIDIA B200 和 GB200 与 Hopper H200 进行了比较。合成基准测试由受计算限制的大型矩阵大小 (左) 和 1000 个随机矩阵大小 (右) 组成,这些矩阵的范围涵盖受延迟限制、受内存限制和计算限制的大小。

随机矩阵数据集由更小的矩阵组成,这些矩阵使 matmul 性能由带宽比主导,导致速度提升低于受计算限制的情况。在计算受限的情况下,块级 FP4 在 GB200 上的速度比 H200 FP8 基准快 4.6 倍,可实现高达 6787 TFLOPS/s 的绝对性能。

This chart shows the geomean speedups of matmuls (A[MxK]B[KxN]) in various precisions on Blackwell compared to Hopper, confirming that cuBLAS achieves close to the throughput ratios on large, compute-bound sizes. The chart also shows that for a dataset of one thousand random sizes (small to large) and shapes, the speedup is dominated by the bandwidth ratios between Blackwell and Hopper GPUs.
图 3。与 H200 相比,Geomean 在 B200、GB200 上针对合成矩阵大小 (左图:大型、计算受限的大小;右图:1000 个随机大小和形状) 的精度提升。GB200 在计算受限的 matmuls 上也报告了以 TFLOP/s 为单位的绝对性能 (左)

“Blackwell 架构在由矩阵形状和大小组成的现实数据集上也表现出色,这些数据集主要用于重要的 LLM 训练和推理工作负载 (图 4) ,与使用 BF16 和 FP8 数据类型 (B200 和 GB200) 获取的 H200 基准相比,Blackwell 架构至少实现了 1.7 倍的加速和 2.2 倍的加速。图 4 中的这些几何平均加速仅适用于 matmuls 及其在数据集中每个模型中的相关重复计数。最终的端到端加速也取决于工作负载中非 matmul 部分的性能。”

This chart shows that a geomean speedup of above 1.5x and up to 2.2x can be expected for an ensemble of important workloads in LLM training and inference today on Blackwell (B200 and GB200) compared to Hopper (H200) GPUs. The precisions dominating these workloads are FP8 (with tensor-wide scaling) and BF16.
图 4。与 H200 相比,B200 和 GB200 在 LLM 训练和推理的重要工作负载中仅使用 Matmul 加速几何均值。

通过 cuBLASLt 启发式 API 自动调整 [6,7]提供的机会性优化,Blackwell 架构实现的性能可以得到进一步提升。

在 Blackwell 上使用 BF16 Tensor Core 加速 FP32 matmuls

除了 cuBLAS 已经在 Blackwell 上提供的令人印象深刻的性能之外,它还引入了一项功能, 使用户能够选择使用模拟来实现可能更快的 FP32 矩阵乘法 和更高的能效。

图 5 展示了 B200 GPU 与原生 FP32 性能和 H200 GPU (适用于各种方形矩阵大小) 相比的 FP32 仿真性能。在最大的情况下 (M=N=K=32,768),在 B200 或 H200 上,模拟可实现比原生 FP32 高 3 到 4 倍的 TFLOPS。

The chart shows that up to 3x and 4x speedup is available versus the native FP32 throughput on Blackwell and Hopper, respectively. The chart reports performance in TFLOP/s for B200 and H200 GPUs.
图 5。与 B200 和 H200 GPU 上的原生 FP32 相比,模拟 FP32 的性能 (TFLOP/s)

用于科学计算应用的 matmuls 仿真现已得到充分理解,并且提供了几种利用仿真来提高性能和能效的算法和实现。

例如,NVIDIA GTC 2025 演讲“ How Math Libraries Can Help Accelerate Your Applications on Blackwell GPUs ”展示了天气预报应用程序的一个关键组件,在该组件中,模拟可提供 1.4x 性能和 1.3x 能效提升。

cuBLAS 库中 FP32 仿真的当前实现利用了 BF16 Tensor Core。有关使用示例,请参阅 cuBLASLt 库 API 示例 目前正在开发 FP64 中的 matmuls 仿真。

开始使用 cuBLAS 12.9

下载 cuBLAS 12.9 ,开始使用本博客中讨论的技术加速您的应用程序,并参考 cuBLAS 文档 ,获取与 Hopper 的新扩展方案 Blackwell 上的新块扩展数据类型 以及 Blackwell FP32 仿真 相关的更多信息。

如需了解详情:

 

标签