粗看上去,世界上的超大規模使用者和雲構建商製造的東西通常看上去和感覺上去都像超級計算機,但如果你仔細觀察,就常會看到一些相當大的差異。差異之一是,他們的機器並不是為了實現最高效能而不惜一切代價去設計,而是在效能和成本之間實現了最佳平衡。
簡而言之,這就是為什麼社交網路巨頭Facebook(世界上最大的人工智慧使用者之一)大量訂購英偉達的HGX-1和HGX-2系統用於機器學習訓練,然後就到此為止了。(HGX-1和HGX-2系統是GPU加速器製造商英偉達的DGX系列的超大規模使用者版本。)
這並不是巧合,為什麼微軟、谷歌、亞馬遜網路服務、阿里巴巴、騰訊、百度,以及中國第四大巨頭(中國移動或京東)同樣設計自己的伺服器,或是使用Facebook在2011年建立的開放計算專案(OCP)中的設計,或是在OCP啟動六個月後由阿里巴巴、百度和騰訊發起了天蠍計劃專案。在某些情況下,他們甚至設計自己的ASIC或在FPGA上執行專門用於機器學習的演算法。
公平地說,Facebook確實在2017年6月安裝了英偉達DGX-1 CPU-GPU混合系統的半定製實現,該系統有124個節點,峰值雙精度效能為4.9 petaflops,在HPC常用的Linpack並行Fortran基準測試中的評價為3.31petaflops。但這是個例外,不是常規。
但是,Facebook喜歡設計自己的硬體,然後將其開源,試圖圍繞這些設計構建一個生態系統,以降低工程和製造成本,並降低供應鏈風險,因為越來越多的公司進入了開放計算領域。這與微軟幾年前加入OCP並將一系列完全不同的開源基礎設施設計(從伺服器到儲存到交換)拋入OCP生態系統的原因相同。這增加了創新,但也導致了供應鏈分叉。
在本週於聖荷西舉行的OCP全球峰會上,Facebook展示了針對機器學習訓練和基礎設施的未來系統設計,讓世界有機會看到針對現代資料中心的這兩個日益重要的工作負載的成本最佳化裝置的至少一個潛在的未來。這些設計非常有趣,表明Facebook熱衷於建立能夠容納儘可能多的供應商的不同型別計算的系統,再次降低成本和供應鏈風險。
不是基本訓練
第一臺新機器代號為“Zion”,它的目標是Facebook上的機器學習訓練工作負載。Zion系統由兩個不同的子系統組成,就像英偉達的DGX-1和微軟的HGX-1,也包括DGX-2和HGX-2,以及ODM和OEM廠商為客戶製造的各種等價產品。 Zion系統是兩年前Facebook在OCP峰會上與微軟的HGX-1一起釋出的“Big Basin”ceepie-geepie系統的繼承者,這兩個系統的設計都為OCP做出了貢獻。Big Basin機器的主機支援多達8個英偉達的“Pascal”GP100或“Volta”GV100 GPU加速器,以及兩個英特爾Xeon CPU。巧妙之處在於CPU計算和GPU計算是分開的,分別位於不同的主機板和不同的機箱中,因此它們可以單獨升級。具體取決於品牌和型號。
Big Basin是對其前身“Big Sur”的徹底改進,後者是一款密度較低的設計,基於單個主機板,配備兩個Xeon CPU和多達8個PCI-Express Nvidia Tesla加速器(M40或K80是最受歡迎的)。Big Sur於2015年12月曝光。Facebook在談到設計時錶示,開發工作已經基本完成,還沒有投入生產,這意味著Zion機器還沒有投入生產,但很快就會問世。(我們在2018年1月討論了Facebook不斷演變的AI工作負載,以及執行這些工作負載的機器。)Zion機器的變化顯示了Facebook在混合CPU-GPU機器上的想法的變遷,這些想法是我們許多人都想不到的。
Zion機器的兩個子系統被稱為“Emerald Pools”和“Angels Landing”,分別指的是GPU和CPU子系統。儘管facebook多年來一直表示,其伺服器設計的目的是允許選擇處理器或加速器,但在這個例子中,facebook和微軟合作提出了一種獨特的封裝和主機板插接方法,稱為OCP加速器模組(簡稱OAM),該方法允許使用具有不同插座和熱量的加速器,可以選擇250瓦至350瓦不等的風冷,未來則可以選擇高達700瓦的水冷,但就硬體形式而言,所有這些都一致部署在這些加速系統中。
超大規模使用者谷歌、阿里巴巴和騰訊將與Facebook和微軟一起推廣OAM封裝,晶片製造商AMD、英特爾、Xilinx、Habana、高通和Graphcore也是如此。系統製造商IBM、聯想、浪潮、廣達電腦、企鵝計算、華為技術、WiWynn、Molex和BittWare也都支援OAM。毫無疑問,其它公司也將效仿它們的晶片和系統——惠普和戴爾顯然是缺席的OEM,而富士康和Inventec則是缺席的主要ODM。
透過OAM,加速器被插入一個行動式插座,它的管腳在一側,然後是一組標準的並行管腳,它在概念上類似於英偉達的SXM2插座,用於Pascal和Volta GPU上的NVLink,從模組上取下並插入主機板上匹配的埠中。下圖說明了它的原理:
任何插入Emerald Pools機箱的特定加速器都會有散熱器,散熱器具有不同數量的鰭片和不同的材料,可用於冷卻其下方的裝置,但高度一致,因此無論哪種加速器插入插槽,散熱器都能以一致的方式保持整個機箱中的氣流不變。雖然Facebook沒有這麼說,但沒有理由不能將多個不相容的加速器插入Emerald Pools機箱,並使用該機箱中實現的PCI-Express交換結構相互連線並與主機CPU連線。下圖是OAM的外觀:
它看起來很像小型汽車電池,不是嗎?
每個OAM的尺寸為102毫米×165毫米,足夠容納我們認為未來將會越來越大的多晶片模組。對於耗電量高達350瓦的裝置,OAM可支援12伏特的輸入;對於需要驅動高達700瓦的裝置,OAM可支援48伏特的輸入;風冷的散熱能力預計將在450瓦左右。當前的OAM規範允許在加速器和主機之間提供一個或兩個PCI-Express 3.0 x16插槽,而且很顯然,更快的PCI-Express 4.0和5.0插槽已在規劃圖中。這樣就剩下6到7個PCI-Express鏈路用於交叉耦合加速器。順便說一句,這些鏈路可以分成兩部分,以提供更多的互連鏈路,並可以增加或減少任意給定鏈路的通道數量。
下圖是Emerald Pools機箱,裡面插了8個加速器中的7個。
Emerald Pools底座後面有四個PCI-Express交換機,位於圖片的右側,每個交換機都插入對應的Angels Landing CPU機箱(即Zion系統的另一半)上的配套PCI-Express交換機。該系統的CPU部分沒有在Facebook展位上展出,但Facebook技術專案經理、設計其AI系統的工程師之一Sam Naghshineh在一次演講中展示了這臺機器:
你可以看到,4個PCI-Express 3.0管線從加速器底座和CPU底座上出來,將它們連線在一起。關於Angels Landing有趣的一點不是它總共有4個伺服器底座,每個都有一對Xeon SP處理器,這是超大規模資料中心的常規設計。巧妙之處在於,由於在系統的CPU端進行機器學習訓練期間,對資料密集處理的需求不斷增加,於是它使用處理器上的UltraPath Interconnect(UPI)連結將這4個雙插槽機器捆綁在一起,以建立一個8插槽共享記憶體節點。按照Naghshineh的說法,從技術上講,這稱為扭曲超立方體拓撲:
這個大CPU節點設計為擁有2 TB的DRAM主記憶體,而無需使用大記憶體條或Optan3D XPoint主記憶體,而且重要的是,該節點可在系統的CPU端提供足夠的記憶體頻寬,從而無需使用HBM記憶體。(這並不是說英特爾或AMD CPU還擁有HBM記憶體,但某些場合它們確實擁有HBM記憶體,尤其是對於HPC和AI工作負載而言。)這8個插槽的DRAM記憶體頻寬和容量一樣重要。
如你所見,Angels Landing CPU機箱中的每個CPU都有自己的網路介面卡以及PCI-Express 3.0 x16插槽,用於將CPU連線到PCI-Express交換機結構,該交換機結構將加速器計算複合體連線在一起,並連線到CPU。這些加速器連結在上圖中幾乎完全連線的混合立方體網格中,但還可以支援其他拓撲,如下所示:
左圖中,每個加速器有6個埠,8個加速器連線在一個混合立方體網格中。右圖中,仍然有8個裝置,但是每個裝置都有一個額外的埠(總共7個),這些裝置可以按照all-to-all的互連方式進行連結。顯然還有其他選擇,重點是不同的神經網路在不同的互連拓撲結構中效果更好,這將允許Facebook和其他公司改變互連的拓撲結構,以滿足神經網路的需求。
推理的未來
Facebook毫不掩飾地表示,它希望擁有比目前市場上更高效的推理機,這是Facebook去年在一篇論文中討論的一個話題。在本週的OCP全球峰會上,Facebook公司高層概述了機器學習推理硬體的未來。
Facebook技術和戰略主管Vijay Rao提醒大家,早在1980年,英特爾就為8086系列處理器設計了8087數學協處理器,這些處理器如今是客戶端的核心晶片和伺服器上的Xeon晶片的前身。這些機器可以在2.4瓦的熱度範圍內實現50 kiloflops(32位單精度),達到相當驚人的每瓦20.8 kiloflops。Facebook的目標是使用像INT8這樣的低精度數學運算,來達到接近每瓦5 teraflops,如果你看看英偉達的GV100,它可以達到每瓦特0.4 teraflops。
Rao在他的主題演講中解釋說:“我們一直在與許多合作伙伴密切合作,設計用於推理的ASIC。與傳統CPU相比,在加速器中執行推理的吞吐量增加是值得的。在我們的情況下,應該是每瓦特10倍左右。”
Rao大致談到了將M.2推理引擎組合到微伺服器卡上,然後將它們插入到2015年建立的“Yosemite”伺服器機箱中,Facebook設計該機箱是為了完成基本的基礎設施工作。但當天晚些時候,Naghshineh實際展示了它的實現方法。以下是M.2推理引擎的“Kings Canyon”系列:
Facebook正試圖鼓勵推理晶片製造商支援兩種不同的形式。一個是單個的寬M.2單元,最大支援12瓦,並帶有一個PCI-Express x4介面,另一個具有兩倍大的記憶體、20瓦的熱度範圍,一對PCI-Express x4埠,可以單獨使用或捆綁使用。這些M.2推理卡中的多個被插入“Glacier Point”載卡中,該載卡插入真正的PCI-Express x16插槽,最多可以有4個載卡被插入Yosemite機箱,如下所示:
群集推理引擎的框圖如下所示:
這樣做的唯一原因與使用低核心計數、高頻率、單插槽的微型伺服器來執行電子設計自動化(EDA)工作負載相同,英特爾就是這樣做的,儘管它想要向世界銷售雙插槽伺服器。推理工作負載類似於Web服務和EDA驗證:你可以將整個較小規模的工作分派到大量鬆散耦合(幾乎沒有耦合,完全不是真正耦合)計算單元中的一個,然後一次執行大量的這些任務,並同時完成大量工作。對一位資料的推斷決不依賴於對無數其他工作的推斷。機器學習訓練則不同,它更像傳統的HPC模擬和建模,在不同的程度和頻率下,對一個計算元素進行的任何處理都依賴於其他計算元素的結果。
因此,我們所看到的用於機器學習訓練和推理的截然不同的硬體設計都來自Facebook。我們可以肯定的是,Facebook希望能夠採用它認為適合框架的任何型別的CPU和加速器進行訓練,以及任何價格低廉的晶片推理引擎,在任意給定的時間內,它的效能都比CPU好10倍。今天在Facebook執行在X86伺服器上的推理業務是英特爾的失敗。或許也未必,沒準Facebook會決定在今年晚些時候推出M.2 Nervana NNP推理引擎。我們將會看到推理是如何流過Kings Canyon的