• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 生成式人工智能/大語言模型

    借助 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 仿真 相關的更多信息。

    如需了解詳情:

    ?

    0

    標簽

    人人超碰97caoporen国产