從數據中心基礎設施的視角來看 Facebook 機器學習的應用

據國外媒體報道,Facebook 的 20 億用戶中,絕大多數人不清楚 Facebook 有多少服務在多大程度上依靠人工智能來運作。更沒多少人知道,在龐大的 Facebook 帝國,機器學習佔有多大的分量。今天,我們翻譯了 Hazelwood 等人撰寫的文章,從數據中心基礎設施的角度,來窺視在 Facebook 內部的機器學習應用的情況。希望這篇文章能夠起到管中窺豹、拋磚引玉的作用。

更多幹貨內容請關注微信公衆號“AI前線”(ID:ai-front)

這是一種奇妙的體驗:機器學習幾乎滲透到業務的每一個環節,從頭到尾貫穿了整個堆棧。回顧過去十年來,軟件系統在這方面已經發生了這麼多根本性的變化,真讓人感到驚訝啊!

在 Facebook,機器學習到底有多普及呢?

  • “在 Facebook,機器學習提供了驅動用戶體驗幾乎所有方面的關鍵能力…… 機器學習廣泛應用於幾乎所有的服務。”

  • “Facebook 通過機器學習管道彙集了所有存儲數據的大部分,隨着時間的推移,這一比例還在不斷增加,以提高模型的質量。”

  • “展望未來,Facebook 預計現有的和新增的服務應用的機器學習將會快速增長…… 隨着時間的推移,大多數服務顯示出利用更多用戶數據的趨勢…… 訓練數據集有持續、有時是急劇增長的趨勢。”

現代用戶體驗越來越受到機器學習模型的支持,而這些模型的質量直接取決於爲其提供數據的數量和質量:“對於 Facebook 的許多機器學習模型來說,能否取得成功,要取決於廣泛、高質量數據的可用性。” 數據(當然是相關數據)是現代公司能夠擁有的最有價值的資產之一。

正如我們上個月看到的文章 Continuum:a platform for cost-aware low-latency continual learning(《Continuum:成本感知低延遲持續學習的平臺》)所講的那樣,將最新數據納入到模型中的延遲也非常重要。在這篇文章中有一段寫得很好,作者研究了在一段時間內失去訓練模型的能力以及必須滿足陳舊模型的請求的影響。例如,社區誠信團隊依靠經過頻繁訓練的模型來跟上對手,尋找試圖繞過 Facebook 保護並向用戶展示令人反感的內容的不斷變化的方式。在這裏,訓練迭代需要幾天的時間。更依賴於將最近的數據合併到模型中的是消息來源(News Feed)排名。“陳舊的消息來源模型對質量有可衡量的影響。” 如果我們看一看業務最核心的部分:廣告排名模型,“我們就會瞭解到,利用陳舊的機器學習模型的影響,是以小時爲單位來衡量的。換言之,對於這個模型來說,使用一天比使用一個小時要槽糕得多。” 該文章這段的結論之一是,訓練工作負載的災難恢復和高可用性非常重要。(另一個練習混沌工程的地方。)

爲了有助於理解這種普遍影響,只需看看 Facebook 上使用的一些機器學習的例子即可。

在 Facebook 使用機器學習的例子

  • 消息來源中的故事排名是通過機器學習模型完成的。

  • 通過機器學習模型確定向給定用戶顯示哪些廣告:“廣告模型經過訓練,以瞭解用戶特徵、用戶背景、先前的交互和廣告屬性如何最能預測單擊廣告、訪問網站和 / 或購買產品的可能性。”

  • 各種各樣的搜索引擎 (例如視頻、照片、人物、事件等等) 都是由機器學習模型驅動的,而一個整體的分類器模型位於所有這些引擎之上,以決定對於任何給定的請求應該搜索哪些垂直領域。

  • Facebook 的一般分類和異常檢測框架 Sigma 用於許多內部應用程序,包括網站完整性、垃圾郵件檢測、支付、註冊、未授權員工訪問、廣告事件建議。Sigma“每天都有數百種不同的模型在生產中運行”。

  • Lumos 從圖像中提取屬性和嵌入。(我不確定 Lumos 和 Rosetta 的關係)

  • Facer 是 Facebook 的人臉檢測和識別框架。

  • 超過 45 種源語言和目標語言之間的翻譯,由每種語言對特有的模型提供支持,目前支持大約 2000 種翻譯方向。每天大約有 45 億份翻譯後的帖子。

  • 語音識別模型將音頻流轉換成文本,爲視頻提供自動字幕。

而這些只是亮點……

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

AI 前線注:“長尾”(long-tail)這一概念是由 Chris Anderson 在 2004 年發表的《The Long Tail》一文中最早提出的,他通過對 Amazon、iTunes 等電子商務零售商的銷售數據進行研究,發現了一種符合統計規律中大數定律的現象。這種現象恰如價值、品種而爲座標上的一條需求曲線,向代表 “品種” 的橫軸盡頭延伸,一直沒有墜落至零點。這種曲線在統計學中被稱作 “長尾分佈”。因爲相對頭部來講,它的尾部特別長,就好像拖着一條長長的尾巴。“長尾” 也是因此而得名的。

