作者:陳巍 博士存算一體/GPU架構和AI專家,高級職稱。中關村雲端運算產業聯盟,中國光學工程學會專家,國際電腦學會(ACM)會員,中國電腦學會(CCF)專業會員。曾任AI企業首席科學家、記憶體晶片大廠3D NAND設計負責人,主要成就包括國內首個大算力可重構存算處理器產品架構(已在互聯網大廠完成原型內測),首個醫療領域專用AI處理器(已落地應用),首個RISC-V/x86/ARM平台相容的AI加速編譯器(與阿里平頭哥/芯來合作,已應用),國內首個3D NAND晶片架構與設計團隊建立(與三星對標),國內首個嵌入式快閃編譯器(與台積電對標,已平台級應用)。
2022年9月最後一天,特斯拉的人工智慧日,特斯拉「擎天柱」機器人正式登台亮相。根據特斯拉工程師的說法,2022 年人工智慧日是特斯拉機器人第一次在沒有任何外部支援的情況下被「放出」。 「他「步姿端莊,大方向場上觀眾打招呼。除了動作稍微遲緩之外,其他都很自然。
特斯拉展示了機器人在辦公室周圍「工作」的影片。名為擎天柱的機器人搬運物品,為植物澆水,甚至自主的在工廠工作了一段時間。 「我們的目標是盡快製造出有用的人形機器人”,特斯拉表明,他們的目標是讓機器人的價格低於 2 萬美元,或比特斯拉的電動車便宜。
特斯拉機器人之所以這麼強,除了特斯拉本身在AI技術的累積外,更主要得益於特斯拉強勁的自研AI晶片。這顆AI晶片,不是傳統上的CPU,更不是GPU,是更適合複雜AI運算的形態。
D1處理器與其他自動駕駛/機器人處理器的比較
特斯拉打造自有晶片的原因是,GPU 並不是專門為處理深度學習訓練而設計的,這使得GPU在運算任務中的效率相對較低。特斯拉與Dojo(Dojo既是訓練模組的名稱,也是核心架構名稱) 的目標是「實現最佳的AI 訓練效能。啟用更大、更複雜的神經網路模型,實現高能源效率且經濟高效的計算。
建立超級電腦一個關鍵點是如何在擴展運算能力同時保持高頻寬(困難)和低延遲(非常困難)。特斯拉給出的解決方案是強大的晶片和獨特的網格結構組成的分散式 2D 架構(平面),或者說是資料流近存運算架構。
特斯拉算力單元的層級分割
#依照層次劃分的話,每354個Dojo核心組成一塊D1晶片,而每25顆晶片組成一個訓練模組。最後120個訓練模組組成一組ExaPOD運算集群,共3000顆D1晶片。
一個特斯拉Dojo晶片訓練模組可以達到6組GPU伺服器的效能,成本卻比單組GPU伺服器少。單一Dojo伺服器算力甚至達到了54PFLOPS。只用 4 個 Dojo 機櫃就能取代由 4000 顆 GPU 組成的 72 組 GPU 機架。 Dojo 將通常需要幾個月的AI計算(訓練)工作減少到了1 週。這樣的“大算力出奇蹟”,與特斯拉自動駕駛的風格一脈相承。顯然晶片也會大大加速特斯拉AI技術的進步速度。
###當然,這一晶片模組還沒有到達「完美」的程度,儘管採用了資料流近存運算的思路,其算力能效比並沒有超過GPU。單一伺服器的功耗巨大,電流達到了2000A,需要特殊客製化的電源供電。特斯拉D1晶片已經是近存運算架構的結構極限了。如果特斯拉採用「存內運算」或「存內邏輯」架構,或許晶片效能或能源效率比還會有大幅提升。 ######特斯拉Dojo晶片伺服器由12個Dojo訓練模組組成(2層,每層6個)
Dojo核心是一個8路譯碼的內核,具有較高吞吐量和4路矩陣計算單元(8x8)以及1.25 MB 的本地SRAM。但是Dojo核心的尺寸卻不大,相較之下,富士通的A64FX在同一製程節點上所佔的面積是其兩倍以上。
透過Dojo核心的結構,我們可以看出特斯拉在通用AI處理器上的設計哲學:
對特斯拉和馬斯克而言,Dojo不僅僅形狀佈局像道場,其設計哲學也與道場的精神息息相關,充分體現了「少即是多”的處理器設計美學。
2 D1核心是RISC-V架構嗎?我們先來看看每個Dojo的結構和特徵。
每個Dojo核心是具有向量運算/矩陣運算能力的處理器,具有完整的取指、譯碼、執行元件。 Dojo核心具有類似CPU的 風格,似乎比GPU 更能適應不同的演算法和分支程式碼。 D1的指令集類似 RISC-V,處理器運作在2GHz,具有4組8x8矩陣乘法運算單元。同時具有一組自訂向量指令,專注於加速AI運算。
對RISC-V領域熟悉的大概能看出,特斯拉Dojo架構圖的配色方案像是在致敬伯克利的BOOM處理器架構圖,上黃中綠下紫。
特斯拉Dojo核心與柏克萊BOOM/ IBM Cell核心對比
2.1 D1核心整體架構D1核心結構(藍色部分為新增/修改的細節)
#從目前的架構圖來看,Dojo核心由前端、執行單元、SRAM和NoC路由4部分組成,比CPU和GPU的控制部件都更少,具有類似CPU的AGU和思路類似GPU張量核心(Tensor core)的矩陣計算單元。
Dojo核心結構比BOOM更加精簡,沒有Rename這些改善執行部件利用率的元件,同時也難於支援虛擬記憶體。但這樣設計的好處是減少了控制部分所佔的面積,可以把晶片上更多的面積劃分給運算執行單元。每個Dojo核心提供了1.024TFLOPS的算力。可以看到,每個幾乎所有的算力都由矩陣計算單元提供。因而矩陣計算單元和SRAM共同決定了D1處理器的計算能效比。
Dojo核心的主要參數
#Intel Nehalem架構中使用AGU來提升單週期位址存取效率
Intel Nehalem架構中使用AGU來提升單週期位址存取效率
2.2 算力核心矩陣運算單元與片內儲存
Dojo架構算力增強的核心是矩陣運算單元。矩陣運算單元與核心SRAM的資料互動構成了主要的核心資料搬運功耗。
特斯拉矩陣計算單元對應的專利如下圖。此模組關鍵元件是一個8x8矩陣-矩陣乘法單元(圖中稱為矩陣計算器)。輸入為資料輸入陣列和權重輸入陣列,計算矩陣乘法後直接在輸出進行累加。每個Dojo核心包括4路8x8矩陣乘法單元。
###特斯拉矩陣計算單元專利######
由於架構圖上只有一個L1 快取和SRAM,大膽猜測特斯拉精簡了RISC-V的快取結構,目的是節省快取面積並減少延遲。每個核心1.25MB的SRAM區塊可以為SIMD和矩陣運算單元提供2x512位元的讀取(對應AI計算的權重和資料)和512位元的寫頻寬,以及面向整數暫存器堆的64位元讀寫能力。計算的主要資料流是從SRAM到SIMD和矩陣乘法單元。
矩陣運算單元的主要處理流程為:
#透過多路選擇器(Mux)從SRAM載入權重到權重輸入陣列(Weight input array),同時SRAM中載入資料到資料輸入陣列(Data input array)。
輸入的資料與權重在矩陣計算器(Matrix computation Unit)中進行乘法計算(內積或外積?)
乘法計算結果輸出到輸出累加(Output accumulator)進行累加。這裡計算時可以用矩陣劃分拼接的方式來進行超過8x8的矩陣計算。
累加後的輸出傳入後處理器暫存器堆進行緩存,隨後進行後處理(可執行例如啟動、池化、Padding等操作)。
整個運算流程由控制單元(Control unit)直接控制,無需CPU幹預。
執行單元與SRAM/NoC的資料互動
Dojo核心內的SRAM具有非常大的讀寫頻寬,可以以400 GB/秒的速度加載並以270 GB/秒的速度寫入。 Dojo核心指令集具有專用的網路傳輸指令,透過NoC路由,可以直接將資料移入或移出 D1 晶片中甚至Dojo訓練模組中其他核心的SRAM 記憶體。
與普通的SRAM不同,Dojo的SRAM包括列表解析引擎(list parser engine)和一個收集引擎(gather engine)。清單解析功能是 D1晶片的關鍵特性之一,透過清單解析引擎可將複雜的不同資料類型的傳輸序列進行打包,提升傳輸效率。
列表解析功能
為了進一步減少操作延遲、面積和複雜度,D1 並不支援虛擬記憶體。在通常的處理器中,程式使用的記憶體位址不是直接存取實體記憶體位址,而是由 CPU 使用作業系統設定的分頁結構轉換為實體位址。
在D1核心中,4 路SMT 功能讓運算具備明確並行性,簡化AGU 和尋址運算方式,讓特斯拉以足夠低的延遲存取SRAM,其優勢是可避免中間L1 資料快取的延遲。
#D1處理器指令集
D1參考了RISC-V 架構的指令,並且自訂了一些指令,特別是向量運算相關的指令。
D1指令集支援64 位元標量指令和64位元組SIMD 指令,網路傳輸與同步原語和機器學習/深度學習相關的專用原語(例如8x8矩陣計算) 。
在網路資料傳輸和同步原語方面,支援從本機儲存(SRAM)到遠端儲存傳輸資料的指令原語(Primitives),以及訊號量(Semaphore)和屏障約束( Barrier constraints)。這可以使D1支援多線程,其儲存操作指令可以在多個 D1 核心中運行。
針對機器學習和深度學習,特斯拉定義了包括 shuffle、transpose 和 convert 等數學操作的指令,以及隨機舍入( stochastic rounding ),padding相關的指令。
D1核心具備FP32和FP16這兩個標準的運算格式,同時也具備更適合Inference的BFP16格式。為了達到混合精度運算提升效能的目的, D1也採用了用於較低精度和更高吞吐量的 8 位元 CFP8 格式。
採用CFP8的優點在於可以節省更多的乘法器空間來實現幾乎相同的算力,這對提升D1的算力密度非常有幫助。
Dojo 編譯器可以在尾數精度附近滑動,以涵蓋更廣泛的範圍和精度。在任何給定時間,最多可以使用 16 種不同的向量格式,靈活提升算力。
D1處理器的資料格式
根據特斯拉提供的訊息,在矩陣乘法單元內部可使用CFP8來進行計算(儲存為CFP16格式)。
D1處理器由台積電製造,採用7奈米製造工藝,擁有500億個晶體管,晶片面積為645mm²,小於英偉達的A100(826 mm²)和AMD Arcturus(750 mm²)。
#D1處理器結構
每個D1處理器由18 x 20 的Dojo核心拼接構成。每個D1處理器中有354個Dojo核心可用。 (之所以只使用360個核心中的354個是出於良率和每處理器核心穩定考慮)由台積電製造,採用7nm製造工藝,擁有500億個晶體管,晶片面積為645mm²。
每個Dojo核心都有一塊1.25MB的SRAM作為主要的權重和資料儲存。不同的Dojo核心透過片上網路路由(NoC路由)進行連接,不同的Dojo核心透過複雜的NoC網路進行資料同步,而不是共享資料快取。 NoC 可以處理跨節點邊界4個方向(東南西北)的8 個資料包,每個方向64 B/每個時脈週期,即在所有四個方向上一個資料包輸入和一個資料包輸出到網格中每個相鄰的Dojo核心。此NoC路由還可以在每個週期對核心內的 SRAM 進行一次 64 B 雙向讀寫。
跨處理器傳輸與D1處理器內部的任務分割
#每個Dojo核心都是一個相對完整的帶矩陣運算能力的類CPU(由於每個核心具備單獨的矩陣計算單元,且前端相對較小,所以這裡稱為類CPU)其資料流架構則有點類似於SambaNova的二維資料流網格結構,資料直接在各個處理核心之間流轉,無需回到記憶體。
D1晶片運作在2GHz,擁有龐大的440MB SRAM。特斯拉將設計重心放在運算網格中的分散式SRAM,透過大量更快更近的片上儲存和片上儲存之間的流轉減少對記憶體的存取頻度,來提升整個系統的效能,具有明顯的資料流存算一體架構(資料流近存運算)特徵。
每顆D1 晶片有 576 個雙向 SerDes 通道,分佈在四周,可連接到其他 D1 晶片,單邊頻寬為 4 TB/秒。
D1處理器晶片主要參數
每個D1訓練模組由5x5的D1晶片陣列排布而成,以二維Mesh結構互連。片上跨核心SRAM達到驚人的11GB,當然耗電量也達到了15kW的驚人指標。能源效率比為0.6TFLOPS/W@BF16/CFP8。 (希望是我算錯了,否則這個能效比確實不是太理想)。外部32GB共享HBM記憶體。 (HBM2e或HBM3)
#特斯拉D1處理器的散熱結構專利
特斯拉使用了專用的電源調節模組(VRM)和散熱結構來進行功耗管理。這裡功耗管理的主要目的有2個:
減少不必要的功耗損失,提升能源效率比。
減少散熱形變造成的處理器模組失效。
根據特斯拉的專利,我們可以看到電源調節模組與晶片本身垂直,極大的減少了對處理器平面的面積佔用,並且可以透過液冷來迅速平衡處理器的溫度。
特斯拉D1處理器的散熱與封裝結構專利
訓練模組在封裝上採用InFO_SoW(Silicon on Wafer)封裝來提高晶片間的互連密度。該封裝除了TSMC的INFO_SoW技術之外,還採用了特斯拉自己的機械封裝結構,以減少處理器模組的失效。
每個訓練模組外部邊緣的 40 個 I/O 晶片達到了 36 TB/s的聚合頻寬,或是10TB/s的橫跨頻寬。每層訓練模組都連接著超高速儲存系統:640GB 運行記憶體可以提供超過 18TB/s的頻寬,另外還有超過 1TB/s的網路交換頻寬。
資料傳輸方向與晶片平面平行,供電及液冷方向與晶片平面垂直。這是一個非常優美的結構設計,不同的訓練模組之間還可以互連。透過立體結構,節約了晶片模組的供電面積,盡可能減少計算晶片間的距離。
一個 Dojo POD 機櫃由兩層運算托盤和儲存系統組成。每一層托盤都有 6 個 D1 訓練模組。兩層共 12個訓練模組組成的一個機櫃,可提供 108PFLOPS 的深度學習算力。
Dojo模組與Dojo POD機櫃
超算平台的散熱,一直是衡量超算系統水準的重要維度。
D1 晶片的熱設計功率
#特斯拉在Dojo POD 上使用了全自研的VRM(電壓調節模組) ,單一VRM可在少於25 美分硬幣面積的電路上,提供52V電壓和超過1000A 的巨大電流,電流目的為0.86A每平方毫米,共計12個獨立供電相位。
特斯拉的電源調節模組
對高密度晶片散熱而言,其重點在於控制熱膨脹係數(CTE)。 Dojo系統的晶片密度極高,如果CTE稍微失控,都可能導致結構變形/失效,進而出現連接故障。
特斯拉這套自研VRM 在過去2年內迭代了14 個版本,採用了MEMS振盪器(MO)來感知電源調節模組的熱形變,最終才完全符合內部對CTE 指標的要求。這種透過MEMS技術主動調節電源功率的方式,與控制火箭箭身振動的主動調節方式類似。
#D1處理器軟體堆疊
對於D1這類AI晶片來說,編譯生態的重要性不低於晶片本身。
在D1處理器平面上,D1被分割成矩陣式的計算單元。編譯工具鏈負責任務的劃分和配置資料存儲,並且透過多種方式進行細粒度的並行計算,並減少存儲佔用。
Dojo編譯器支援的平行方式包括資料並行、模型並行和圖表並行。支援的儲存分配方式包括分散式張量、重算分配和分割填充。
編譯器本身可以處理各種CPU中常用的動態控制流,包括循環和圖形優化演算法。透過Dojo編譯器,使用者可將Dojo大型分散式系統視為加速器進行整體設計和訓練。
整個軟體生態的頂層基於PyTorch,底層基於Dojo驅動,中間使用Dojo編譯器和LLVM形成編譯層。這裡加入LLVM後,可以讓特斯拉更好的利用LLVM上已有的各種編譯生態進行編譯最佳化。
特斯拉Dojo 編譯器
透過特斯拉AI日,我們看到了特斯拉機器人的真身,並且對其強大的「內芯」有了更多的認識。
特斯拉的Dojo核心與以往的CPU和GPU架構特點都有差別,可以說是結合了CPU特性的精簡GPU,相信其在編譯上也會與CPU和GPU有較大的差異。為了提升運算密度,特斯拉做了極致精簡的最佳化,並且提供了主動調節的電源管理機制。
特斯拉Dojo架構不只名為道場,其設計也確實以簡為道,以少為多。那這種架構會不會成為繼CPU和GPU之後的另一個算力晶片架構典型形態呢?讓我們拭目以待。
以上是特斯拉超算晶片,可超越GPGPU?的詳細內容。更多資訊請關注PHP中文網其他相關文章!