本文來自“算力大時(shí)代,AI算力產(chǎn)業(yè)鏈全景梳理(2023)”,從廣義上講,能運(yùn)行AI?算法的芯片都叫AI?芯片。CPU、GPU、FPGA、NPU、ASIC?都能執(zhí)行AI?算法,但在執(zhí)行效率層面上有巨大的差異。CPU?可以快速執(zhí)行復(fù)雜的數(shù)學(xué)計(jì)算,但同時(shí)執(zhí)行多項(xiàng)任務(wù)時(shí),CPU?性能開始下降,目前行業(yè)內(nèi)基本確認(rèn)CPU?不適用于AI?計(jì)算。
CPU+xPU?的異構(gòu)方案成為大算力場景標(biāo)配,GPU為應(yīng)用最廣泛的?AI?芯片。目前業(yè)內(nèi)廣泛認(rèn)同的AI?芯片類型包括GPU、FPGA、NPU?等。由于?CPU?負(fù)責(zé)對計(jì)算機(jī)的硬件資源進(jìn)行控制調(diào)配,也要負(fù)責(zé)操作系統(tǒng)的運(yùn)行,在現(xiàn)代計(jì)算系統(tǒng)中仍是不可或缺的。GPU、FPGA?等芯片都是作為?CPU?的加速器而存在,因此目前主流的?AI計(jì)算系統(tǒng)均為?CPU+xPU?的異構(gòu)并行。CPU+GPU?是目前最流行的異構(gòu)計(jì)算系統(tǒng),在?HPC、圖形圖像處理以及AI?訓(xùn)練/推理等場景為主流選擇。IDC?數(shù)據(jù)顯示,2021?年中國?AI?芯片市場中,GPU?市占率為?89%。

在GPU?問世以后,NVIDIA?及其競爭對手?ATI(被?AMD?收購)一直在為他們的顯卡包裝更多的功能。2006?年?NVIDIA?發(fā)布了?CUDA?開發(fā)環(huán)境,這是最早被廣泛應(yīng)用的?GPU?計(jì)算編程模型。CUDA?將?GPU?的能力向科學(xué)計(jì)算等領(lǐng)域開放,標(biāo)志著?GPU?成為一種更通用的計(jì)算設(shè)備?GPGPU(General Purpose GPU)。NVIDIA?也在之后推出了面向數(shù)據(jù)中心的?GPU?產(chǎn)品線。

GPU?性能提升與功能豐富逐步滿足?AI?運(yùn)算需要。2010?年?NVIDIA?提出的?Fermi?架構(gòu)是首個(gè)完整的?GPU計(jì)算架構(gòu),其中提出的許多新概念沿用至今。Kepler?架構(gòu)在硬件上擁有了雙精度計(jì)算單元(FP64),并提出?GPUDirect?技術(shù),繞過?CPU/System Memory,與其他?GPU?直接進(jìn)行數(shù)據(jù)交互。Pascal?架構(gòu)應(yīng)用了第一代?NVLink。
Volta?架構(gòu)開始應(yīng)用?Tensor Core,對?AI?計(jì)算加速具有重要意義。簡要回顧?NVIDIA GPU?硬件變革歷程,工藝、計(jì)算核心數(shù)增加等基礎(chǔ)特性的升級持續(xù)推動(dòng)性能提升,同時(shí)每一代架構(gòu)所包含的功能特性也在不斷豐富,逐漸更好地適配?AI?運(yùn)算的需要。

AI?的數(shù)據(jù)來源廣泛,GPU?逐漸實(shí)現(xiàn)對各類數(shù)據(jù)類型的支持。依照精度差異,算力可從?INT8(整數(shù)類型)、FP16(半精度)、FP32(單精度)、FP64(雙精度)等不同維度對比。AI?應(yīng)用處理的數(shù)據(jù)包括文字、圖片或視頻,數(shù)據(jù)精度類型差異大。對于數(shù)據(jù)表征來講,精度越高,準(zhǔn)確性越高;但降低精度可以節(jié)省運(yùn)算時(shí)間,減少成本。
總體來看,精度的選擇需要在準(zhǔn)確度、成本、時(shí)間之間取得平衡。目前許多?AI?模型中運(yùn)行半精度甚至整形計(jì)算即可完成符合準(zhǔn)確度的推理和訓(xùn)練。隨著架構(gòu)的迭代,NVIDIA GPU?能支持的數(shù)據(jù)類型持續(xù)豐富,例如?Turing架構(gòu)?T4?開始支持?INT8,Ampere?架構(gòu)?A100?的?Tensor Core?開始支持TF32。

