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