天天看點

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

機器學習是 Facebook 的許多重要産品和服務的核心。這篇文章描述了 Facebook 在全球範圍裡支援機器學習的硬體和軟體基礎架構。Facebook 的機器學習工作負載非常多樣化:在實踐中,不同的服務需要多種不同類型的模型。這種多樣性對系統堆棧裡的所有層都有影響。此外,在 Facebook 上存儲的大部分資料都是通過機器學習流程傳輸的,這在向高性能分布式訓練流傳遞資料方面提出了嚴峻的挑戰。計算需求也很大,需要利用GPU和CPU平台進行訓練,并将大量CPU容量用于實時推理。解決這些問題以及其他層出不窮的新挑戰需要各方面的努力,包括機器學習算法、軟體和硬體設計。

為20億使用者提供機器學習服務,Facebook如何處理計算和資料

截至2017年12月,Facebook 的使用者已經超過20億人。過去幾年中,機器學習被應用于這個大規模的實際問題,形成了機器學習算法創新的良性循環,為模型提供了大量訓練資料,并在高性能計算機體系結構的助力下取得進步。在 Facebook 上,機器學習提供了幾乎所有使用者體驗方面的關鍵能力,包括News Feed,語音和文本翻譯,照片和實時視訊分類等。

Facebook 在這些服務中利用了各種各樣的機器學習算法,包括支援向量機,梯度提升決策樹和許多類型的神經網絡。本文将描述在 Facebook 上支援機器學習的資料中心基礎架構的幾個重要方面。基礎架構包括内部的“ML-as-a-Service”流,開源機器學習架構和分布式訓練算法。從硬體角度來看,Facebook 利用大量的 CPU 和 GPU 平台來訓練模型,以便在所需服務延遲時間内支援必要的訓練頻率。對于機器學習推理,Facebook 主要依靠 CPU 來處理所有神經網絡排名服務的主要功能,例如 News Feed,這些服務占據了所有計算負載的大部分。

Facebook 通過機器學習流程将所有存儲資料的很大一部分彙集起來,而且這個比例随着時間的推移不斷增加,進而提高模型品質。機器學習服務所需的大量資料對 Facebook 資料中心的全球規模提出了挑戰。有幾種技術被用來高效地向模型提供資料,包括資料饋送和訓練的解耦,資料/計算協同定位和網絡優化。與此同時,Facebook 的規模也提供了獨特的機會。在非高峰期間,日負載周期為分布式訓練算法提供了大量可用的CPU。Facebook 的計算fleet遍布10個資料中心,規模也提供了災難恢複能力。災難恢複規劃是很重要的,因為及時傳遞新的機器學習模型對于 Facebook 的營運非常重要。

展望未來,Facebook 預計在現有的功能以及新的服務上,機器學習都将快速增長。對于部署這些服務的基礎架構的團隊來說,這種增長意味着更多挑戰。盡管在現有平台上優化基礎架構有好處,但我們仍然在積極評估和建立新的硬體解決方案,同時保持算法創新。

關于 Facebook 的機器學習的主要見解:

機器學習在 Facebook 的幾乎所有的服務中都有廣泛應用,計算機視覺隻占資源需求的一小部分。

Facebook 依賴多種機器學習方法,包括但不限于神經網絡。

大量資料都是通過機器學習流程傳送,而這會在計算節點之外造成工程和效率方面的損失。

Facebook 目前在很大程度上依賴 CPU 做推理,CPU 和 GPU 都用于訓練,但從性能功耗比的角度看,它不斷對新的硬體解決方案進行原型設計和評估。

Facebook 的全球使用者規模以及相應的日活動模式導緻大量的機器可以用于機器學習任務,例如大規模分布式訓練。

Facebook 上的機器學習

機器學習(ML)是指産品利用一系列輸入來建構一個調優模型的執行個體,并利用該模型建立表示、預測或其他形式的有用信号。

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

圖1表示了這個過程,由以下步驟組成,依次執行:

1)建立模型的訓練階段。這個階段通常是離線執行的。

2)在生産中運作訓練模型的推理階段,并進行一個(一組)實時預測。這一階段是線上執行的。

Facebook 上機器學習的一個顯着特點是受到可能用于訓練模型的海量資料的影響。這個資料的規模會産生很多英雄,涉及整個基礎架構。

利用機器學習的主要服務:

Facebook 的大部分産品和服務都利用機器學習,包括:

News Feed:排名算法讓使用者每次通路 Facebook 時首先看到與他們最為相關的故事。

廣告(Ads):利用ML來向使用者定向顯示廣告。

搜尋:在各種垂直領域提供專門的子搜尋,例如視訊、照片、人物、事件等等。

Sigma:一個通用的分類和異常檢測架構,用于各種内部應用,包括站點完整性,垃圾郵件檢測,支付,注冊,未經授權的員工通路以及事件推薦。

Lumos:從圖像及其内容中提取進階屬性和嵌入,使算法能夠自動了解圖像。

Facer:是 Facebook 的面部檢測和識别架構。

語言翻譯:用于 Facebook 的内容國際化服務。

語音識别:是将音頻流轉換成文本的服務。

