
本文來自“算力大時代,AI算力產業鏈全景梳理(2023)”,從廣義上講,能運行AI算法的芯片都叫AI芯片。CPU、GPU、FPGA、NPU、ASIC都能執行AI算法,但在執行效率層面上有巨大的差異。CPU可以快速執行復雜的數學計算,但同時執行多項任務時,CPU性能開始下降,目前行業內基本確認CPU不適用于AI計算。
CPU+xPU的異構方案成為大算力場景標配,GPU為應用最廣泛的AI芯片。目前業內廣泛認同的AI芯片類型包括GPU、FPGA、NPU等。由于CPU負責對計算機的硬件資源進行控制調配,也要負責操作系統的運行,在現代計算系統中仍是不可或缺的。GPU、FPGA等芯片都是作為CPU的加速器而存在,因此目前主流的AI計算系統均為CPU+xPU的異構并行。CPU+GPU是目前最流行的異構計算系統,在HPC、圖形圖像處理以及AI訓練/推理等場景為主流選擇。IDC數據顯示,2021年中國AI芯片市場中,GPU市占率為89%。
(相關資料圖)
在GPU問世以后,NVIDIA及其競爭對手ATI(被AMD收購)一直在為他們的顯卡包裝更多的功能。2006年NVIDIA發布了CUDA開發環境,這是最早被廣泛應用的GPU計算編程模型。CUDA將GPU的能力向科學計算等領域開放,標志著GPU成為一種更通用的計算設備GPGPU(General Purpose GPU)。NVIDIA也在之后推出了面向數據中心的GPU產品線。
GPU性能提升與功能豐富逐步滿足AI運算需要。2010年NVIDIA提出的Fermi架構是首個完整的GPU計算架構,其中提出的許多新概念沿用至今。Kepler架構在硬件上擁有了雙精度計算單元(FP64),并提出GPUDirect技術,繞過CPU/System Memory,與其他GPU直接進行數據交互。Pascal架構應用了第一代NVLink。
Volta架構開始應用Tensor Core,對AI計算加速具有重要意義。簡要回顧NVIDIA GPU硬件變革歷程,工藝、計算核心數增加等基礎特性的升級持續推動性能提升,同時每一代架構所包含的功能特性也在不斷豐富,逐漸更好地適配AI運算的需要。
AI的數據來源廣泛,GPU逐漸實現對各類數據類型的支持。依照精度差異,算力可從INT8(整數類型)、FP16(半精度)、FP32(單精度)、FP64(雙精度)等不同維度對比。AI應用處理的數據包括文字、圖片或視頻,數據精度類型差異大。對于數據表征來講,精度越高,準確性越高;但降低精度可以節省運算時間,減少成本。
總體來看,精度的選擇需要在準確度、成本、時間之間取得平衡。目前許多AI模型中運行半精度甚至整形計算即可完成符合準確度的推理和訓練。隨著架構的迭代,NVIDIA GPU能支持的數據類型持續豐富,例如Turing架構T4開始支持INT8,Ampere架構A100的Tensor Core開始支持TF32。
均衡分配資源的前提下,處理低精度的硬件單元數量更多,表現更高的算力性能。GPU作為加速器得到廣泛應用一定程度上得益于它的通用性,為了在不同精度的數據類型上具有良好的性能,以兼顧AI、科學計算等不同場景的需要,英偉達在分配處理不同數據類型的硬件單元時大體上保持均衡。因為低精度數據類型的計算占用更少的硬件資源,同一款GPU中的處理低精度數據類型的硬件單元的數量較多,對應計算能力也較強。以V100為例,每個SM中FP32單元的數量都為FP64單元的兩倍,最終V100的FP32算力(15.7 TFLOPS)也近似為FP64(7.8 TFLOPS)的兩倍,類似的規律也可以在各代架構旗艦P100、A100和H100中看到。
GPU引入特殊硬件單元加速AI的核心運算環節。矩陣-矩陣乘法(GEMM)運算是神經網絡訓練和推理的核心,本質是在網絡互連層中將大矩陣輸入數據和權重相乘。矩陣乘積的求解過程需要大量的乘積累加操作,而FMA(Fused Multiply–accumulate operation,融合乘加)可以消耗更少的時鐘周期來完成這一過程。傳統CUDACore執行FMA指令,硬件層面需要將數據按寄存器->ALU->寄存器->ALU->寄存器的方式來回搬運。2017年發布的Volta架構首度引入了Tensor Core(張量核心),是由NVIDIA研發的新型處理核心。根據NVIDIA數據,Volta Tensor Core可以在一個GPU時鐘周期內執行4×4×4=64次FMA操作,吞吐量是Pascal架構下CUDA Core的12倍。
Tensor Core持續迭代提升其加速能力。Volta架構引入Tensor Core的改動使GPU的AI算力有了明顯提升,后續在每一代的架構升級中,Tensor Core都有比較大的改進,支持的數據類型也逐漸增多。以A100到H100為例,Tensor Core由3.0迭代至4.0,H100在FP16 Tensor Core的峰值吞吐量提升至A100的3倍。同時,H100Tensor Core支持新的數據類型FP8,H100 FP8 Tensor Core的吞吐量是A100 FP16 Tensor Core的6倍。
Tensor Core加速下,低精度比特位寬的算力爆發式增長,契合AI計算需要。Tensor Core的應用使算力快速、高效增長,選取Pascal至Hopper架構時期每一代的旗艦數據中心顯卡,對比經Tensor Core加速前后的FP16算力指標可以得到:(1)經Tensor Core加速的FP16算力明顯高于加速之前。(2)每單位Tensor core支持的算力明顯高于每單位Cuda Core支持的算力。同時,Tensor Core從2017年推出以來首先完善了對低精度數據類型的支持,順應了AI發展的需要。
數據訪問支配著計算能力利用率。AI運算涉及到大量數據的存儲與處理,根據Cadence數據,與一般工作負載相比,每臺AI訓練服務器需要6倍的內存容量。而在過去幾十年中,處理器的運行速度隨著摩爾定律高速提升,而DRAM的性能提升速度遠遠慢于處理器速度。目前DRAM的性能已經成為了整體計算機性能的一個重要瓶頸,即所謂阻礙性能提升的“內存墻”。除了性能之外,內存對于能效比的限制也成為一個瓶頸,Cadence數據顯示,在自然語言類AI負載中,存儲消耗的能量占比達到82%。
GPU采用高帶寬HBM降低“內存墻”影響。為防止占用系統內存并提供較高的帶寬和較低的延時,GPU均配備有獨立的的內存。常規的GDDR焊接在GPU芯片周邊的PCB板上,與處理器之間的數據傳輸速率慢,并且存儲容量小,成為運算速度提升的瓶頸。HBM裸片通過TSV進行堆疊,然后HBM整體與GPU核心通過中介層互連,因此HBM獲得了極高的帶寬,并節省了PCB面積。目前,GDDR顯存仍是消費級GPU的行業標準,HBM則成為數據中心GPU的主流選擇。
硬件單元的改進與顯存升級增強了單張GPU算力的釋放,然而,隨著Transformer模型的大規模發展和應
用,模型參數量呈爆炸式增長,GPT-3參數量達到了1750億,相比GPT增長了近1500倍,預訓練數據量更是
從5GB提升到了45TB。大模型參數量的指數級增長帶來的諸多問題使GPU集群化運算成為必須:
(1)即使最先進的GPU,也不再可能將模型參數擬合到主內存中。
(2)即使模型可以安裝在單個GPU中(例如,通過在主機和設備內存之間交換參數),所需的大量計算操作也可能導致在沒有并行化的情況下不切實際地延長訓練時間。根據NVIDIA數據,在8個V100 GPU上訓練一個具有1750億個參數的GPT-3模型需要36年,而在512個V100 GPU上訓練需要7個月。
NVIDIA開發NVLink技術解決GPU集群通信。在硬件端,GPU之間穩定、高速的通信是實現集群運算所必須的條件。傳統x86服務器的互連通道PCIe的互連帶寬由其代際與結構決定,例如x16 PCIe 4.0雙向帶寬僅為64GB/s。除此之外,GPU之間通過PCIe交互還會與總線上的CPU操作競爭,甚至進一步占用可用帶寬。
NVIDIA為突破PCIe互連的帶寬限制,在P100上搭載了首項高速GPU互連技術NVLink(一種總線及通訊協議),GPU之間無需再通過PCIe進行交互。
NVLink繼續與NVIDIA GPU架構同步發展,每一種新架構都伴隨著新一代NVLink。第四代NVLink為每個GPU提供900 GB/s的雙向帶寬,比上一代高1.5倍,比第一代NVLink高5.6倍。
NVDIA開發基于NVLink的芯片NVSwitch,作為GPU集群數據通信的“樞紐”。NVLink 1.0技術使用時,一臺服務器中的8個GPU無法全部實現直接互連。同時,當GPU數量增加時,僅依靠NVLink技術,需要眾多數量的總線。為解決上述問題,NVIDIA在NVLink 2.0時期發布了NVSwitch,實現了NVLink的全連接。
NVSwitch是一款GPU橋接芯片,可提供所需的NVLink交叉網絡,在GPU之間的通信中發揮“樞紐”作用。借助于NVswitch,每顆GPU都能以相同的延遲和速度訪問其它的GPU。就程序來看,16個GPU都被視為一個GPU,系統效率得到了最大化,大大降低了多GPU系統的優化難度。
通過添加更多NVSwitch來支持更多GPU,集群分布式運算得以實現。當訓練大型語言模型時,NVLink網絡也可以提供顯著的提升。NVSwitch已成為高性能計算(HPC)和AI訓練應用中不可或缺的一部分。
編輯:黃飛
標簽: