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