NVIDIA安培架構深入分析:顯著增加雲端AI芯片門檻
在近日的GTC上,NVIDIA發布了最新的安培架構,以及基於安培架構的A100 GPU。A100 GPU使用台積電7nm工藝實現,包含了542億個晶體管,據官方消息可以實現比起上一代V100高7倍的性能。除了算力提升之外,NVIDIA還加入了GPU虛擬多實例(multi-Instance GPU,MIG)特性,可以讓一塊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結構化稀疏,其兩倍的加速可以說是比較保守的(與此相對,2018年寒武紀的AI加速器IP中就支持四倍稀疏加速)。
引入TF32數制。這主要針對訓練計算。回顧人工智能訓練計算的歷程,最早普遍使用的是32位浮點數數制(FP32)。為了加速訓練計算,從幾年前開始NVIDIA開始支持16位的FP16數制,該數制的優點是速度較快,但是動態範圍方面在一些應用中存在一些問題。
在A100中,NVIDIA為了解決FP16的問題,引入了TF32數制。TF32事實上不是32位數制,而是19位數制,其動態範圍(exponent)與FP32相同都是8位,但其精度(mantissa)與FP16相同都是10位,相當於是FP32和FP16的融合。相比FP32,TF32可以實現8倍的吞吐量提升。
更強更多的流處理器(SM)。在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(現已被Intel高價收購)在去年推出的新款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,對於國產生態而言還不如一個雖然算力較弱(例如只有NVIDIA一半甚至三分之一),但是在分佈式和多用戶場景有合理完整支持的GPU。而這兩者恰恰需要一步一步紮實的積累,不能指望彎道超車。