Facebook 的產品和服務是由機器學習驅動的。強大的 GPU 已成爲關鍵推進因素之一,但它須要更多的硬件和軟件來爲數十億用戶提供服務。算法
在 Facebook 的 20 億用戶中,大多數人都不知道這項服務在多大程度上依賴人工智能來實現如此大規模的運營。Facebook 的產品,如新聞源、搜索和廣告都使用機器學習,而在幕後,它爲諸如面部識別和標籤、語言翻譯、語音識別、內容理解和異常檢測等服務提供支持,以發現虛假帳戶和使人反感的內容。服務器
數字是驚人的。總的來講,Facebook 的機器學習系統天天要處理超過 200 萬億次的預測和 50 億次的翻譯。Facebook 的算法天天都會自動刪除數百萬個虛假帳戶。微信
在今年的計算機架構國際研討會(International Symposium on Computer Architecture,ISCA)上,Facebook 人工智能基礎架構部門負責人 Kim Hazelwood 博士在一個主題演講中解釋了他們的服務是如何設計硬件和軟件來處理如此規模的機器學習的。她還敦促硬件和軟件架構師們不要光顧炒做,要爲機器學習開發「全棧解決方案」。Hazelwood 表示:「重要的是,咱們正在解決正確的問題,而不僅是作其餘人正在作的事情。」網絡
Facebook 的人工智能基礎架構須要處理各類各樣的工做負載。有些模型可能須要幾分鐘的訓練,而有些模型可能須要幾天甚至幾周的訓練。例如,新聞源和廣告使用的計算資源比其餘算法多 100 倍。所以,只要有可能,Facebook 就會使用「傳統的老式機器學習」,並且只有在絕對必要的時候纔會採用深度學習——多層感知器 (MLP)、卷積神經網絡 (CNN) 和遞歸神經網絡 (RNN/LSTM)。架構
該公司的人工智能生態系統包括三個主要組成部分:基礎架構、運行在頂層的工做流管理軟件,以及 PyTorch 等核心機器學習框架。框架
自 2010 年以來,Facebook 一直在設計本身的數據中心和服務器。現在,它運營着 13 個大型數據中心,其中 10 個在美國,3 個在海外。並不是全部這些數據中心都是相同的,由於它們是隨着時間而創建起來的,而且它們不存儲相同的數據,由於「最糟糕的事情是在每一個數據中心中複製全部數據。」Hazelwood 說,儘管如此,公司每一個季度都要「拔掉整個 Facebook 數據中心的插頭」,以確保數據的連續性。數據中心的設計是爲了用於處理峯值負載,這使得大約 50% 的機羣在一天中的某些時間處於空閒狀態,做爲「自由計算」,能夠用於機器學習。機器學習
Facebook 不使用單個服務器,而是在生產環境中,將數百個工做負載放入 buckets 中,併爲每種類型設計定製服務器。數據存儲在 Bryce Canyon 和 Lighting 存儲服務器上,訓練則在 Big Basin 服務器上,使用的是 Nvidia Tesla GPU,這些模型在 Twin Lakes 單至強服務器和 Tioga Pass 雙至強服務器上運行。Facebook 繼續對 Google 的 TPU 和微軟的 BrainWave FPGA 等專用硬件進行評估,但 Hazelwood 認爲,太多的投資集中在計算上,而對存儲尤爲是網絡的投入不夠,這與 Amdahl 定律相一致,可能會成爲許多工做負載的瓶頸。她補充說,人工智能芯片初創公司沒有把足夠的精力放在軟件上,這給機器學習工具和編譯器留下了巨大的機遇。工具
AI 前線注:Amdahl 定律,是計算機系統設計的重要定量原理之一,於 1967 年由 IBM360 系列機的主要設計者 Amdahl 首先提出。該定律是指:系統中對某一部件採用更快執行方式所能得到的系統性能改進程度,取決於這種執行方式被使用的頻率,或所佔總執行時間的比例。Amdahl 定律實際上定義了採起加強(加速)某部分功能處理的措施後可得到的性能改進或執行時間的加速比。簡單來講是經過更快的處理器來得到加速是由慢的系統組件所限制。性能
Facebook 本身的軟件棧包括 FBLearn,這是一套針對機器學習管道不一樣部分的三種管理和部署工具。FBLearner Store 用於數據處理和特徵提取,FBLearning Flow 用於管理訓練中涉及的步驟,FBLearner Prediction 用於在生產中部署模型。咱們的目標是解放 Facebook 的工程師,讓他們更有效率,專一於算法設計。學習
Facebook 之前使用過兩種機器學習框架:用於研究的 PyTorch 和用於生產的 Caffe。基於 Python 的 PyTorch 更容易使用,但 Caffe2 的性能更好。問題是,將模型從 PyTorch 移植到用於生產的 Caffe2 是一個耗時且麻煩的過程。Hazelwood 說,上個月,在 F8 開發者大會上,Facebook 宣佈,如今使用 PyTorch 1.0,因爲「在內部合併了它們」,這樣你就能享受到 PyTorch 的外觀,Caffe2 的性能。
這對於 ONNX(Open Neural Network Exchange)來講是合乎邏輯的第一步,這是由 Facebook、Microsoft 共同努力開發的一種開放格式,用於優化構建在不一樣框架中的深度學習模型,並在各類硬件上運行。咱們面臨的挑戰是,目前市面上已經有不少框架了:Google TensorFlow、Microsoft Cognitive Toolkit、Apache MXNet(深受 Amazon 青睞)……這些模型須要在各類不一樣的平臺上運行,如 Apple ML、Nvidia、Intel/Nervana 和 Qualcomm 的 Snapdragon Neural Engine 等。
在邊緣設備上運行模型有不少很好的理由,但手機尤爲具備挑戰性。世界上許多地區仍然幾乎沒有移動網絡,全球超過一半的地區使用的是 2012 年或更早的手機,他們使用各類硬件和軟件。Hazelwood 說,目前的旗艦手機和中檔手機的性能差別約爲 10 倍。她說:「你不能假設你爲之設計移動神經網絡的每一個人都在使用 iPhone X。」「在美國,這種狀況很是反常。」Facebook 的 Caffe2 Go 框架旨在壓縮模型以解決其中的一些問題。
深度學習時代已經到來,Hazelwood 說,有不少硬件和軟件問題亟須解決。行業花費大量的時間和金錢建設更快的硅片,但她說,咱們須要在應用 Proebsting 定律的軟件上進行平等的投資,編譯器的計算性能每 18 年只能翻一番,「請記住這一點,以便咱們不會再遇到安騰的另外一種狀況,」Hazelwood 開玩笑地說,安騰是 Intel 未失效的 IA-64 架構。Hazelwood 說,真正的機遇是解決人們還沒有致力構建具備平衡硬件和更好的軟件、工具和編譯器的端到端解決方案的問題。
原文連接:
https://www.zdnet.com/article/how-facebook-scales-ai/