編者注:NVIDIA 在 3 月 23 日公布基于全新 Hopper 架構(gòu)的 GPU H100,其多種精度下的 AI 性能達到上一代 A100 的 3~6 倍。NVIDIA 如何做到如此大幅的性能升級?Hopper 架構(gòu)有何玄機?千芯科技董事長陳巍博士對此加以解讀。
在 2022 年 3 月 NVIDIA GTC 大會上,NVIDIA 創(chuàng)始人兼 CEO 黃仁勛介紹了一款基于全新 Hopper 架構(gòu)的 H100 GPU,這是英偉達迄今用于加速人工智能(AI)、高性能計算(HPC)和數(shù)據(jù)分析等任務(wù)的最強 GPU 芯片。
▲ Hopper 架構(gòu) H100 GPU 的主要升級
Hopper 架構(gòu)以計算科學(xué)的先驅(qū) Grace Hopper 的姓氏命名。黃教主稱:“Hopper H100 是有史以來最大的代際飛躍。H100 具有 800 億個晶體管,在性能上堪稱 NVIDIA 的“新核彈”。
那么,“新核彈”的核心是什么樣的?本文將深入解讀和分析 Hopper 架構(gòu)。
▲ Hopper 架構(gòu)的 H100 與前幾代 GPU 性能對比
注:Grace Hopper 博士是哈佛 Mark 1 的首批程序員,被譽為編譯語言之母。據(jù)稱她發(fā)現(xiàn)了計算機程序中的第一個 Bug,同時也創(chuàng)造了計算機世界最大的 Bug—— 千年蟲。
NVIDIA Hopper 架構(gòu) H100 芯片采用臺積電 4nm 工藝(N4 是臺積電 N5 工藝的優(yōu)化版),芯片面積為 814 平方毫米(比 A100 小 14 平方毫米)。
▲ H100 Tensor Core GPU 的性能規(guī)格
Hopper 架構(gòu)可以視為由兩組對稱結(jié)構(gòu)拼接而成。(是不是有點類似我們之前介紹的蘋果 UltraFusion 架構(gòu)的拼接思路?不過這里的 GPU 還是單片的?;仡櫶O果 UltraFusion 架構(gòu)可參見《蘋果芯片“拼裝”的秘方,在專利里找到了》文章。)
在頂層拓撲上,Hopper 似乎與她的前輩 Ampere 架構(gòu)差別不大。圖中的 Hopper 架構(gòu) GPU 由 8 個圖形處理集群(Graphics Processing Cluster,GPC)“拼接”組成。
▲ Hopper 架構(gòu)基本結(jié)構(gòu)
外周與多組 HBM3 封裝在一起(Chiplet 技術(shù)),形成整個芯片模組 —— 從模組上看又是個“拼裝貨”。片上的每個 GPC 又由 9 個紋理處理集群 (Texture Processor Cluster,TPC)“拼接”組成。
由 PCIe5 或 SMX 接口進入的計算任務(wù),通過帶有多實例 GPU(Multi-Instance GPU,MIG)控制的 GigaThread 引擎分配給各個 GPC。GPC 之間通過 L2 緩存共享中間數(shù)據(jù),GPC 計算的中間數(shù)據(jù)通過 NVLink 與其他 GPU 連接 / 交換。每個 TPC 由 2 個流式多處理器(Streaming Multiprocessor,SM)組成。
Hopper 架構(gòu)的性能提升和主要變化體現(xiàn)在新型線程塊集群技術(shù)和新一代的流式多處理器(具有第 4 代張量核心)。
▲ 線程塊集群和帶有集群的網(wǎng)格
Hopper 架構(gòu)中引入了一種新的線程塊集群機制,該機制可以跨 SM 單元進行協(xié)同計算。H100 中的線程塊集群可在同一 GPC 內(nèi)的大量 SM 并發(fā)運行,這樣對較大的模型具有更好的加速能力。
Hopper 架構(gòu)的新一代流式多處理器引入了 FP8 張量核心(Tensor Core)來加速 AI 訓(xùn)練和推理。FP8 張量核心支持 FP32 和 FP16 累加器,以及兩種 FP8 輸入類型(E4M3 和 E5M2)。
▲ 流式多處理器 SM
與 FP16 或 BF16 相比,F(xiàn)P8 將數(shù)據(jù)存儲要求減半,吞吐量翻倍。我們在 Transformer 引擎的分析中還會看到使用 FP8 可自適應(yīng)地提升 Transformer 的計算速度。
每個 SM 包括 128 個 FP32 CUDA 核心、4 個第 4 代張量核心(Tensor Core)。
進入 SM 單元的指令首先存入 L1 指令緩存(L1 Instruction Cache),然后再分發(fā)到 L0 指令緩存(L1 Instruction Cache)。與 L0 緩存配套的線程束排序器(Wrap Scheduler)和調(diào)度單元(Dispatch Unit)來為 CUDA 核心和張量核心分配計算任務(wù)。(注:GPU 中最小的硬件計算執(zhí)行單位是線程束,簡稱 Warp。)
▲ FP8 具有 FP16 或 BF162 2 倍吞吐量
每個 SM 通過使用 4 個特殊函數(shù)單元(Special Function Unit,SFU)單元進行超越函數(shù)和插值函數(shù)計算。
在 GPU 中,張量核心是用于矩陣乘法和矩陣累加 (Matrix Multiply-Accumulate,MMA) 數(shù)學(xué)運算的專用高性能計算核心,可為 AI 和 HPC 應(yīng)用程序提供突破性的性能加速。
張量核心是 GPU 中做 AI 加速的關(guān)鍵模塊,也是 Ampere 及之后 GPU 架構(gòu)與早期 GPU 的顯著區(qū)別所在。
Hopper 的張量核心支持 FP8、FP16、BF16、TF32、FP64 和 INT8 MMA 數(shù)據(jù)類型。這一代張量核心的關(guān)鍵點是引入了 Transformer 引擎。
▲ H100 FP16 Tensor Core 的吞吐量是 A100 FP16 Tensor Core 的 3 倍
Transformer 算子是主流的 BERT 到 GPT-3 等 NLP 模型的基礎(chǔ),且越來越多地應(yīng)用于計算機視覺、蛋白質(zhì)結(jié)構(gòu)預(yù)測等不同領(lǐng)域。
與上一代 A100 相比,新的 Transformer 引擎與 Hopper FP8 張量核心相結(jié)合,在大型 NLP 模型上提供高達 9 倍的 AI 訓(xùn)練速度和 30 倍的 AI 推理速度。
▲ 新的 Transformer 引擎動態(tài)調(diào)整數(shù)據(jù)格式以充分運用算力
為了提升 Transformer 的計算效率,在這一新的 Transformer 引擎中使用了混合精度,在計算過程中智能地管理計算精度,在 Transformer 計算的每一層,根據(jù)下一層神經(jīng)網(wǎng)絡(luò)層及所需的精度,在 FP8 和其他浮點格式中進行動態(tài)格式轉(zhuǎn)換,充分運用張量核心的算力。
Hopper 架構(gòu)中新增加了張量存儲加速器 (Tensor Memory Accelerator,TMA) ,以提高張量核心與全局存儲和共享存儲的數(shù)據(jù)交換效率。
在這一新的 TMA 操作中,使用張量維度和塊坐標指定數(shù)據(jù)傳輸,而不是簡單的按數(shù)據(jù)地址直接尋址。TMA 通過支持不同的張量布局(1D-5D 張量)、不同的存儲訪問模式、顯著降低了尋址開銷并提高了效率。
也就是說,原來是一個一個的撿豆子(數(shù)據(jù)),現(xiàn)在的方法就是一碗一碗的舀豆子。這樣的設(shè)計,是不是越來越接近 DSA 的尋址方式?
▲ TMA 的塊坐標尋址方式
當然,TMA 操作是異步的,多個線程可以共享數(shù)據(jù)通道,排序完成數(shù)據(jù)傳輸。
TMA 的一個關(guān)鍵優(yōu)勢是它可以在進行數(shù)據(jù)復(fù)制的時候,釋放線程的算力來執(zhí)行其他工作。
例如,在 A100 上,由線程本身負責(zé)生成所有地址執(zhí)行所有數(shù)據(jù)復(fù)制操作。但在 Hopper 中,TMA 來負責(zé)生成地址序列(這個思路類似 DMA 控制器),接管數(shù)據(jù)復(fù)制任務(wù),讓線程去做其他事。
▲ Hopper 架構(gòu)的 H100 的基于 TMA 的存儲復(fù)制效率更高
總體而言,基于 Hopper 架構(gòu)的 H100 計算性能比 Ampere 架構(gòu)的 A100 提高了大約 6 倍。
性能大幅提升的核心原因在于引入 FP8 后的張量核心和針對 NLP 任務(wù)的 Transformer 引擎,特別是 TMA 技術(shù)減少了 SM 單元在數(shù)據(jù)復(fù)制時的無用功。
從設(shè)計哲學(xué)上看,針對數(shù)據(jù)中心的 Hopper 架構(gòu)中 DSA(Domain Specific Architecture,特定領(lǐng)域架構(gòu))的想法越來越多,且流多處理器間的協(xié)作變多。大概老黃也覺得,GPU 應(yīng)朝著領(lǐng)域?qū)S没姆较蛉グl(fā)展。
今年發(fā)布 Hopper 架構(gòu)相對 Ampere 架構(gòu)有較多的微觀進步,希望老黃下次能給我們帶來更多的技術(shù)驚喜。
參考文獻:《NVIDIA H100 Tensor Core GPU Architecture》白皮書,英偉達;《GPGPU 芯片設(shè)計:原理與實踐》,陳巍、耿云川
還沒有評論,來說兩句吧...