常用的模型有哪些?

Facebook 使用的主要機器學習算法包括邏輯迴歸、支持向量機、梯度提升決策樹(gradient boosted decision trees)和 DNN。在 DNN 家族中,MLP 用於對結構化數據進行操作(如排序),CNN 用於空間任務(如圖像處理),RNN/LSTM 用於序列處理(如語言處理)。

圖片

從研究到生產:PyTorch,Caffe2 和 FBLearner

Facebook 內部的 FBLearner 工具套件包括一個feature store(特徵存儲庫),它充當特徵生成器的目錄,可以用於訓練和實時預測:“它相當於一個市場,利用它,多個團隊可以共享和發現特徵。”FBLearner Flow 基於工作流描述對模型進行訓練,並內置了對實驗管理的支持。預測器使用 Flow 中訓練的模型來提供實時預測。

訓練模型的頻率遠低於推理——時間尺度各不相同,但通常是幾天左右。訓練也需要相對較長的時間來完成——通常是幾小時或幾天。同時,根據產品的不同,在線推理階段可能每天運行數萬億次,並且通常需要實時執行。在某些情況下,特別是在推薦系統方面,還以持續的方式在線進行額外的訓練。

在研究和探索方面,Facebook 使用 PyTorch:“它的前端專注於靈活性、調試和動態神經網絡,這使得快速實驗成爲可能。” 不過 PyTorch 並沒有針對生產和移動部署進行優化,因此一旦開發出一個模型,它就會被轉換爲 Caffe2,這是 Facebook 用於訓練和部署大規模機器學習模型的生產框架。

Facebook 並不是簡單重寫模型了事,而是積極構建 ONNX 工具鏈(Open Neural Network Exchange,開放神經網絡交換格式),用於跨不同框架和庫的深度學習模型的標準交換。

在 Facebook 內部,我們使用 ONNX 作爲將研究模型從 PyTorch 環境轉移到高性能生產環境的主要手段。

基礎設施的影響

訓練需要混合使用 CPU 和 GPU,而模型服務主要是由 CPU 完成的。對於訓練來說,隨着模型使用的數據量持續增長,數據源的局部性就會變得非常重要。用於機器學習訓練的 GPU 的物理位置是有意多樣化的,是爲了能夠提供彈性以及在丟失區域 / 數據中心時能夠繼續訓練的能力。

對於複雜的機器學習應用(如廣告和新聞來源排名),每個訓練任務需要獲取的數據量超過了數百 TB。

數據量也意味着分佈式訓練變得越來越重要。“這不僅是 Facebook 的一個活躍的研究領域,在一般人工智能研究領域中也是如此。” 在推理過程中,模型通常被設計成在一臺機器上運行,不過 Facebook 的主要服務也在不斷評估是否有必要開始擴展超出單臺機器容量的模型。

除了數據量之外,還需要許多複雜的處理邏輯來清理和歸一化數據,以實現高效傳輸和輕鬆學習。這對存儲、網絡和 cpu 提出了非常高的資源需求。數據(準備)工作負載和訓練工作負載在不同的機器上保持分離。

這兩個工作負載具有非常不同的特徵。數據工作負載非常複雜、特殊、依賴於業務,而且變化很快。另一方面,訓練工作量通常是有規律的、穩定的、高度優化的,而且更喜歡 “乾淨” 的環境。

硬件

摩爾定律(Moore’s law)可能已經失效了,但是,比較一下 Facebook 在 2015 年設計使用的 “Big Sur” GPU 服務器和 2017 年使用的 “Big Basin” GPU 服務器在這兩年內所取得的進展還是很有意思的:

  • 每 GPU 的單精度浮點運算從 7 萬億次到高達 15.7 萬億次。

  • 高帶寬內存提供 900 GB/s 的帶寬(爲 Big Sur 的 3.1 倍)。

  • 內存從 12 GB 增加到 16 GB。

  • 高帶寬 NVLink 間 GPU 通信。

  • 與 Big Sur 相比,在訓練 ResNet-50 圖像模型時,吞吐量提高了 300%。

未來的發展方向

機器學習工作負載的需求會影響到硬件選擇。例如,計算綁定機器學習工作負載受益於更廣泛的 SIMD 單元、專用卷積或矩陣乘法引擎以及專用協處理器。模型壓縮、量化和高帶寬內存等技術有助於在 SRAM 或 LLC 中保留模型,並在不執行時減輕影響。

爲了減少將最新數據合併到模型中的延遲,需要進行分佈式訓練,而分佈式訓練反過來又 “要求對網絡拓撲和調度進行仔細的協同設計,以有效地利用硬件,實現良好的訓練速度和質量。”

解決這些和其他新出現的挑戰仍然需要跨越機器學習算法、軟件和硬件設計的各種努力。

原文鏈接:
https://blog.acolyer.org/2018/12/17/applied-machine-learning-at-facebook-a-datacenter-infrastructure-perspective/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章