剛剛,Facebook把服務27億人的AI硬體系統開源了
Facebook 的基礎設施現在每月為其整個應用和服務系統上超過 27 億的人提供服務。他們的工程師設計並建立了高階、高效的系統來擴大這一基礎設施,但是隨著工作負載的增長,單靠通用處理器已經無法滿足這些系統的需求。電晶體增長的速度已大大放緩,這就需要開發出專門的加速器和整體的系統級解決方案來提高效能、功率和效率。
為基礎設施建立高效的解決方案需要共同設計優化了工作負載的硬體。為此,Facebook 一直與合作伙伴共同開發針對 AI 推理、AI 訓練和視訊轉碼的解決方案。這幾個都是其發展最快的服務。今天,Facebook 釋出了其用於 AI 訓練的下一代硬體平臺 Zion、針對 AI 推理的新定製晶片設計 Kings Canyon 以及用於視訊轉碼的 Mount Shasta。
AI 硬體
AI 工作負載的使用貫穿 Facebook 的架構,使其服務相關性更強,並改善使用者使用服務的體驗。通過大規模部署 AI 模型,Facebook 每天可以提供 200 萬億次推測以及超過 60 億次語言翻譯。Facebook 使用 35 億多公開影象來構建或訓練其 AI 模型,使它們更好地識別和標記內容。AI 被應用於各種各樣的服務中,幫助人們進行日常互動,併為其提供獨特的個性化服務。
Facebook 上的大多數 AI 流程都是通過其 AI 平臺 FBLeaner 進行管理的,該平臺包含集中處理各部分問題的工具,如特徵庫、訓練工作流程管理以及推理機。與設計併發布到 Open Compute Project(OCP)的硬體相結合,這將能夠促使 Facebook 大規模、高效地部署模型。從一個穩定的基礎開始,Facebook 專注於建立與供應商無關的整合硬體設計,並且為實現工作效率最大化,繼續堅持分解設計原則。結果就是 Facebook 推出了用於工作負載訓練和推理的下一代硬體。
AI 訓練系統 Zion
Zion 是 Facebook 下一代大儲存統一訓練平臺,設計上能夠高效處理一系列神經網路,包括 CNN、LSTM 和 SparseNN。Zion 平臺能夠為其嚴重的工作負載提供高儲存能力和頻寬、靈活高速的相連、強大的計算能力。
Zion 採用了 Facebook 全新的、與供應商無關的 OCP 加速模組(OAM)。OAM 形狀係數讓 Facebook 的合作伙伴(包括 AMD、Haban、GraphCore 和 Nvidia)可以在 OCP 通用規範上開發自己的解決方案。通過單個機架使用 TOR 網路轉換,Zion 架構讓 Facebook 能夠在每個平臺上自由擴充套件到多個伺服器。隨著 Facebook AI 訓練工作負載的規模和複雜性不斷增長,Zion 平臺也會隨之擴充套件。
Zion 系統分為三個部分:
-
8 插槽伺服器
-
8 加速器平臺
-
OCP 加速器模組
AI 訓練解決方案基礎模組
Zion 連線模組圖解
Zion 將系統的記憶體、計算和網路密集型元件分離,使每部分都可單獨擴充套件。該系統為 8 個 NUMA CPU 插槽提供了一個大型 DDR 儲存池,以滿足工作負載儲存容量密集型元件的需求,例如 SparseNN 的嵌入表。對 CNN 或者 SparseNN 密集部分這樣的儲存-頻寬密集型和計算密集的工作負載,每個 CPU 插槽都連線了 OCP 加速模組。
系統有兩個高速結構:連線所有 CPU 的相干結構和連線所有加速器的結構。因為加速器儲存頻寬高但儲存容量低,因此通過以這樣的方式對模型進行分割槽來有效利用可用的總儲存容量,從而使訪問頻率較高的資料駐留在加速器上,訪問頻率較低的資料駐留在具有 CPU 的 DDR 記憶體上。所有 CPU 和加速器之間的計算和通訊都是平衡的,並且通過高速和低速相連有效地進行。
通過 Kings Canyon 執行推理
一旦我們訓練完模型,就需要將其部署到生產環境中,從而處理 AI 流程的資料,並響應使用者的請求。這就是推理(inference)——模型對新資料執行預測的過程。推理的工作負載正急劇增加,這反映了訓練工作的大量增加,目前標準 CPU 伺服器已經無法滿足需求了。Facebook 正與 Esperanto、Intel、Marvell 和 Qualcomm 等多個合作伙伴合作,開發可在基礎設施上部署和擴充套件的推理 ASIC 晶片。這些晶片將為工作負載提供 INT8 半精度的運算,從而獲得理想的效能,同時也支援 FP16 單精度的運算,從而獲得更高的準確率。
整個推理伺服器的解決方案分為四個不同的部分,它們會利用已釋出到 OCP 的現有構建塊。利用現有元件可以加快開發進度,並通過通用性降低開發風險。該設計的四個主要組成部分為:
-
Kings Canyon 推理 M.2 模組
-
Twin Lakes 單插槽(single-socket)伺服器
-
Glacier Point v2 承載卡(carrier card)
-
Yosemite v2 機架
圖:AI 推理解決方案模組
圖:AI 推理解決方案連線模組圖解
在系統級別,每個伺服器都結合了 M.2 Kings Canyon 加速器和 Glacier Point v2 承載卡,後者主要連線到 Twin Lakes 伺服器。一般可以將兩組前面的元件安裝到更新的 Yosemite v2 機架中,然後通過多主機 NIC 連線到 TOR 交換機。更新版的 Yosemite sled 是目前現存 Yosemite v2 sled 的迭代升級,它將 Twin Lakes 主機的其他 PCIe 通道連線到 NIC,以獲得更高的網路頻寬。每個 Kings Canyon 模組都包含 ASIC、相關記憶體和其它支援元件,其中 CPU 主機通過 PCIe 通道與加速器模組通訊。Glacier Point v2 包括一個整合的 PCIe 交換機,允許伺服器同時訪問所有模組。
深度學習模型有很高的儲存要求。例如,SparseNN 模型具有非常大的嵌入表徵表,它會佔用好幾 GB 的儲存空間,並且還可能會持續增長。這樣的大模型可能不適合載入到單獨裝置的記憶體中,不論是 CPU 還是加速器都不行,所以這就要求在多個裝置記憶體上進行模型分割(model partitioning)。當資料位於另一個裝置的記憶體中時,分割將產生很多通訊成本。因此,好的圖分割(graph-partitioning)演算法將嘗試捕獲區域性的概念,從而降低通訊成本。
通過合適的模型分割,我們可以執行非常大的深度學習模型。例如 SparseNN 模型,如果單節點的記憶體能力不足以支援給定的模型,我們可以考慮在兩個節點中共享模型,並提升模型能訪問的記憶體量。這兩個節點可以通過多主機 NIC 連線,並支援高速資訊處理。這將增加整體的通訊成本,但我們可以利用跨多個嵌入表存在訪問差異的事實,相應地對錶進行排序而降低通訊延遲。
神經網路硬體加速器編譯器
ASIC 不執行通用程式碼,因為它們需要特定的編譯器才能將圖轉化為在這些加速器上執行的指令。Glow 編譯器的目標是將供應商的特定硬體從更高階的軟體堆疊中抽象出來,使基礎設施不受供應商限制。它接受來自框架(如 PyTorch 1.0)的計算圖,併為這些機器學習加速器生成高度優化的程式碼。
Glow 編譯器
使用 Mount Shasta 進行視訊轉碼
自 2016 年以來,Facebook Live 直播的平均數量每年翻一番。自 2018 年 8 月在全球推出以來,Facebook Watch 的月瀏覽量已經超過 4 億,每天有 7500 萬人使用。為了優化所有這些視訊,使其能適應多種網路環境,Facebook 生成了多個輸出質量和解析度(或位元率),這個過程稱為視訊轉碼。完成這個轉碼過程所需要的計算是高度密集型的,通用 CPU 無法滿足 Facebook 日益增長的視訊需要。為了走在需求的前面,Facebook 與博通和芯原合作,設計為轉碼負載進行優化的定製 ASIC。
視訊轉碼流程被分解為許多不同的步驟,下面將給出更詳細的介紹。這些步驟都是在今天的軟體中執行的,所以為了提高效率,Facebook 與供應商合作,為轉碼工作流程的每個階段建立了包含專用晶片的定製 ASIC。使用定製化的硬體來完成這些工作負載使得這一過程的能源使用更加高效,並支援實時 4K 60fps 流媒體等新功能。單個視訊編解碼器是標準化的,而且不經常修改,因此在這種情況下,定製晶片內在缺乏靈活性並不是一個顯著的缺點。
視訊轉碼的第一個階段稱為解碼,在解碼過程中,上傳的檔案被解壓,以獲得由一系列影象表示的原始視訊資料。然後,可以對這些未壓縮的影象進行操作,以更改它們的解析度(稱為縮放),接下來再次使用優化設定進行編碼,將它們重新壓縮到視訊流中。將輸出視訊與原始視訊進行比較,計算質量指標,這些指標代表了相對於原始上傳視訊的質量變化。一般所有的視訊都採取這種做法,以確保所用的編碼設定可以產生高質量的輸出。視訊編碼和解碼使用的標準稱為視訊編碼方式;H.264、VP9 和 AV1 是目前使用的主流編碼協議。
在 ASIC 上,除了每個軟體演算法都被晶片內的專用部件所取代外,其他步驟都是相同的。平均而言,Facebook 希望這一視訊加速器比其目前的伺服器效率高很多倍。他們希望業界的目標編碼在 10W 功耗內至少處理 2x 4K 解析度和 60fps 的並行輸入流。ASIC 還需要支援多種解析度(從 480p 到 60fps 的 4K)和多種編碼格式(從 H.264 到 AV1)。
視訊轉碼 ASIC 通常有以下主要邏輯塊:
-
解碼器:接收上傳的視訊;輸出解壓縮的原始視訊流
-
縮放器(Scaler):縮放解壓縮的視訊
-
編碼器:輸出壓縮(編碼)視訊
-
質量度量:衡量編碼步驟之後的視訊質量損失
-
PHY:晶片與外界的介面;連線到伺服器的 PCIe 和記憶體的 DDR
-
控制器:執行韌體並協調轉碼流程的通用塊
視訊轉碼解決方案基礎模組
與推理一樣,Facebook 利用現有的 OCP 構件在資料中心部署這些轉碼 ASIC。ASIC 將安裝在帶有整合散熱器的 M.2 模組上,因為這種常見的電氣外形可以在不同硬體平臺上重複利用。它們被安裝在 Glacier Point v2 (GPv2) 載體卡中,該載體卡可以容納多個 M.2 模組。這個 GPv2 載體卡具有和 Twin Lakes 伺服器一樣的物理外形,意味著它可以適配 Yosemite v2 機架,並在其中與 Twin Lakes 伺服器配對。
因為轉碼 ASIC 功耗低、體積小,Facebook 希望通過將盡可能多的晶片與單個伺服器相連線來節約成本。高密度的 GPv2 實現了這一點,同時還提供了足夠的冷卻能力來承受資料中心的執行溫度。
一旦完成軟體整合工作,Facebook 將平衡分佈在不同資料中心位置上異質硬體 fleet 的視訊轉碼工作負載。為了在與各種機器學習和視訊空間供應商的合作過程中擴大規模,他們還努力確保軟體以開放的形式開發,並推廣和採用通用的介面和框架。
參考內容:
https://venturebeat.com/2019/03/14/facebook-open-sources-hardware-for-ai-model-training-and-inference/
https://code.fb.com/data-center-engineering/accelerating-infrastructure/