來自——半導體行業觀察網
在日前舉辦的Hotchips 上,有家初創公司推出了一個硅晶圓大小的芯片,這在行業內引起了轟動。那么究竟他們打造這個產品的想法和目的分別是啥?我們來看看:
在日前舉辦的Hotchips 上,有家初創公司推出了一個硅晶圓大小的芯片,這在行業內引起了轟動。那么究竟他們打造這個產品的想法和目的分別是啥?我們來看看:
對速度的需求
深度學習已經成為我們這一代最重要的計算工作負載。在過去的五年里,由于深度學習的進步,AI已經從默默無聞上升到人們最關注的領域。先前只有人類才能完成的任務現在通常由計算機以達到人類或超越人類的水平執行。
深度學習是計算密集型的。OpenAI最近的一份報告顯示,從2012年至2018年間,用于訓練最大模型的計算機增加了30萬倍。換句話說,AI計算的增長速度比摩爾定律巔峰時期的速度快2.5萬倍。AI計算的需求每3.5個月就翻一番。
對計算的巨大需求意味著AI不受應用或想法的限制,而是受計算可用性的限制。測試一個新的假設(例如訓練一個新的模型)需要幾周或幾個月的時間,在計算時間上可能要花費數十萬美元。這使得創新變得緩慢。谷歌、Facebook和百度等公司都指出,長時間的訓練是AI進步的根本障礙;許多重要的想法被忽略,僅僅是因為這些模型需要太長的時間來訓練。
為了滿足AI不斷增長的計算需求,Cerebras設計和制造了有史以來最大的芯片。Cerebras晶圓級引擎(Wafer Scale Engine,WSE)面積為46225mm2,包含超過1.2萬億個晶體管,針對深度學習工作進行了完全的優化。相比之下,WSE比最大的GPU大56倍以上,片內內存大3000多倍,內存帶寬大10000多倍。
對于AI計算,芯片越大越好。更大的芯片處理信息更快,能在更短的時間內產生答案。WSE把完成最復雜的AI工作負載所需的時間從幾個月減少到幾分鐘。
深度學習工作負載
Cerebras從零開始,希望建立一種專門為深度學習優化的新型計算機。為特定的工作負載選擇正確的計算機體系結構就像為汽車找到正確的設計一樣。首先要問的問題是:它的工作是什么?會帶孩子去練習踢球嗎?還是搬運磚頭和木材?這些問題決定了小貨車或皮卡是否是正確的架構。在計算機設計中,理解計算機的工作負載(在這種情況下是神經網絡處理)是第一步。
神經網絡是一系列的層,從輸入(數據流入的地方)到輸出(例如,分類預測、翻譯句子、圍棋走子)一層層地排列。每一層的函數由該層的模型參數參數化。這個函數由一個簡單、高度并行的操作控制,例如將一個向量(輸入數據)乘以一個矩陣(模型參數)。
在推理中,參數是固定的,數據沿一個方向流動,從輸入流到輸出(I to O)。在輸出端,我們會得到一個結果:一只狗、一只貓,或棋局中最好的一步棋。
但在訓練過程中,數據是雙向流動的。一組標記的輸入數據稱為訓練集,它從輸入流向輸出(I to O)。在輸出端,不是給出答案,而是將輸出與該特定輸入的正確答案進行比較。然后,借助一些微積分計算,網絡通過減小誤差提高I-to-O計算的準確性。該過程如下:對于每個新的訓練樣本,網絡改變其輸出預測的方式,從而不斷減小誤差;誤差是預測輸出和正確輸出之間的差值。
這些信息以梯度的形式出現。梯度開始沿著O-to-I方向逆向移動。當此數據流經每一層時,它與產生它的I-to-O數據(數據已經停在那里,等待梯度返回)相互作用,并且一起決定如何改變層的參數,以最有效地減小誤差。然后對參數進行調整,這個過程將在訓練樣本上持續多次。本質上,這創建了一個多階段的訓練環路。
訓練網絡所需的時間取決于通過這個反饋環路處理輸入的速度。輸入在環路中移動的速度越快,每單位時間通過環路發送的輸入就越多,網絡訓練的速度也就越快。
理解性能
通過將深度神經網絡視為多級計算反饋回路,我們揭開了性能的神秘面紗。而且,我們可以更好地理解初創公司和老牌企業所做的架構選擇。
減少訓練時間的唯一方法是減少輸入通過反饋回路所需的時間。反饋回路中唯一發生的事情是計算和通信。因此,必須加速計算和通信。
加速計算最直接的方法是增加計算內核的數量。更多的內核,特別是更多的浮點乘法累加單元,可以在更短的時間內完成更多計算。將高速內存放置在靠近內核的位置,確保內核總是在進行計算。將內存放在遠離芯片的地方意味著內核經常在等待數據。
高帶寬、低延遲的通信可確保計算內核能夠聚集到通信組中,從而快速解決單個內核耗時過長的問題。此外,高帶寬、低延遲通信可確保將環路中每個階段的結果快速傳遞到后續階段。
通過對AI性能的簡單理解,我們了解了AI計領域算的競爭格局。對于訓練來說,GPU已經占據了CPU的主導地位。GPU有數千個內核。CPU只有幾十個內核。起初,事情就是這么簡單。
CPU中的大內核不是為多級訓練環路中的計算類型而設計的。GPU的小內核也不是為AI工作而設計的,但它們的數量更多,因此占據了上風。這一邏輯也解釋了為什么在過去6年中,英偉達的GPU從551mm2增大到815mm2。更大的硅面積為內核提供了更多的空間,更多的內核提供了更多的計算。更大硅面積也為內核附近的內存提供了更多空間。
同樣的見解解釋了最近對通信結構的關注。隨著AI計算要求越來越高,訓練環路所需的內核數量超過了單個芯片上的內核數量。達到芯片尺寸的傳統限制后,獲得更多內核的唯一方法是通過構建集群來添加芯片。由于片外通信比片內通信慢幾萬倍,因此將不同芯片的內核連接在一起解決單個問題就成了一個需要解決的重要問題。這一邏輯解釋了為什么英偉達設計NVLink來改善芯片之間的通信,也解釋了為什么他們花費68億美元收購Mellanox,因為Mellanox開創了InfiniBand,這是一種將芯片連接在一起的通信技術。
同樣的邏輯有助于解讀AI領域各種初創公司提出的主張。有些人聲稱他們已經將內存轉移到了芯片上,從而提高了附近內核的計算性能。這是真的。更多靠近內核的片內存儲器提高了計算效率。其他公司會說,他們更緊密地調整了AI工作的內核,從而在單位時間內獲得了更多的計算,或者避免了做一些無用的工作,比如乘以零。提供更多計算并避免將時間浪費在無用工作上的優化也將提高性能。
但最終,所有這些策略都試圖通過以下三種策略中的一種或多種來提高計算速度和加快通信速度:
更多/更好的內核;
更接近內核的內存;
內核之間更低延遲的帶寬。
但是,如果你把這三種方法發揮到它們的邏輯極限會發生什么?你會得到什么?一個非常大的芯片,內存接近內核,所有這些都通過高帶寬、低延遲的結構連接起來。
如何才能實現這一點?小芯片是在直徑為12英寸的晶圓上由相同的芯片組成的陣列。要得到真正大的芯片,你不是將晶圓切割成小芯片,而是將芯片增大到一個完整的晶圓。這將大大增加可用于計算的內核數量。既然有了足夠的硅面積,就可以在整個芯片上分配內存,讓每個內核都有自己的本地內存。最后,你將構建一個跨越所有內核的通信結構,因為通信都是片上的,比InfiniBand等片外技術快幾千倍。
為什么以前沒有這樣做?因為這很難。從來沒有人制造過大于840 mm2的芯片并將其推向市場。設計、制造、電源、冷卻、通信和協調方面的挑戰是巨大的。但前景是無限的。由此產生的芯片將比當今市場上最大的芯片大50倍。它將擁有數十萬個AI優化內核,以及分布在內核之間的千兆字節片內存儲器。它將有PB/s的內核間帶寬。
Cerebras架構:利用計算三連擊加速深度學習
Cerebras 晶圓級引擎(WSE)專注且僅僅專注AI,加速了計算和通信,縮短了訓練時間。這種方法是WSE尺寸的直接函數。WSE的硅面積是最大的GPU的56倍,它提供了更多的內核來進行計算,提供了更多靠近內核的內存來提高內核的工作效率,還提供了內核之間更低的延遲帶寬來實現內核組之間的有效協作。
計算三連擊——更多的內核、更接近內核的內存、內核之間更大的帶寬——使得WSE能夠避免老式的性能問題,即片外通信速度慢、內存距離遠、內存帶寬小,以及在無用的工作上浪費計算資源。換句話說,WSE實現了集群規模的性能,卻不需要構建大型集群。
1.硅面積越大,計算內核的空間越大
Cerebras WSE提供40萬個可編程計算內核。這些稀疏線性代數內核(SLA™)毫無意外地針對稀疏線性代數進行了優化,而稀疏線性代數是神經網絡計算的基礎。這些內核是專門為AI工作設計的。它們體積小,速度快,不包含緩存,并且消除了通用內核所需要、但在深度學習處理器中沒有任何用處其他功能和開銷。
SLA內核是可編程的,確保它們可以在不斷變化的深度學習領域運行一切神經網絡算法。每個內核都執行控制處理和數據處理??刂铺幚碛糜诓⑿刑幚韰f調,數據處理用于神經網絡內核的數學運算。
控制處理是通過一整套通用指令來實現的。這些指令提供可編程原語,例如算術、邏輯和分支操作。這些原語為映射一切并行算法提供了基礎。
張量運算是神經網絡工作負載的內核。為了實現高性能,SLA內核有專門的張量處理引擎,其中全張量是架構中的一流操作數。張量運算是可編程的,因此同一個引擎可以被編程來執行各種張量運算,比如卷積或矩陣乘法。硬件內部優化張量處理,以實現比GPU高3~4倍的數據路徑利用率。
Cerebras對深度學習工作量的堅定不移的關注通過稀疏性的處理得到了進一步的證明。Cerebras發明了稀疏性捕捉技術,該技術允許稀疏線性代數內核通過捕捉神經網絡工作負載中的稀疏性來提高性能。
乘以零是一種浪費——浪費硅、能量和時間,而不產生任何新信息。在深度學習中,數據往往非常稀疏。要做乘法的向量和矩陣中,有一半以上甚至幾乎所有的元素都是零。大量的零來源于基本的深度學習操作,例如整流線性單元(ReLU)和隨機失活(dropout),它們都將零點引入神經網絡張量。圍繞權重稀疏性的新方法不斷涌現,這些方法添加了更多的零。簡而言之,人們越來越有興趣讓張量變得更稀疏。
GPU和TPU是密集執行引擎,它們對整個向量或數據矩陣執行相同的計算任務。當向量或矩陣密集(全部非零)時,這是一種明智的方法。在密集的環境中,把數據集中在一起并提供一條應用于所有數據的指令可以提高效率。但是,就像在神經網絡中經常發生的那樣,數據中50%~98%都是零時,那么50%~98%的乘法就被浪費了。
因為Cerebras SLA內核是專門為神經網絡的稀疏線性代數設計的,所以它永遠不會乘以零。為了利用這種稀疏性,內核具有內置的細粒度數據流調度,因此計算由數據觸發。調度以單個數據值的粒度進行操作,因此只有非零數據會觸發計算。所有的零都會被過濾掉,并且可以在硬件中跳過。換句話說,SLA內核不會乘以零,也不會在整個結構中傳播零。因此,SLA內核不僅通過跳過無用的計算來節省功率和能源,還通過使用相同的時間來做有用的工作來獲得性能優勢,而其他架構則陷入了乘以零的問題。
稀疏性分布不均勻,大小也不均勻。它可以是細粒度的,其中單個激活或權重為零,也可以是粗粒度的,其中相鄰的激活塊和權重都為零。為了最大限度地利用稀疏性帶來的性能機會,架構能夠同時收獲細粒度和粗粒度的稀疏性是至關重要的。SLA內核架構就是為了做到這一點而設計的。
稀疏性是神經網絡的一個重要特征,必須充分利用它來獲得最高的性能。計算機架構師的口頭禪“只做有用的工作”因稀疏性而被帶到了最重要的位置。WSE擁有數十萬個AI優化內核,每個內核都具有獲取稀疏性和避免做無用工作的能力,從而為卓越的性能提供了架構基礎。
2 硅面積越大,芯片內存越大
內存是任何計算機體系結構的關鍵組成部分。內存離計算內核越近,計算速度就越快,延遲越短,移動數據所用的功率也越少。高性能的深度學習要求每個內核都能在最高水平上運行,這就要求內核和內存之間緊密協作和彼此靠近。
在深度學習中,內存用于保存模型的參數、激活、模型配置等。在最先進的網絡中,模型參數已經達到千兆字節,這種內存需求預計會增長。但是大型模型需要大量的內存和大量的計算,這給傳統架構帶來了根本性的挑戰。
為了獲得最大的性能,整個模型應該適合最快的內存,也就是最接近計算內核的內存。在CPU、TPU和GPU中情況并非如此,它們中的主內存沒有與計算集成。相反,絕大多數內存是基于片外的,遠在一個高帶寬內存(HBM)設備中單獨的DRAM芯片或這些芯片的堆棧上。結果,主內存慢得令人難以忍受。
雖然計算機架構師多年來一直在嘗試解決內存瓶頸,但主要的解決方案基于多級片內和片內緩存的內存層次結構。它們昂貴、微小、難以使用,而且有時會有意想不到的結果。一個簡單而不可避免的事實是,一旦越過片內/片外邊界,內存延遲就會爆炸,帶寬會驟降。訪問片外內存的極端延遲損失迫使性能呈螺旋式下降。這是圖形處理器在進行AI工作時速度較慢的根本原因之一。
Cerebras解決了這個問題。Cerebras WSE具有18 GB的片上內存和9.6字節的內存帶寬。這分別是領先的GPU的3000倍和10000倍。因此,WSE將整個神經網絡模型(即所有要學習的參數)保存在與計算內核相同的硅上,在那里可以全速訪問它們。這是可能的,因為WSE上的內存廣泛分布在計算元件旁邊,允許系統在單周期延遲時實現極高的內存帶寬,所有模型參數始終在片內存儲器中。
Cerebras WSE提供了比以往任何芯片都更多的計算內核、更多的本地內存和更多的內存帶寬。這樣可以實現快速計算,減少訓練模型所需的時間,并且消耗更少的能量。
3.更大的硅面積可以實現極快的通信——Swarm™結構
AI優化的內核和高速本地內存通過提高計算的數量、速率和靈活性來提升性能。性能的提高也來自于加速通信。AI是一種通信密集型工作負載——各層和各個內核要不斷地進行通信——因此,將內核連接在一起的結構對性能至關重要。當內核可以在高帶寬和低延遲的情況下通信時,就可以實現最大的性能,因為內核可以聚在一起,在群組中完成單個內核需要很長時間才能完成的任務。
計算機體系結構中的一個基本事實是,片外通信比片內通信慢數萬倍。希望通信的小芯片必須通過以太網、InfiniBand、PCI-E或其他片外技術聚集在一起,與留在硅片上相比,這些技術都要遭受巨大的性能損失。片內通信速度更快,每移動一位,功耗不到片外通信的千分之一。
Cerebras Swarm通信結構創建了一個巨大的片上網絡,提供了突破性的帶寬和低延遲,而功耗僅為用于將GPU組織到集群中的傳統通信技術的一小部分。
Cerebras WSE上的40萬個內核通過Swarm通信結構以2D網格連接,帶寬為100PB/s。Swarm為每個計算內核提供硬件路由引擎,并通過針對延遲和帶寬進行優化的短線連接它們。生成的結構支持單字活動消息,這些消息可由接收內核處理,無需任何軟件開銷。Swarm結構提供了靈活的全硬件通信。
Swarm是完全可配置的。Cerebras軟件配置了WSE上的所有內核,以支持訓練用戶指定模型所需的精確通信。對于每一個神經網絡,Swarm都提供了一個獨特且優化的通信路徑。這與CPU和GPU所采用的方法不同,它們有一條硬編碼的片內通信路徑,所有神經網絡都被塞進其中。
Swarm的結果令人印象深刻。典型的消息以納秒延遲遍歷一個硬件鏈路。系統的總帶寬以幾十PB/s為單位衡量。不需要TCP/IP和MPI等通信軟件,從而避免了相關的性能損失。在這種架構中,通信的能耗成本遠低于每比特1皮焦耳,這比CPU或GPU低了近兩個數量級。作為Swarm通信結構的結果,WSE訓練模型更快,耗費的能量更少。
與軟件協同設計,實現最大利用率和可用性
Cerebras軟件棧與WSE緊密合作開發,以充分利用其獨特的功能。其內核是Cerebras圖形編譯器,它能夠自動將機器學習研究者的神經網絡轉換成針對WSE海量計算資源優化的可執行文件。
為了讓機器學習從業者更容易和直觀地使用WSE,Cerebras軟件棧為現有的高級機器學習框架(如TensorFlow和PyTorch)提供了無縫接口。圖形編譯器首先從用戶提供的框架表示中提取神經網絡的數據流圖形表示。網絡的一部分與優化的微碼程序相匹配,這些程序被映射到巨大計算陣列的特定資源區域。然后,軟件配置Swarm互連結構,創建一條經過這些計算區域的定制數據路徑,以最大限度地提高局部性并最大限度地降低通信成本。其結果是將神經網絡高度優化地放置在WSE上,為用戶進行訓練或推理做好準備。
除了傳統的執行模式,WSE的規模還支持模型并行執行的新方法。WSE能夠一次在結構上運行整個神經網絡——將網絡的每一層映射到多級流水線中的單級,以實現完整的分層并行流水線執行。然后,用戶可以通過流水線快速地流式傳輸數據,同時運行神經網絡中的所有階段,即運行所有層。這種方法對于WSE來說是獨一無二的,并且只有在其巨大的規模下才有可能實現。
綜上所述,Cerebras軟件棧:
•允許用戶使用熟悉的高級機器學習框架對WSE進行編程。
•自動將機器學習框架定義的模型編譯為WSE可執行文件。
•最大限度地利用所有40萬個內核,并利用WSE獨一無二的規模。
結論:WSE,AI計算的未來
Cerebras Systems是一個由開創性的計算機架構師、計算機科學家、深度學習研究人員和各種類型的工程師組成的團隊,他們熱愛無畏的工程。我們聚集在一起建造了一種新的計算機來加速AI工作。Cerebras第一個公布的元件是Cerebras WSE。
WSE是有史以來最大的芯片。它有46225mm2,包含1.2萬億個晶體管和40萬個AI優化的計算內核。內存架構確保這些內核以最高效率運行。它提供18 GB的快速片內存儲器,分布在距離每個內核一個時鐘周期的單級存儲器層次結構中的內核之間。這些高性能的、AI優化的、本地內存饋送的內核通過Swarm結構連接起來,這是一種細粒度、全硬件、高帶寬、低延遲的網狀連接結構。
通過加速AI計算,Cerebras WSE將訓練模型的時間從幾個月縮減到幾分鐘,從幾周縮減到幾秒鐘,消除了AI發展的主要障礙。因此,WSE讓深度學習的實踐者能夠更快地測試假設,并探索那些今天無法用傳統架構測試或風險太大而無法嘗試的想法。WSE降低了好奇心的成本,加速了將引領未來AI的新思想和新技術的到來。