search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

【XPU時代】解密哈薩比斯投資的IPU,他們要分英偉達一杯羹

【新智元導讀】DeepMind CEO Demis Hassabis 投資了一家AI晶元公司Graphcore,與英偉達形成直接競爭。這家剛剛完成3千萬美元融資的公司,研發了又一個xPU:IPU(Intelligence Processing Unit)。在最近的RAAIS會議上,Graphcore的CTO,Simon Knowles做了一個介紹,讓我們可以一窺IPU設計背後的一些思考。本文介紹了其幾大特性,包括:同時支持Training和Inference;採用同構多核(many-core)架構,超過1000個獨立的處理器;採用大量片上memory,不直接連接DRAM。

幾個月前注意到Graphcore這個公司,是因為他們的IPU處理器:Intelligence Processing Unit。但除了看到他們一系列非常漂亮的DNN Graph(比如上面這個對於ResNet Conv1的可視化處理)之外,一直沒有更詳細的信息。在最近的RAAIS會議上,Graphcore的CTO,Simon Knowles做了一個介紹,讓我們可以一窺IPU設計背後的一些思考。

「We』ve created a completely new processor that』s the first to be specifically designed for machine intelligence workloads – an Intelligence Processing Unit (IPU) that will set a new pace of innovation. 」 「The IPU has been optimized to work efficiently on the extremely complex high-dimensional models needed for machine intelligence workloads. It emphasizes massively parallel, low-precision floating-point compute and provides much higher compute density than other solutions.」 - Graphcore

從目前看到的信息,可以看到Graphcore IPU的一些關鍵Feature:

1. 同時支持Training和Inference,對於這一點,Graphcore有自己的一些獨特的看法。

2. 採用同構多核(many-core)架構,超過1000個獨立的處理器。每個處理器核的處理能力和具體支持的操作還不清楚。支持all-to-all的核間通信,採用Bulk Synchronous Parallel的同步計算模型(又是上個世紀80年代提出的)。

3. 採用大量片上memory,不直接連接DRAM。這可能是他們的架構中最激進的一個選擇。

其它一些feature,如下

1. Training or Inference

Graphcore』s machine intelligence processors support both training and inference. If you』re thinking about it in terms of training and inference, though, you』re probably thinking about hardware for machine learning in the wrong way.

可以看出,當被問及他們的IPU是用於Training還是Inference的(這是對各種PU最常見的一個問題)時候,Graphcore試圖從另一個角度去解答,即這種分類本身就是不對的(是目前某些廠商提出的不合適的說法)。總的來說,他們認為先做Training然後做Inference的機制,未來一定會被Learning取代。也就是未來理想的機器智能應該能夠在部署之後還能保持持續的學習和進化。對於這個問題,Graphcore專門有一篇Blog做了說明,大家可以參考我在知乎上給出的翻譯(https://zhuanlan.zhihu.com/p/28053630)。

另一方面,他們認為,從計算上來說,Inference和Training也有類似的特徵。因此,他們的模型是下圖這樣,其中並沒有Training的模塊。

我的看法:

機器智能努力的方向之一就是Continuous Learning。如果在一個架構上能夠同時很好的支持Training和Inference當然非常理想。不過從目前的實踐來看,Deep Learning中的Training和Inference還是有較大的差異的,運算量的巨大差別,精度要求不同,演算法差別,部署的Constraints等等。Graphcore最終推出的IPU能否很好的解決這些問題,還有待觀察。

2. What Shall we bet is fundamental to MI workload

IPU的設計的基礎是Graphcore對於機器智能的Workload的理解。「在所有形式的機器智能計算中,我們試圖從數據中推斷知識模型,然後使用這些學習的模型從其他數據推斷出新的結果。所以在很大程度上,工作量是由知識模型的性質來定義的」。「知識模型和對它們執行推理所需的演算法最自然地表示為圖形(Graph)」。因此,他們用Graph來作為機器智能的基礎表示方法。這種表示既適用於神經網路,也適用於貝葉斯網路和馬可夫場,包括未來可能出現的新的模型和演算法。

這些Graph的第一個特徵,是它們規模很大,通常包括數千到數百萬個頂點。這也意味著巨大的并行性。第二個特徵是它們是稀疏的,大多數頂點只連接到其他一小部分頂點。因此,必須在架構上適應這種稀疏性,因為它對處理器之間的存儲器訪問模式和通信模式有重大影響。第三個基本特徵是數據的統計近似值。從處理器設計的觀點來看,這有利於低精度浮點運算。這可能是低精度數據的高性能計算的第一個主要應用,和傳統的高性能計算(HPC)是非常不同的(或者說完全相反的?)。另一個特徵是模型參數的重用性。簡單來說,卷積是空間重用,而回歸是時間重用。這種重用可以獲取數據中的空間或時間不變性。同時,如果重用參數,則會將其作用於給更多的數據,從而更快地學習。最後一個基本特徵是,圖形結構可以被視為靜態的 - 至少在很長一段時間內。這對於構建高效的并行計算至關重要,因為使得編譯器可以在將程序映射到多核并行處理器時的三個NP hard任務有可能實現:1)平衡跨處理器核的計算任務;2)分區和分配內存;3)處理器之間的消息調度。

