NVIDIA安培架構(gòu)深入分析:顯著增加云端AI芯片門檻
在近日的GTC上,NVIDIA發(fā)布了最新的安培架構(gòu),以及基于安培架構(gòu)的A100 GPU。A100 GPU使用臺積電7nm工藝實現(xiàn),包含了542億個晶體管,據(jù)官方消息可以實現(xiàn)比起上一代V100高7倍的性能。除了算力提升之外,NVIDIA還加入了GPU虛擬多實例(multi-Instance GPU,MIG)特性,可以讓一塊GPU虛擬化稱為7個獨立的GPU。
與安培架構(gòu)同時公布的還有NVIDIA DGX A100超級計算機,該超算平臺包含了8塊A100 GPU,峰值算力可達10 PetaOPS。
在發(fā)布會上,NVIDIA對于算力做了非常多的渲染。然而,在我們看來,NVIDIA在算力之外的特性擴展將成為更重要的門檻,中國半導(dǎo)體業(yè)界想要研發(fā)自主的GPU也需要考慮這些算力之外的重要特性。
計算架構(gòu):改良式更新,前進步伐與預(yù)期相符
NVIDIA A100 GPU相比于前一代V100 GPU,其算力提升主要來源于以下幾方面:
加入稀疏運算支持。這可能是A100 GPU運算架構(gòu)上最大的革新了。具體來說,A100支持2:4的結(jié)構(gòu)化稀疏,即在使用稀疏計算時,在矩陣中每四個元素就必須有兩個或以上是0。通過稀疏運算,可以把性能提升兩倍。
事實上,深度學(xué)習(xí)中使用稀疏運算的概念從提出至今已經(jīng)有差不多5年了,到了今天NVIDIA終于把這個概念落地到了產(chǎn)品中,而且使用的是的2:4結(jié)構(gòu)化稀疏,其兩倍的加速可以說是比較保守的(與此相對,2018年寒武紀(jì)的AI加速器IP中就支持四倍稀疏加速)。
引入TF32數(shù)制。這主要針對訓(xùn)練計算。回顧人工智能訓(xùn)練計算的歷程,最早普遍使用的是32位浮點數(shù)數(shù)制(FP32)。為了加速訓(xùn)練計算,從幾年前開始NVIDIA開始支持16位的FP16數(shù)制,該數(shù)制的優(yōu)點是速度較快,但是動態(tài)范圍方面在一些應(yīng)用中存在一些問題。
在A100中,NVIDIA為了解決FP16的問題,引入了TF32數(shù)制。TF32事實上不是32位數(shù)制,而是19位數(shù)制,其動態(tài)范圍(exponent)與FP32相同都是8位,但其精度(mantissa)與FP16相同都是10位,相當(dāng)于是FP32和FP16的融合。相比FP32,TF32可以實現(xiàn)8倍的吞吐量提升。
更強更多的流處理器(SM)。在A100中,每個流處理器的張量矩陣計算能力是V100的2倍,而在GPU中流處理器的數(shù)量相比V100則增加了30%。
更大的片上存儲和更快的內(nèi)存接口。A100的設(shè)計中,每個流處理器的L1緩存容量從V100的128KB增加到了192KB,L2 緩存則增加到了40MB,相比前一代增加了6.7倍。內(nèi)存接口方面,A100的HBM2就惡口總貸款高達1555GB/s,相比前一代增加了1.7X。
總體來說,在計算架構(gòu)方面,除了支持稀疏計算和引入TF32之外,其他的提升都屬于可預(yù)計的常規(guī)提升,而稀疏計算和TF32在人工智能計算中也并非新概念。我們認(rèn)為,這一代NVIDIA A100的算力性能提升屬于漸進式改良,而非革命式提升。
GPU虛擬實例和互聯(lián):進一步加高競爭壁壘
我們認(rèn)為,A100除了算力之外,其更重要的競爭壁壘提升來源于針對數(shù)據(jù)中心的GPU虛擬實例支持和互聯(lián)方案。
在安培架構(gòu)中,一個重要的新特性就是GPU虛擬實例MIG。隨著云端數(shù)據(jù)中心GPU部署比例的提升,如何實現(xiàn)GPU虛擬化是一個重要任務(wù),而這一點如果解決不好將會降低總體GPU利用率。
目前,在云服務(wù)中,用戶申請的CPU和內(nèi)存實例大多數(shù)情況下都是虛擬化的,當(dāng)你申請到n個CPU核的時候,并不是說你包下了這塊CPU芯片,而是很有可能在同一塊CPU芯片上不同的核會分配給不同用戶,而用戶并不用去擔(dān)心說他的CPU核都位于哪一塊芯片上,主要用就行了。
粗略地說,這就是CPU虛擬化。GPU之前也有虛擬化,即同一個GPU可以給不同的程序同時使用,但是其內(nèi)存訪問模型并不如CPU虛擬化那么完善,因此在多用戶的情況下,通常不會采用多個用戶同時共享一塊GPU的方法,而是把一塊GPU分配給一個用戶。
這樣就帶來了效率問題,例如用戶A只需要用到一塊GPU中一半的計算資源,而用戶B的計算需要用到1.5塊GPU,那么使用傳統(tǒng)粗顆粒度解決方案就會造成用戶A和B都占用了一塊GPU,那么用戶A事實上是浪費了GPU資源,而用戶B的計算資源需求則沒有很好地得到滿足。
隨著GPU應(yīng)用到越來越多的場景中,不同場景算法對于GPU的利用率和需求都有不同,這樣的話沿用之前的粗顆粒度方案一定會造成總體數(shù)據(jù)中心GPU利用率的問題。
為了解決這個問題,MIG應(yīng)運而生。A100中的MIG支持把同一塊GPU劃分成7個獨立實例,每個實例之間的內(nèi)存空間訪問互不干擾,這樣就可以實現(xiàn)細(xì)顆粒度的GPU計算資源分配,從而在計算需求非常異質(zhì)化的云計算場景增加資源利用效率。
誠然,目前MIG中支持的7個GPU虛擬實例劃分或許還不算特別細(xì)顆粒度,但是卻可以看作是走向虛擬化的重要里程碑。除了MIG之外,A100還在多芯片互聯(lián)上做了改善。
首先,A100上包含了第三代NVLINK,主要用于同主機上GPU之間的互相通信,通信帶寬相比V100增加了一倍到600GB/s。在GPU和CPU通信上,A100支持PCIe Gen4,相比上一代PCIe Gen3帶寬也增加了一倍。此外,A100的互聯(lián)還與Mellanox的解決方案做了深度集成,可以很好地支持基于以太網(wǎng)和InfiniBand的RDMA。
云端AI芯片進入門檻大大提升
我們認(rèn)為,NVIDIA A100的發(fā)布再次拉開了與其他在人工智能云端領(lǐng)域芯片競爭對手的差距。從算力上來看,NVIDIA A100在BERT benchmark上的性能是T4的11倍,而初創(chuàng)公司中最成功的Habana(現(xiàn)已被Intel高價收購)在去年推出的新款Goya芯片在同一benchmark上的性能僅僅是T4的兩倍左右,因此A100一舉又占據(jù)了算力的高地。我們認(rèn)為,NVIDIA在算力提升上面的主要優(yōu)勢在于其系統(tǒng)工程能力較強。
我們之前分析過,NVIDIA在A100中使用的計算單元架構(gòu)創(chuàng)新實際上并不新鮮,在人工智能硬件領(lǐng)域已經(jīng)存在了多年,而且之前也有不少初創(chuàng)公司嘗試過類似的實現(xiàn)。然而,當(dāng)芯片的規(guī)模上升了之后,其設(shè)計流程就不僅僅是邏輯設(shè)計問題,還需要考慮良率、散熱等多方面因素,而這些看似底層的因素其實在最頂層的架構(gòu)設(shè)計過程中就要考慮到—;—;換句話說,雖然其他人也能想到要用這些架構(gòu)創(chuàng)新,但是因為各種問題就是沒有辦法實現(xiàn)A100這樣能量產(chǎn)的巨型芯片,這其實也是NVIDIA多年積累的一個壁壘。
事實上,我們認(rèn)為算力只是NVIDIA A100硬件競爭壁壘的一小部分,其更重要的壁壘還來自于互聯(lián)、虛擬化等特性?;ヂ?lián)和虛擬化特性都是云端數(shù)據(jù)中心場景中需要的重要需求,而這些需求的實現(xiàn)需要扎扎實實,一步一步的設(shè)計和積累。
如果說之前NVIDIA還沒有引入虛擬化特性,云端AI加速芯片還是算力的比拼因此初創(chuàng)企業(yè)還有彎道超車機會的話,那么在A100之后我們認(rèn)為其他和NVIDIA針對相同市場的云端AI加速芯片初創(chuàng)公司已經(jīng)失去了這個機會,而必須要一步一步把虛擬化、RDMA等分布式計算必須的特性老老實實地實現(xiàn)在自己的芯片上,才有資格去和NVIDIA去正面交鋒。
對于云端計算市場,其他芯片廠商另外一種可能的策略就是針對NVIDIA還無法顧及且GPU的SIMT架構(gòu)無法很好覆蓋的領(lǐng)域,例如FinTech的一些計算等等。我們預(yù)計在未來的幾年內(nèi)或許會出現(xiàn)更多這樣的初創(chuàng)公司。
對于GPU國產(chǎn)化的啟示:算力并非一切,對于分布式計算和虛擬化的支持也很重要
這次NVIDIA發(fā)布的A100 GPU對于用于云端數(shù)據(jù)中心的GPU國產(chǎn)化也有重要啟示,即算力并非一切,對于分布式計算的支持和多用戶虛擬化的支持可能更加重要。
在目前的云端高性能計算中,一大部分的任務(wù)會使用分布式計算。在分布式計算中,單卡GPU的算力只是基礎(chǔ),除了算力之外的IO也會成為決定性能的重要因素。這里的IO包括單機多卡之間的通信,GPU和CPU之間的通信,以及多臺主機之間的通信等。
在NVIDIA的技術(shù)棧中,單機多卡通信有NvLink,多機通信有來自于新近收購的Mellanox的RDMA和Smart NIC技術(shù),可以說在IO領(lǐng)域NVIDIA也是做到了全球最領(lǐng)先,這樣才保證了云端GPU方案獨步天下。與分布式計算息息相關(guān)的則是虛擬化支持。如前所述,GPU虛擬化將能帶來云計算領(lǐng)域的GPU資源利用率大幅提升。
然而,除了利用率提升之外,虛擬化的訪問模型還為分布式計算的軟件棧提供了一個干凈的接口,這樣分布式系統(tǒng)的工程師可以不用關(guān)心GPU底層的實現(xiàn)細(xì)節(jié),憑借虛擬化的概念就可以構(gòu)建靈活的多用戶使用模型和界面,從而在系統(tǒng)層面上為高效分布式系統(tǒng)提供了有力的支持和賦能。
我們認(rèn)為,目前GPU虛擬化還處于早期階段,未來我們將會看到NVIDIA以及其他的歐美廠商在這個方向的投入。對于國產(chǎn)GPU來說,我們一直在強調(diào)要構(gòu)建一個好的生態(tài),才能讓國產(chǎn)GPU真正具有競爭力。這樣的生態(tài)首先包括一個可擴展性良好的架構(gòu)—;—;這就指向了IO這樣的數(shù)據(jù)通信互聯(lián)的支持;此外還需要有一個較友好容易上手的開發(fā)環(huán)境,能允許開發(fā)者在硬件基礎(chǔ)上開發(fā)各種支持多用戶的云端應(yīng)用,虛擬化就是對多用戶支持的核心組件。
我們認(rèn)為,一個算力強大,但是對于分布式計算和虛擬化支持有限的GPU,對于國產(chǎn)生態(tài)而言還不如一個雖然算力較弱(例如只有NVIDIA一半甚至三分之一),但是在分布式和多用戶場景有合理完整支持的GPU。而這兩者恰恰需要一步一步扎實的積累,不能指望彎道超車。