均衡分配資源的前提下,處理低精度的硬件單元數(shù)量更多,表現(xiàn)更高的算力性能。GPU?作為加速器得到廣泛應(yīng)用一定程度上得益于它的通用性,為了在不同精度的數(shù)據(jù)類型上具有良好的性能,以兼顧?AI、科學(xué)計(jì)算等不同場景的需要,英偉達(dá)在分配處理不同數(shù)據(jù)類型的硬件單元時(shí)大體上保持均衡。因?yàn)榈途葦?shù)據(jù)類型的計(jì)算占用更少的硬件資源,同一款?GPU?中的處理低精度數(shù)據(jù)類型的硬件單元的數(shù)量較多,對應(yīng)計(jì)算能力也較強(qiáng)。以V100?為例,每個(gè)?SM?中?FP32?單元的數(shù)量都為?FP64?單元的兩倍,最終?V100?的?FP32?算力(15.7 TFLOPS)也近似為?FP64(7.8 TFLOPS)的兩倍,類似的規(guī)律也可以在各代架構(gòu)旗艦?P100、A100?和?H100?中看到。

GPU?引入特殊硬件單元加速?AI?的核心運(yùn)算環(huán)節(jié)。矩陣-矩陣乘法(GEMM)運(yùn)算是神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理的核心,本質(zhì)是在網(wǎng)絡(luò)互連層中將大矩陣輸入數(shù)據(jù)和權(quán)重相乘。矩陣乘積的求解過程需要大量的乘積累加操作,而?FMA(Fused Multiply–accumulate operation,融合乘加)可以消耗更少的時(shí)鐘周期來完成這一過程。傳統(tǒng)?CUDACore?執(zhí)行?FMA?指令,硬件層面需要將數(shù)據(jù)按寄存器->ALU->寄存器->ALU->寄存器的方式來回搬運(yùn)。2017?年發(fā)布的?Volta?架構(gòu)首度引入了?Tensor Core(張量核心),是由?NVIDIA?研發(fā)的新型處理核心。根據(jù)?NVIDIA?數(shù)據(jù),Volta Tensor Core?可以在一個(gè)?GPU?時(shí)鐘周期內(nèi)執(zhí)行?4×4×4=64?次?FMA操作,吞吐量是?Pascal?架構(gòu)下?CUDA Core的12?倍。

Tensor Core?持續(xù)迭代提升其加速能力。Volta?架構(gòu)引入?Tensor Core?的改動(dòng)使?GPU?的?AI?算力有了明顯提升,后續(xù)在每一代的架構(gòu)升級中,Tensor Core?都有比較大的改進(jìn),支持的數(shù)據(jù)類型也逐漸增多。以?A100?到?H100為例,Tensor Core?由?3.0?迭代至?4.0,H100?在?FP16 Tensor Core?的峰值吞吐量提升至?A100?的?3?倍。同時(shí),H100Tensor Core?支持新的數(shù)據(jù)類型?FP8,H100 FP8 Tensor Core?的吞吐量是?A100 FP16 Tensor Core?的?6?倍。

Tensor Core?加速下,低精度比特位寬的算力爆發(fā)式增長,契合?AI?計(jì)算需要。Tensor Core?的應(yīng)用使算力快速、高效增長,選取?Pascal?至?Hopper?架構(gòu)時(shí)期每一代的旗艦數(shù)據(jù)中心顯卡,對比經(jīng)?Tensor Core?加速前后的?FP16算力指標(biāo)可以得到:(1)經(jīng)?Tensor Core?加速的?FP16?算力明顯高于加速之前。(2)每單位?Tensor core?支持的算力明顯高于每單位?Cuda Core?支持的算力。同時(shí),Tensor Core?從?2017?年推出以來首先完善了對低精度數(shù)據(jù)類型的支持,順應(yīng)了?AI?發(fā)展的需要。

數(shù)據(jù)訪問支配著計(jì)算能力利用率。AI?運(yùn)算涉及到大量數(shù)據(jù)的存儲(chǔ)與處理,根據(jù)?Cadence?數(shù)據(jù),與一般工作負(fù)載相比,每臺(tái)?AI?訓(xùn)練服務(wù)器需要?6?倍的內(nèi)存容量。而在過去幾十年中,處理器的運(yùn)行速度隨著摩爾定律高速提升,而?DRAM?的性能提升速度遠(yuǎn)遠(yuǎn)慢于處理器速度。目前?DRAM?的性能已經(jīng)成為了整體計(jì)算機(jī)性能的一個(gè)重要瓶頸,即所謂阻礙性能提升的“內(nèi)存墻”。除了性能之外,內(nèi)存對于能效比的限制也成為一個(gè)瓶頸,Cadence數(shù)據(jù)顯示,在自然語言類?AI?負(fù)載中,存儲(chǔ)消耗的能量占比達(dá)到?82%。