對於稀疏性,還可以更進一步的說明一下。當我們把圖模型存儲到物理可實現的存儲器中的時候,存儲器訪問的有效稀疏度進一步增加了。例如,一個圖中的頂點可能連接到同樣接近的100個相鄰頂點。但是,如果我將該頂點的狀態存儲在具有線性地址的存儲器中,則它只能有兩個直接鄰居。在低維存儲器中存儲高維Graph的效果是使鄰域分散在存儲器中。這對於非常寬的向量機(如GPU)來說是一個潛在的問題。圖處理有利於更細粒度的機器,從而有效地分散和收集(scatter and gather)數據。這就是為什麼IPU擁有比GPU更多的處理器每個處理器都設計用於處理較窄的向量。

基於上述對機器智能的Workload的理解,Graphcore提出了IPU的設計。

和CPU (scalar workload),GPU (low-dimensional workload)相比,IPU是為了high-dimensional graph workload而設計的。下面我們就看他們的一些比較有參考價值的設計上的考慮。

3. 架構設計的考慮

首先,他們也給出了一些會限制MI處理器的性能的因素,比如:1) Rate of arithmetic 2) Bandwidth or latency of data access (parameters, activitions, samples) 3) Rate of address calculation (high-dimensional models) 4) Rate of generation of random numbers (stochastic models)。但最後給出了最重要的限制因素,power

上圖最左邊說明一些功耗限制因素;中間對比了不同的浮點運算單元大體的面積和功耗;最後說明,如果給定功耗的面積的限制,晶元運行在1.5GHz,則晶元中只能有1/3的面積能夠作為fpu(float point unit)運行。除非降低時鐘頻率,否則晶元中的很大一部分將無法工作(dark silicon)。

另外一個重要問題是存儲。對於機器智能任務,GPU和CPU的性能受到其對外部存儲器的帶寬的限制。傳統的外部DRAM系統(如DDR4或GDDR5)帶寬太低,而且沒有伸縮性。HBM在具有非常高的布線密度的硅襯底上使用垂直堆疊的DRAM die,其物理上非常接近處理器die。但它的生成困難,目前只用在最先進的晶元之中。此外,它把DRAM帶入處理器的thermal envelope之中,因此處理器只能以較低速度運行。HBM2雖然能夠提供更多的帶寬(目標是1TByte/s),但仍然存在上述問題。最後一種類型的memory片上的存儲SRAM,雖然相對性能好很多(訪問速度快,功耗低,功耗密度相對邏輯電路也比較低),但是由於晶元面積主要用於邏輯運算,一般不會在晶元上使用太多SRAM。

但是,和常見的晶元架構不同,IPU採用了大量分散式片上memory的設計。這非常激進的方法,其目標是把所有的model都能夠放在片上memory當中,如下圖所示。具體來講,IPU把大量的面積用於SRAM,所謂memory-centric chip,而適當減少運算單元fpu的面積,最終實現對power的充分利用。而GPU主要使用片外的memory,片上的面積中只有40%用於Machine Learning(fpu),而其它的50%的面積用於其它應用(Grahics,HPC)。由於GPU本身是面向多種應用的,這種設計也是很合理的。