除了上面提到的主要産品之外,還有更多的長尾服務利用各種形式的機器學習。産品和服務的長尾數量達數百個。

機器學習模型

所有基于機器學習的服務都使用“特征”(或輸入)來産生量化輸出。在 Facebook 上使用的機器學習算法包括 Logistic回歸(LR),支援向量機(SVM),梯度提升決策樹(GBDT)和深度神經網絡(DNN)。LR和SVM是用于訓練和使用預測的有效方法。GBDT可以通過額外的計算資源來提高準确性。DNN是最具表現力的,可能提供最高的準确性,但是利用的資源也最多(至少比LR和SVM等線性模型需要的計算量多一個數量級)。這三種類型都對應具有越來越多的自由參數的模型,這些模型必須通過對有标簽的輸入樣本預測精度進行優化來訓練。

在深度神經網絡中,有3個常用的類:多層感覺器(MLP),卷積神經網絡(CNN)和遞歸神經網絡(RNN / LSTM)。MLP網絡通常用于結構化輸入特征(通常是排名),CNN作為空間處理器使用(通常用于圖像處理),而RNN / LSTM網絡是序列處理器(通常用于語言處理)。表1說明了這些ML模型類型和對應的産品/服務。

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

表1:利用機器學習算法的産品/服務

Facebook 裡的 ML-as-a-Service

Facebook 有一些内部的平台和工具包,旨在簡化産品中利用機器學習的任務。主要包括FBLearner,Caffe2 和 PyTorch。FBLearner 是三個工具的suit,每個工具都專注于機器學習流程的不同部分。FB Learner 利用内部作業排程程式在共享的 GPU 和 CPU 池上配置設定資源和排程作業,如圖1所示。Facebook上的大多數ML訓練都是通過FBLearner平台運作的。這些工具和平台一起工作,旨在提高ML工程師的效率,幫助他們專注于算法創新。

FBLearner Feature Store:Feature Store 本質上是一個可用于訓練和實時預測的幾個特征生成器的目錄(catalog),它可以作為一個marketplace,多個團隊可以使用它來共享和發現特征。

FBLearner Flow:是 Facebook 的機器學習平台,用于模型訓練。

FBLearner Predictor:是 Facebook 的内部推理引擎,它使用在 Flow 中訓練的模型來實時提供預測。

深度學習架構

對于深度學習,Facebook 使用兩個截然不同但協同作用的架構:針對研究優化的 PyTorch,以及針對生産優化的 Caffe2。

Caffe2:是 Facebook 的内部生産架構,用于訓練和部署大規模機器學習模型。Caffe2 專注于産品所需的幾個關鍵特性:性能,跨平台支援,以及基本機器學習算法的覆寫範圍,例如卷積神經網絡(CNN),遞歸神經網絡(RNN)和多層感覺器(MLP)等,這些算法具有稀疏或密集的連接配接,高達數百億的參數。Caffe2 的設計涉及子產品化方法,在所有後端實作(CPU,GPU和加速器)之間共享統一的圖形表示。獨立的執行引擎為不同的圖形執行需求提供服務,Caffe2 在不同的平台上引入第三方庫(例如,cuDNN,MKL 和 Metal),以在不同平台上實作最佳運作時間。

PyTorch:是 Facebook 在AI研究領域的首選架構。它有一個前端,側重于靈活性,debug和動态神經網絡,以進行快速實驗。

ONNX:全稱Open Neural Network Exchange(開放神經網絡交換格式),是一種以标準方式表示深度學習模型的格式,以實作跨不同架構的互操作性。

Facebook 上機器學習的硬體資源

(詳細解析見論文原文)

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

圖2:基于CPU的計算伺服器

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

圖3:Big Basin GPU伺服器設計,包括一個3U機箱的8個GPU。

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

表2:用于各種工作負載的脫機訓練使用的頻率、持續時間和資源。

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

表3:線上推理工作負載的資源需求。

深入Facebook機器學習部門:服務、模型、架構和硬體(賈揚清等HPCA論文)

圖4:2017年9月19日的24小時裡,Facebook的所有fleet的日負荷。

結論

基于機器學習的工作負載越來越重要,其影響涵蓋了系統堆棧的所有部分。對此,計算機體系結構界對如何最好地應對已經出現的挑戰表現出越來越大的關注。雖然以前的工作圍繞有效地處理ML訓練和推理的必要計算而展開,但是考慮到在解決方案被大規模應用時出現的額外挑戰,情況會改變。

在 Facebook,我們發現了幾個關鍵因素,這些因素在我們的資料中心基礎架構的設計過程中起決定性作用:資料與計算機協同定位的重要性,處理各種ML工作負載的重要性,不僅僅是計算機視覺, 以及由于日計算周期的閑置容量而産生的機會。我們在設計開源硬體的端到端解決方案時,考慮了上述每個因素,以及平衡性能和可用性的開源軟體生态系統。這些解決方案為今天服務超過21億人的大規模機器學習工作負載提供了強大的動力,同時也反映了機器學習算法和系統設計方面專家的跨學科努力。

原文釋出時間為:2017-12-19

本文作者:劉小芹

本文來自雲栖社群合作夥伴新智元,了解相關資訊可以關注“AI_era”微信公衆号

繼續閱讀