近日 Facebook 研究團隊公開一篇 HPCA 2018 論文,作者包括 Caffe 作者賈揚清等人,深度揭示了Facebook 內(nèi)部支持機器學習的硬件和軟件基礎架構。Facebook 的幾乎所有的服務都廣泛應用機器學習,其中計算機視覺只占資源需求的一小部分。此外,F(xiàn)acebook依賴多種機器學習方法,包括但不限于神經(jīng)網(wǎng)絡。硬件方面,用CPU 做推理,CPU 和 GPU都用于訓練,并且進行大規(guī)模分布式訓練。
機器學習是 Facebook 的許多重要產(chǎn)品和服務的核心。這篇文章描述了 Facebook 在全球范圍里支持機器學習的硬件和軟件基礎架構。Facebook 的機器學習工作負載非常多樣化:在實踐中,不同的服務需要多種不同類型的模型。這種多樣性對系統(tǒng)堆棧里的所有層都有影響。此外,在 Facebook 上存儲的大部分數(shù)據(jù)都是通過機器學習流程傳輸?shù)?,這在向高性能分布式訓練流交付數(shù)據(jù)方面提出了嚴峻的挑戰(zhàn)。計算需求也很大,需要利用GPU和CPU平臺進行訓練,并將大量CPU容量用于實時推理。解決這些問題以及其他層出不窮的新挑戰(zhàn)需要各方面的努力,包括機器學習算法、軟件和硬件設計。
為20億用戶提供機器學習服務,F(xiàn)acebook如何處理計算和數(shù)據(jù)
截至2017年12月,F(xiàn)acebook 的用戶已經(jīng)超過20億人。過去幾年中,機器學習被應用于這個大規(guī)模的實際問題,形成了機器學習算法創(chuàng)新的良性循環(huán),為模型提供了大量訓練數(shù)據(jù),并在高性能計算機體系結構的助力下取得進步。在 Facebook 上,機器學習提供了幾乎所有用戶體驗方面的關鍵能力,包括News Feed,語音和文本翻譯,照片和實時視頻分類等。
Facebook 在這些服務中利用了各種各樣的機器學習算法,包括支持向量機,梯度提升決策樹和許多類型的神經(jīng)網(wǎng)絡。本文將描述在 Facebook 上支持機器學習的數(shù)據(jù)中心基礎架構的幾個重要方面?;A架構包括內(nèi)部的“ML-as-a-Service”流,開源機器學習框架和分布式訓練算法。從硬件角度來看,F(xiàn)acebook 利用大量的 CPU 和 GPU 平臺來訓練模型,以便在所需服務延遲時間內(nèi)支持必要的訓練頻率。對于機器學習推理,F(xiàn)acebook 主要依靠 CPU 來處理所有神經(jīng)網(wǎng)絡排名服務的主要功能,例如 News Feed,這些服務占據(jù)了所有計算負載的大部分。
Facebook 通過機器學習流程將所有存儲數(shù)據(jù)的很大一部分匯集起來,而且這個比例隨著時間的推移不斷增加,從而提高模型質量。機器學習服務所需的大量數(shù)據(jù)對 Facebook 數(shù)據(jù)中心的全球規(guī)模提出了挑戰(zhàn)。有幾種技術被用來高效地向模型提供數(shù)據(jù),包括數(shù)據(jù)饋送和訓練的解耦,數(shù)據(jù)/計算協(xié)同定位和網(wǎng)絡優(yōu)化。與此同時,F(xiàn)acebook 的規(guī)模也提供了獨特的機會。在非高峰期間,日負載周期為分布式訓練算法提供了大量可用的CPU。Facebook 的計算fleet遍布10個數(shù)據(jù)中心,規(guī)模也提供了災難恢復能力。災難恢復規(guī)劃是很重要的,因為及時交付新的機器學習模型對于 Facebook 的運營非常重要。
展望未來,F(xiàn)acebook 預計在現(xiàn)有的功能以及新的服務上,機器學習都將快速增長。對于部署這些服務的基礎架構的團隊來說,這種增長意味著更多挑戰(zhàn)。盡管在現(xiàn)有平臺上優(yōu)化基礎架構有好處,但我們?nèi)匀辉诜e極評估和創(chuàng)建新的硬件解決方案,同時保持算法創(chuàng)新。
關于 Facebook 的機器學習的主要見解:
機器學習在 Facebook 的幾乎所有的服務中都有廣泛應用,計算機視覺只占資源需求的一小部分。
Facebook依賴多種機器學習方法,包括但不限于神經(jīng)網(wǎng)絡。
大量數(shù)據(jù)都是通過機器學習流程傳送,而這會在計算節(jié)點之外造成工程和效率方面的損失。
Facebook 目前在很大程度上依賴 CPU 做推理,CPU 和 GPU 都用于訓練,但從性能功耗比的角度看,它不斷對新的硬件解決方案進行原型設計和評估。
Facebook 的全球用戶規(guī)模以及相應的日活動模式導致大量的機器可以用于機器學習任務,例如大規(guī)模分布式訓練。
Facebook 上的機器學習
機器學習(ML)是指產(chǎn)品利用一系列輸入來構建一個調優(yōu)模型的實例,并利用該模型創(chuàng)建表示、預測或其他形式的有用信號。
圖1表示了這個過程,由以下步驟組成,依次執(zhí)行:
1)建立模型的訓練階段。這個階段通常是離線執(zhí)行的。
2)在生產(chǎn)中運行訓練模型的推理階段,并進行一個(一組)實時預測。這一階段是在線執(zhí)行的。
Facebook 上機器學習的一個顯著特點是受到可能用于訓練模型的海量數(shù)據(jù)的影響。這個數(shù)據(jù)的規(guī)模會產(chǎn)生很多英雄,涉及整個基礎架構。
利用機器學習的主要服務:
Facebook 的大部分產(chǎn)品和服務都利用機器學習,包括:
News Feed:排名算法讓用戶每次訪問 Facebook 時首先看到與他們最為相關的故事。
廣告(Ads):利用ML來向用戶定向顯示廣告。
搜索:在各種垂直領域提供專門的子搜索,例如視頻、照片、人物、事件等等。
Sigma:一個通用的分類和異常檢測框架,用于各種內(nèi)部應用,包括站點完整性,垃圾郵件檢測,支付,注冊,未經(jīng)授權的員工訪問以及事件推薦。
Lumos:從圖像及其內(nèi)容中提取高級屬性和嵌入,使算法能夠自動理解圖像。
Facer:是 Facebook 的面部檢測和識別框架。
語言翻譯:用于 Facebook 的內(nèi)容國際化服務。
除了上面提到的主要產(chǎn)品之外,還有更多的長尾服務利用各種形式的機器學習。產(chǎn)品和服務的長尾數(shù)量達數(shù)百個。
機器學習模型
所有基于機器學習的服務都使用“特征”(或輸入)來產(chǎn)生量化輸出。在 Facebook 上使用的機器學習算法包括 Logistic回歸(LR),支持向量機(SVM),梯度提升決策樹(GBDT)和深度神經(jīng)網(wǎng)絡(DNN)。LR和SVM是用于訓練和使用預測的有效方法。GBDT可以通過額外的計算資源來提高準確性。DNN是最具表現(xiàn)力的,可能提供最高的準確性,但是利用的資源也最多(至少比LR和SVM等線性模型需要的計算量多一個數(shù)量級)。這三種類型都對應具有越來越多的自由參數(shù)的模型,這些模型必須通過對有標簽的輸入樣本預測精度進行優(yōu)化來訓練。
在深度神經(jīng)網(wǎng)絡中,有3個常用的類:多層感知器(MLP),卷積神經(jīng)網(wǎng)絡(CNN)和遞歸神經(jīng)網(wǎng)絡(RNN / LSTM)。MLP網(wǎng)絡通常用于結構化輸入特征(通常是排名),CNN作為空間處理器使用(通常用于圖像處理),而RNN / LSTM網(wǎng)絡是序列處理器(通常用于語言處理)。表1說明了這些ML模型類型和對應的產(chǎn)品/服務。
表1:利用機器學習算法的產(chǎn)品/服務
Facebook 里的 ML-as-a-Service
Facebook 有一些內(nèi)部的平臺和工具包,旨在簡化產(chǎn)品中利用機器學習的任務。主要包括FBLearner,Caffe2 和 PyTorch。FBLearner 是三個工具的suit,每個工具都專注于機器學習流程的不同部分。FB Learner 利用內(nèi)部作業(yè)調度程序在共享的 GPU 和 CPU 池上分配資源和調度作業(yè),如圖1所示。Facebook上的大多數(shù)ML訓練都是通過FBLearner平臺運行的。這些工具和平臺一起工作,旨在提高ML工程師的效率,幫助他們專注于算法創(chuàng)新。
FBLearner Feature Store:Feature Store 本質上是一個可用于訓練和實時預測的幾個特征生成器的目錄(catalog),它可以作為一個marketplace,多個團隊可以使用它來共享和發(fā)現(xiàn)特征。
FBLearner Flow:是 Facebook 的機器學習平臺,用于模型訓練。
FBLearner Predictor:是 Facebook 的內(nèi)部推理引擎,它使用在 Flow 中訓練的模型來實時提供預測。
深度學習框架
對于深度學習,F(xiàn)acebook 使用兩個截然不同但協(xié)同作用的框架:針對研究優(yōu)化的 PyTorch,以及針對生產(chǎn)優(yōu)化的 Caffe2。
Caffe2:是 Facebook 的內(nèi)部生產(chǎn)框架,用于訓練和部署大規(guī)模機器學習模型。Caffe2 專注于產(chǎn)品所需的幾個關鍵特性:性能,跨平臺支持,以及基本機器學習算法的覆蓋范圍,例如卷積神經(jīng)網(wǎng)絡(CNN),遞歸神經(jīng)網(wǎng)絡(RNN)和多層感知器(MLP)等,這些算法具有稀疏或密集的連接,高達數(shù)百億的參數(shù)。Caffe2 的設計涉及模塊化方法,在所有后端實現(xiàn)(CPU,GPU和加速器)之間共享統(tǒng)一的圖形表示。獨立的執(zhí)行引擎為不同的圖形執(zhí)行需求提供服務,Caffe2 在不同的平臺上引入第三方庫(例如,cuDNN,MKL 和 Metal),以在不同平臺上實現(xiàn)最佳運行時間。
PyTorch:是 Facebook 在AI研究領域的首選框架。它有一個前端,側重于靈活性,debug和動態(tài)神經(jīng)網(wǎng)絡,以進行快速實驗。
ONNX:全稱Open Neural Network Exchange(開放神經(jīng)網(wǎng)絡交換格式),是一種以標準方式表示深度學習模型的格式,以實現(xiàn)跨不同框架的互操作性。
Facebook 上機器學習的硬件資源
(詳細解析見論文原文)
圖2:基于CPU的計算服務器
圖3:Big Basin GPU服務器設計,包括一個3U機箱的8個GPU。
表2:用于各種工作負載的脫機訓練使用的頻率、持續(xù)時間和資源。
表3:在線推理工作負載的資源需求。
圖4:2017年9月19日的24小時里,F(xiàn)acebook的所有fleet的日負荷。
結論
基于機器學習的工作負載越來越重要,其影響涵蓋了系統(tǒng)堆棧的所有部分。對此,計算機體系結構界對如何最好地應對已經(jīng)出現(xiàn)的挑戰(zhàn)表現(xiàn)出越來越大的關注。雖然以前的工作圍繞有效地處理ML訓練和推理的必要計算而展開,但是考慮到在解決方案被大規(guī)模應用時出現(xiàn)的額外挑戰(zhàn),情況會改變。
在 Facebook,我們發(fā)現(xiàn)了幾個關鍵因素,這些因素在我們的數(shù)據(jù)中心基礎架構的設計過程中起決定性作用:數(shù)據(jù)與計算機協(xié)同定位的重要性,處理各種ML工作負載的重要性,不僅僅是計算機視覺, 以及由于日計算周期的閑置容量而產(chǎn)生的機會。我們在設計開源硬件的端到端解決方案時,考慮了上述每個因素,以及平衡性能和可用性的開源軟件生態(tài)系統(tǒng)。這些解決方案為今天服務超過21億人的大規(guī)模機器學習工作負載提供了強大的動力,同時也反映了機器學習算法和系統(tǒng)設計方面專家的跨學科努力。
-
Facebook
+關注
關注
3文章
1429瀏覽量
54610 -
機器學習
+關注
關注
66文章
8349瀏覽量
132315 -
深度學習
+關注
關注
73文章
5463瀏覽量
120890
原文標題:深入Facebook機器學習部門:服務、模型、框架和硬件(賈揚清等HPCA論文)
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論