當然,即使在IPU上集成儘可能多的SRAM,容量也很難和GPU連接片外的DRAM相比。但是,對於很多模型來說,這個容量已經夠用。而SRAM可以以100倍的帶寬和1/100的延遲來訪問,這種優勢是非常明顯的。技術模型的規模太大無法放到片上的memory中,還可以通過多個IPU互連來及解決問題。IPU採用的同構多核的方式,也讓這種擴展比較簡單。

另外,Graphcore看起來並不是非常擔心內存容量的問題。他們的依據包括:

1. 目前對於減少機器智能的內存佔用已經有不少好的方法,也有很大潛力。

2. IPU不需要用一些數學變換將卷積轉換成矩陣乘法(貌似可以直接做卷積)。這些變換往往會增加存儲的需求。另外,IPU不需要很大的Batch來提高并行的效率。

3. 可以通過重新計算來節省內存。例如,在GPU的DNN訓練期間使用的大部分內存是存儲正向傳遞中activitions,以便我們可以在反向傳播期間使用它們。一個有效的替代方法是只保存定期快照(Sanpshot),然後在需要時從最近的快照重新計算這些activitions。這種方法可以減少一個數量級的存儲,而計算只增加了25%。

我的看法:

之前和朋友討論過在片上採用大量memory來保存所有模型參數的方法,不是很看好。Graphcore竟然採用了更激進的架構,甚至不直接外接DDR,還是比較出乎意料的。不過Graphcore給出的說明基本是可以支持他們這個架構選擇的,也同時給了我們一個很不錯的思路。希望後面能有更多細節和數據供我們分析。

4. Serialise computation and communication

Graphcore提出,「Silicon efficiency is the full use of available power」。因此,他們還提出一些更進一步優化效率的方法。其中比較有意思的是運算和通信的串列執行。這個提法聽起來比較奇怪。我們一般都是希望運算和通信并行化,最好是能在Computation的過程中完成下一次communication,這也是很多架構優化的一個方向。但是,如果是在一個功耗受限的系統中,情況可能就不是這樣了。

上圖的上半部分是傳統的方法。我們希望處理器間通信與計算重疊,因此可以根據預期的工作負載來分配這兩者之間的功率預算。但是,在實際運行的時候,應用程序具有不同的平衡,結果往往是程序在一定時間內完成,但是消耗了較少的能力。這是因為通信或者計算部分在一定時刻可能成為瓶頸,而另一個則不能充分使用它的功率預算。

換一種思路,我們假定計算和通信串列執行,並不重疊,都充分使用最大的能量運行。那麼,無論實際工作量如何平衡,該程序都有可能在最短的時間內完成。因此,這也是一種效率更高的方式。

5. 多核通信方式

前面簡單介紹了IPU採用了同構多核的方式,分散式的本地存儲(沒有共享存儲)。另外,也介紹了它的「運算和通信的串列執行」的特色。那麼在這種架構下,如何實現多個內核間的通信和同步呢?Bulk Synchronous Parallel的同步計算模型。

這又是一個上世紀80年代提出的技術。它的基本操作可以分為三個:1) 本地計算階段, 每個處理器只對存儲本地內存中的數據進行本地計算。2) 全局通信階段, 對任何非本地數據進行操作,包括核間數據的交換。3) 柵欄同步階段, 等待所有通信行為的結束。可以看出,這實際上和上一節介紹的 「運算和通信的串列執行」是一致的,也和IPU的多核local memory架構很一致。

6. 工具

Graphcore提供的工具叫Porlar,題圖的圖像就是這個工具生成的。

對於工具也不想多說了,一般大家承諾都不錯,都是參照CUDA的配置,但實際效果。。。也只能試用了再評判。不過Graphcore目前只有50名員工,工具能否成熟還是有疑問的。

總結:

總的來說,從目前公布的信息來看,Graphcore的IPU在架構設計上還是有很多想法的, 非常值得討論。不過,感覺上IPU這種同構多核架構在Cloud端應用應該更合適一些。雖然他們認為IPU的架構有很好的伸縮性,放到Edge 和Embedded應用也沒問題,但我個人感覺是,這種架構頂多支持到自動駕駛,對於功耗成本要求更嚴苛的需求,還是更專用的架構(異構架構)更合適一些。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