GPU?采用高帶寬?HBM?降低“內(nèi)存墻”影響。為防止占用系統(tǒng)內(nèi)存并提供較高的帶寬和較低的延時(shí),GPU均配備有獨(dú)立的的內(nèi)存。常規(guī)的?GDDR?焊接在?GPU?芯片周邊的?PCB?板上,與處理器之間的數(shù)據(jù)傳輸速率慢,并且存儲(chǔ)容量小,成為運(yùn)算速度提升的瓶頸。HBM?裸片通過?TSV?進(jìn)行堆疊,然后?HBM?整體與?GPU?核心通過中介層互連,因此?HBM?獲得了極高的帶寬,并節(jié)省了?PCB?面積。目前,GDDR?顯存仍是消費(fèi)級?GPU?的行業(yè)標(biāo)準(zhǔn),HBM?則成為數(shù)據(jù)中心?GPU?的主流選擇。

硬件單元的改進(jìn)與顯存升級增強(qiáng)了單張?GPU?算力的釋放,然而,隨著?Transformer?模型的大規(guī)模發(fā)展和應(yīng)
用,模型參數(shù)量呈爆炸式增長,GPT-3?參數(shù)量達(dá)到了?1750?億,相比?GPT?增長了近?1500?倍,預(yù)訓(xùn)練數(shù)據(jù)量更是
從?5GB?提升到了?45TB。大模型參數(shù)量的指數(shù)級增長帶來的諸多問題使?GPU?集群化運(yùn)算成為必須:
(1)即使最先進(jìn)的?GPU,也不再可能將模型參數(shù)擬合到主內(nèi)存中。
(2)即使模型可以安裝在單個(gè)?GPU?中(例如,通過在主機(jī)和設(shè)備內(nèi)存之間交換參數(shù)),所需的大量計(jì)算操作也可能導(dǎo)致在沒有并行化的情況下不切實(shí)際地延長訓(xùn)練時(shí)間。根據(jù)?NVIDIA?數(shù)據(jù),在?8?個(gè)?V100 GPU?上訓(xùn)練一個(gè)具有?1750?億個(gè)參數(shù)的?GPT-3?模型需要?36?年,而在?512?個(gè)?V100 GPU?上訓(xùn)練需要?7?個(gè)月。

NVIDIA?開發(fā)?NVLink?技術(shù)解決?GPU?集群通信。在硬件端,GPU?之間穩(wěn)定、高速的通信是實(shí)現(xiàn)集群運(yùn)算所必須的條件。傳統(tǒng)?x86?服務(wù)器的互連通道?PCIe?的互連帶寬由其代際與結(jié)構(gòu)決定,例如?x16 PCIe 4.0?雙向帶寬僅為?64GB/s。除此之外,GPU?之間通過?PCIe?交互還會(huì)與總線上的?CPU?操作競爭,甚至進(jìn)一步占用可用帶寬。
NVIDIA?為突破?PCIe?互連的帶寬限制,在?P100?上搭載了首項(xiàng)高速?GPU?互連技術(shù)?NVLink(一種總線及通訊協(xié)議),GPU?之間無需再通過?PCIe?進(jìn)行交互。

NVLink?繼續(xù)與?NVIDIA GPU?架構(gòu)同步發(fā)展,每一種新架構(gòu)都伴隨著新一代?NVLink。第四代?NVLink?為每個(gè)?GPU?提供?900 GB/s?的雙向帶寬,比上一代高?1.5?倍,比第一代?NVLink?高?5.6?倍。

NVDIA?開發(fā)基于?NVLink?的芯片?NVSwitch,作為?GPU?集群數(shù)據(jù)通信的“樞紐”。NVLink 1.0?技術(shù)使用時(shí),一臺(tái)服務(wù)器中的?8?個(gè)?GPU?無法全部實(shí)現(xiàn)直接互連。同時(shí),當(dāng)?GPU?數(shù)量增加時(shí),僅依靠?NVLink?技術(shù),需要眾多數(shù)量的總線。為解決上述問題,NVIDIA?在?NVLink 2.0?時(shí)期發(fā)布了?NVSwitch,實(shí)現(xiàn)了?NVLink?的全連接。
NVSwitch?是一款?GPU?橋接芯片,可提供所需的?NVLink?交叉網(wǎng)絡(luò),在?GPU?之間的通信中發(fā)揮“樞紐”作用。借助于?NVswitch,每顆?GPU?都能以相同的延遲和速度訪問其它的?GPU。就程序來看,16?個(gè)?GPU?都被視為一個(gè)?GPU,系統(tǒng)效率得到了最大化,大大降低了多?GPU?系統(tǒng)的優(yōu)化難度。


通過添加更多?NVSwitch?來支持更多?GPU,集群分布式運(yùn)算得以實(shí)現(xiàn)。當(dāng)訓(xùn)練大型語言模型時(shí),NVLink網(wǎng)絡(luò)也可以提供顯著的提升。NVSwitch?已成為高性能計(jì)算(HPC)和?AI?訓(xùn)練應(yīng)用中不可或缺的一部分。
編輯:黃飛
?
電子發(fā)燒友App


























評論