自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Facebook如何運用機器學(xué)習(xí)進行十億級用戶數(shù)據(jù)處理

大數(shù)據(jù)
2017年末,F(xiàn)acebook應(yīng)用機器學(xué)習(xí)組發(fā)布最新論文,對整個Facebook的機器學(xué)習(xí)軟硬件架構(gòu)進行了介紹??v覽全文,我們也可以從中對Facebook各產(chǎn)品的機器學(xué)習(xí)策略一窺究竟。論文中涉及到機器學(xué)習(xí)在全球規(guī)模(上億級數(shù)據(jù)處理)上的全新挑戰(zhàn),并給出了Facebook的應(yīng)對策略和解決思路,對相關(guān)行業(yè)和研究極其有意義。

2017年末,F(xiàn)acebook應(yīng)用機器學(xué)習(xí)組發(fā)布最新論文,對整個Facebook的機器學(xué)習(xí)軟硬件架構(gòu)進行了介紹。縱覽全文,我們也可以從中對Facebook各產(chǎn)品的機器學(xué)習(xí)策略一窺究竟。論文中涉及到機器學(xué)習(xí)在全球規(guī)模(上億級數(shù)據(jù)處理)上的全新挑戰(zhàn),并給出了Facebook的應(yīng)對策略和解決思路,對相關(guān)行業(yè)和研究極其有意義。

摘要

機器學(xué)習(xí)在Facebook的眾多產(chǎn)品和服務(wù)中都有著舉足輕重的地位。 本文將詳細(xì)介紹Facebook在機器學(xué)習(xí)方面的軟硬件基礎(chǔ)架構(gòu),如何來滿足其全球規(guī)模的運算需求。

Facebook的機器學(xué)習(xí)需求極其繁雜:需要運行大量不同的機器學(xué)習(xí)模型。這種復(fù)雜性已經(jīng)深深刻在Facebook系統(tǒng)堆棧的所有層面上。此外,F(xiàn)acebook存儲的所有數(shù)據(jù),有相當(dāng)大一部分會流經(jīng)機器學(xué)習(xí)管道,這樣的數(shù)據(jù)載荷為Facebook的分布式高性能訓(xùn)練流帶來巨大的壓力。

計算需求也非常緊張,在保持用于訓(xùn)練的GPU/CPU平臺的同時平衡出大量CPU容量用于實時推理,也帶來了異常緊張的。這些問題及其他難題的解決,仍有待我們在跨越機器學(xué)習(xí)算法、軟件和硬件設(shè)計上持久而不懈的努力。

引言

Facebook的使命是“為人類構(gòu)建社交關(guān)系賦能,讓世界聯(lián)系更加緊密”。截至2017年12月,F(xiàn)acebook已經(jīng)連接了全球超過20億的人口。同時,過去幾年來,機器學(xué)習(xí)同樣在這樣一種全球尺度的實際問題上進行著一場革命,包括在機器學(xué)習(xí)算法創(chuàng)新方面的良性循環(huán),用于模型訓(xùn)練的海量數(shù)據(jù)以及高性能計算機體系結(jié)構(gòu)的進步。

在Facebook上,機器學(xué)習(xí)幾乎在提升用戶體驗的所有層面都發(fā)揮著關(guān)鍵作用,包括諸如新聞推送語音和文本翻譯以及照片和實時視頻分類的排名等服務(wù)。

Facebook在這些服務(wù)中用到了各種各樣的機器學(xué)習(xí)算法,包括支持向量機,梯度boosted決策樹和許多類型的神經(jīng)網(wǎng)絡(luò)。本文將介紹Facebook的數(shù)據(jù)中心架構(gòu)支持機器學(xué)習(xí)需求的幾個重要層面。其架構(gòu)包括了內(nèi)部的“ML-as-a-Service”流,開源機器學(xué)習(xí)框架,和分布式訓(xùn)練算法。

從硬件角度來看,F(xiàn)acebook利用了大量的CPU和GPU平臺來訓(xùn)練模型,以便在所需的服務(wù)延遲時間內(nèi)支持模型的訓(xùn)練頻率。對于機器學(xué)習(xí)推理過程,F(xiàn)acebook主要依靠CPU來處理所有主要的服務(wù),而其中神經(jīng)網(wǎng)絡(luò)排名服務(wù)(比如新聞推送)占據(jù)著所有計算負(fù)載的大頭。

Facebook所存儲的海量數(shù)據(jù)中,有一大部分要流經(jīng)機器學(xué)習(xí)管道,并且為了提高模型質(zhì)量,這一部分的數(shù)據(jù)量還在隨著時間推移不斷增加。提供機器學(xué)習(xí)服務(wù)所需的大量數(shù)據(jù)成為了Facebook的數(shù)據(jù)中心將要在全球規(guī)模上面臨的挑戰(zhàn)。

目前已有的可被用來向模型高效地提供數(shù)據(jù)的技術(shù)有,數(shù)據(jù)反饋和訓(xùn)練的解耦操作,數(shù)據(jù)/計算協(xié)同定位和網(wǎng)絡(luò)優(yōu)化。與此同時,F(xiàn)acebook公司這樣大的計算和數(shù)據(jù)規(guī)模自身還帶來了一個獨特的機會。在每天的負(fù)載周期內(nèi),非高峰期都會空閑出大量可以用來進行分布式訓(xùn)練算法的CPU。

Facebook的計算集群(fleet)涉及到數(shù)十個數(shù)據(jù)中心,這樣大的規(guī)模還提供了一種容災(zāi)能力。及時交付新的機器學(xué)習(xí)模型對于Facebook業(yè)務(wù)的運營是非常重要的,為了保證這一點,容災(zāi)規(guī)劃也至關(guān)重要。

展望未來,F(xiàn)acebook希望看到其現(xiàn)有的和新的服務(wù)中的機器學(xué)習(xí)使用頻率快速增長。當(dāng)然,這種增長也將為負(fù)責(zé)這些服務(wù)架構(gòu)的團隊在全球規(guī)模的拓展性上帶來更加嚴(yán)峻的挑戰(zhàn)。盡管在現(xiàn)有平臺上優(yōu)化基礎(chǔ)架構(gòu)對公司是一個重大的機遇,但我們?nèi)匀辉诜e極評估和摸索新的硬件解決方案,同時保持對于算法創(chuàng)新的關(guān)注。

本文(Facebook對機器學(xué)習(xí)的看法)的主要內(nèi)容包括:

  • 機器學(xué)習(xí)正在被廣泛應(yīng)用在Facebook幾乎所有的服務(wù),而計算機視覺只占資源需求的一小部分。
  • Facebook所需的大量機器學(xué)習(xí)算法極其繁雜,包括但不限于神經(jīng)網(wǎng)絡(luò)
  • 我們的機器學(xué)習(xí)管道正在處理海量的數(shù)據(jù),而這會帶來計算節(jié)點之外的工程和效率方面的挑戰(zhàn)。
  • Facebook目前的推理過程主要依靠CPU,訓(xùn)練過程則是同時依靠CPU和GPU。但是從性能功耗比的角度來看,應(yīng)當(dāng)不斷對新的硬件解決方案進行摸索和評估。
  • 全球用戶用來使用Facebook的設(shè)備每天都可達數(shù)億臺,而這會就會提供大量可以用于機器學(xué)習(xí)任務(wù)的機器,例如用來進行大規(guī)模的分布式訓(xùn)練。

Facebook的機器學(xué)習(xí)

機器學(xué)習(xí)(ML)是指利用一系列輸入來建立一個可調(diào)模型,并利用該模型創(chuàng)建一種表示,預(yù)測或其他形式的有用信號的應(yīng)用實例。

 

圖片描述
圖1 Facebook的機器學(xué)習(xí)流程和架構(gòu)示例

圖1所示的流程由以下步驟組成,交替執(zhí)行:

  • 建立模型的訓(xùn)練階段。這個階段通常離線運行。
  • 在應(yīng)用中運行訓(xùn)練模型的推理階段,并進行(一組)實時預(yù)測。這個階段是在線執(zhí)行的。
  • 模型進行訓(xùn)練的頻率要比推理少得多——推理的時間規(guī)模雖然在不斷變化,但一般在幾天左右。訓(xùn)練也需要相當(dāng)長的時間來完成,通常是幾個小時或幾天。同時,根據(jù)產(chǎn)品實際需求不同,在線推理階段每天可能運行達數(shù)十萬次,而且一般需要實時進行。在某些情況下,特別是對于推薦系統(tǒng),還需要以這樣連續(xù)的方式在線進行額外的訓(xùn)練。

在Facebook,機器學(xué)習(xí)的一個顯著特征就是有可用于模型訓(xùn)練的海量數(shù)據(jù)。這個數(shù)據(jù)的規(guī)模會帶來很多涉及到整個機器學(xué)習(xí)架構(gòu)的影響。

使用機器學(xué)習(xí)的主要服務(wù)

消息推送

消息推送排名算法能夠使用戶在每次訪問Facebook時,最先看到對他們來講最重要的事情。一般模型會通過訓(xùn)練來確定影響內(nèi)容排序的各種用戶和環(huán)境因素。之后,當(dāng)用戶訪問Facebook時,該模型會從數(shù)千個候選中生成一個最佳推送,它是一個圖像和其他內(nèi)容的個性化集合,以及所選內(nèi)容的最佳排序。

廣告

廣告系統(tǒng)利用機器學(xué)習(xí)來確定向特定用戶顯示什么樣的廣告。通過對廣告模型進行訓(xùn)練,我們可以了解用戶特征,用戶上下文,以前的互動和廣告屬性,進而學(xué)習(xí)預(yù)測用戶在網(wǎng)站上最可能點擊的廣告。之后,當(dāng)用戶訪問Facebook時,我們將輸入傳遞進訓(xùn)練好的模型運行,就能立馬確定要顯示哪些廣告。

搜索

搜索會針對各種垂直類型(例如,視頻,照片,人物,活動等)啟動一系列特定的子搜索進程。分類器層在各類垂直類型的搜索之前運行,以預(yù)測要搜索的是垂直類型中的哪一個,否則這樣的垂直類型搜索將是無效的。分類器本身和各種垂直搜索都包含一個訓(xùn)練的離線階段,和一個運行模型并執(zhí)行分類和搜索功能的在線階段。

Sigma

Sigma是一個分類和異常檢測通用框架,用于監(jiān)測各種內(nèi)部應(yīng)用,包括站點的完整性,垃圾郵件檢測,支付,注冊,未經(jīng)授權(quán)的員工訪問以及事件推薦。Sigma包含了在生產(chǎn)中每天都要運行的數(shù)百個不同的模型,并且每個模型都會被訓(xùn)練來檢測異常或更一般地分類內(nèi)容。

Lumos

Lumos能夠從圖像及其內(nèi)容中提取出高級屬性和映射關(guān)系,使算法能夠自動理解它們。這些數(shù)據(jù)可以用作其他產(chǎn)品和服務(wù)的輸入,比如通過文本的形式。

Facer

Facer是Facebook的人臉檢測和識別框架。給定一張圖像,它首先會尋找該圖像中所有的人臉。然后通過運行針對特定用戶的人臉識別算法,來確定圖中的人臉是否是該用戶的好友。Facebook通過該服務(wù)為用戶推薦想要在照片中標(biāo)記的好友。

語言翻譯

語言翻譯是涉及Facebook內(nèi)容的國際化交流的服務(wù)。Facebook支持超過45種語言之間的源語言或目標(biāo)語言翻譯,這意味著Facebook支持2000多個翻譯方向,比如英語到西班牙語,阿拉伯語到英語。通過這2000多個翻譯通道,F(xiàn)acebook每天提供4.5B字的翻譯服務(wù),通過翻譯用戶的消息推送,F(xiàn)acebook每天可為全球6億人減輕語言障礙。目前,每種語言對方向都有其自己的模型,但是我們也正在考慮多語言模型[6]。

語音識別

語音識別是將音頻流轉(zhuǎn)換成文本的服務(wù)。它可以為視頻自動填補字幕。目前,大部分流媒體都是英文的,但在未來其他語言的識別也將得到支持。另外,非語言的音頻文件也可以用類似的系統(tǒng)(更簡單的模型)來檢測。

除了上面提到的主要產(chǎn)品之外,還有更多的長尾服務(wù)也利用了各種形式的機器學(xué)習(xí)。 Facebook產(chǎn)品和服務(wù)的長尾數(shù)量達數(shù)百個。

機器學(xué)習(xí)模型

所有基于機器學(xué)習(xí)的服務(wù)都使用“特征”(或輸入)來產(chǎn)生量化的輸出。Facebook使用的機器學(xué)習(xí)算法包括Logistic回歸(LR),支持向量機(SVM),梯度提升決策樹(GBDT)和深度神經(jīng)網(wǎng)絡(luò)(DNN)。

LR和SVM在訓(xùn)練和預(yù)測方面非常有效。GBDT可以通過增加計算資源來提高準(zhǔn)確性。DNN是最具表達力的,能夠提供最高的準(zhǔn)確性,但利用的資源也是最多的(在計算量上,至少比LR和SVM等線性模型高出一個數(shù)量級)。

這三種模型的自由參數(shù)都在變得越來越多,必須通過使用帶標(biāo)簽的輸入示例來優(yōu)化預(yù)測的準(zhǔn)確性。

在深度神經(jīng)網(wǎng)絡(luò)中,有三類經(jīng)常使用的網(wǎng)絡(luò):多層感知器(MLP),卷積神經(jīng)網(wǎng)絡(luò)(CNN)和遞歸神經(jīng)網(wǎng)絡(luò)(RNN / LSTM)。MLP網(wǎng)絡(luò)通常運行在結(jié)構(gòu)化輸入特征(通常是排名)上,RNN / LSTM網(wǎng)絡(luò)一般用來處理時域的數(shù)據(jù),即用作序列處理器(通常是語言處理),相對的CNNs則是一種處理用來空間數(shù)據(jù)的工具(通常是圖像處理)。表I顯示了這些機器學(xué)習(xí)模型類型和產(chǎn)品/服務(wù)之間的映射關(guān)系。

 

圖片描述
表1 利用機器學(xué)習(xí)算法的產(chǎn)品或服務(wù)

Facebook中的ML-as-a-Service

為了簡化在產(chǎn)品中應(yīng)用機器學(xué)習(xí)的任務(wù),我們構(gòu)建了一些內(nèi)部平臺和工具包,包括FBLearner,Caffe2和PyTorch。FBLearner是三種工具(FBLearner Feature Store,F(xiàn)BLearner Flow,F(xiàn)BLearner Predictor)的套裝,其中每種工具分別負(fù)責(zé)機器學(xué)習(xí)管道上不同的部分。正如前面圖1顯示的那樣,它利用了一種內(nèi)部作業(yè)調(diào)度程序在GPU和CPU的共享資源池上分配資源和調(diào)度作業(yè)。Facebook大多數(shù)機器學(xué)習(xí)模型的訓(xùn)練過程都是在FBLearner平臺上進行的。這些工具和平臺被設(shè)計來幫助機器學(xué)習(xí)工程師提高效率,從而能夠?qū)W⒂谒惴▌?chuàng)新。

FBLearner Feature Store。任何機器學(xué)習(xí)建模任務(wù)的起點是收集和生成特征。 FBLearner Feature Store本質(zhì)上是一系列特征生成器的目錄,其特征生成器可以用于訓(xùn)練和實時預(yù)測,當(dāng)然它也可以作為多個團隊可以用來共享和尋找特征的公共空間(market place)。這樣以個特征列表對于剛開始使用機器學(xué)習(xí)的團隊來說是一個很好的平臺,同時也有助于在現(xiàn)有模型中應(yīng)用新特征。

FBLearner Flow是Facebook用于訓(xùn)練模型的機器學(xué)習(xí)平臺。Flow是一個管道管理系統(tǒng),它會執(zhí)行一個可以描述模型訓(xùn)練和/或評估所需步驟及其所需資源的工作流程(workflow)。這個工作流程由離散單元或操作符(operators)構(gòu)成,每個單元都有輸入和輸出。操作符之間的連接會通過跟蹤一個操作符到下一個操作符的數(shù)據(jù)流自動推理,F(xiàn)low則通過處理調(diào)度和資源管理來執(zhí)行工作流程。Flow還擁有一個可以用于實驗管理的工具和一個簡單的用戶界面,這個界面可以跟蹤每個workflow或?qū)嶒炆傻乃袠?gòu)件和指標(biāo),從而方便對比和管理這些實驗。

FBLearner Predictor是Facebook內(nèi)部的推理引擎,它可以使用在Flow中訓(xùn)練的模型來提供實時的預(yù)測。Predictor可以用作多租戶服務(wù),也可以用作集成在特定產(chǎn)品的后端服務(wù)中的庫。Facebook的很多產(chǎn)品團隊都在使用Predictor,而其中許多團隊都需要低延遲解決方案。Flow和Predictor之間的直接集成還有助于運行在線的實驗以及在生產(chǎn)中管理多個版本的模型。

深度學(xué)習(xí)框架

我們在Facebook上利用了兩種截然不同的協(xié)同框架來進行深度學(xué)習(xí):針對研究優(yōu)化的PyTorch和針對生產(chǎn)優(yōu)化的Caffe2。

Caffe2是Facebook的內(nèi)部生產(chǎn)框架,它用于訓(xùn)練和部署大規(guī)模的機器學(xué)習(xí)模型。Caffe2專注于產(chǎn)品所需的幾個關(guān)鍵特性:性能,跨平臺支持和基本的機器學(xué)習(xí)算法,如卷積神經(jīng)網(wǎng)絡(luò)(CNN),遞歸神經(jīng)網(wǎng)絡(luò)(RNN)和多層感知器(MLP)。這些網(wǎng)絡(luò)都具有稀疏或密集的連接以及高達數(shù)百億的參數(shù)。該框架的設(shè)計采用模塊化方法,在所有后端實現(xiàn)(CPU,GPU和加速器)之間共享統(tǒng)一的圖表示。為了在不同平臺上實現(xiàn)最佳的運行時間,Caffe2還抽象了包括cuDNN,MKL和Meta在內(nèi)的第三方庫。

PyTorch是Facebook在AI研究領(lǐng)域的首選框架。它的前端注重靈活性、調(diào)試以及動態(tài)神經(jīng)網(wǎng)絡(luò),能夠快速進行實驗。由于依賴于Python來執(zhí)行,它并沒有針對生產(chǎn)和移動端部署進行優(yōu)化。當(dāng)研究項目產(chǎn)生了有價值的結(jié)果時,模型就需要轉(zhuǎn)移到生產(chǎn)上。過去,在生產(chǎn)環(huán)境中,我們通過使用其他框架重寫產(chǎn)品環(huán)境的訓(xùn)練管道來完成模型轉(zhuǎn)移。最近Facebook開始構(gòu)建ONNX工具鏈來簡化這個轉(zhuǎn)移過程。比如,動態(tài)神經(jīng)網(wǎng)絡(luò)雖然被用于尖端的人工智能研究,但這些模型需要更長的時間才能被應(yīng)用于產(chǎn)品中。通過解耦框架,我們避免了的為滿足性能而設(shè)計更復(fù)雜的執(zhí)行引擎(比如Caffe2)的需求。此外,相比模型速度,研究人員在進行研究時更看重其靈活性。舉個栗子,在模型探索階段,性能下降30%是可以容忍的,尤其是在它具有易測驗和模型可視化的優(yōu)點時。但是相同的方法并不適合于生產(chǎn)。這種取舍原則在PyTorch和Caffe2的框架設(shè)計中也可以看到,PyTorch提供了良好的默認(rèn)參數(shù)和合理的性能,而Caffe2可以選擇使用異步圖執(zhí)行,量化權(quán)重和多個專用后端等特性來達到最佳性能。

雖然FBLearner平臺本身不限制使用什么框架,無論是Caffe2,TensorFlow,PyTorch還是其他的框架都可以,但我們的AI軟件平臺(AI Software Platform)團隊為了讓FBLearner能夠很好地與Caffe2集成還是進行了特定優(yōu)化??偟膩碚f,分離研究和生產(chǎn)框架(分別是PyTorch和Caffe2)使我們能夠在兩邊靈活運作,減少約束數(shù)量的同時還能增加新特性。

ONNX. 深度學(xué)習(xí)工具生態(tài)系統(tǒng)在整個行業(yè)還處于初級階段。 對于不同的問題子集,不同的工具有著不同的優(yōu)勢,并且在靈活性,性能和支持平臺方面有著不同的折衷,這就跟我們之前對PyTorch和Caffe2所描述的權(quán)衡一樣。 因此,在不同的框架或平臺之間交換訓(xùn)練模型的需求很大。 為了彌補這個缺陷,2017年末,F(xiàn)acebook與幾個合作伙伴共同推出了開放式神經(jīng)網(wǎng)絡(luò)交換(Open Neural Network Exchange , ONNX)。ONNX是一種以標(biāo)準(zhǔn)方式表示深度學(xué)習(xí)模型的格式,以便在不同的框架和供應(yīng)商優(yōu)化庫之間實現(xiàn)互操作。同時,它能滿足在不同的框架或平臺之間交換訓(xùn)練好的模型的需求。ONNX被設(shè)計為一種開放的規(guī)范,允許框架作者和硬件供應(yīng)商為其做出貢獻,并擁有框架和庫之間的各種轉(zhuǎn)換器。Facebook正在努力使ONNX成為所有這些工具之間的協(xié)作伙伴,而不是一種具有排他性的官方標(biāo)準(zhǔn)。

在Facebook內(nèi)部,ONNX是我們將研究模型從PyTorch環(huán)境轉(zhuǎn)移到Caffe2中的高性能生產(chǎn)環(huán)境的主要手段,它可以實現(xiàn)對模型的自動捕捉和固定部分的轉(zhuǎn)換。

在Facebook內(nèi)部,ONNX是我們將研究模型從PyTorch環(huán)境轉(zhuǎn)移到Caffe2中的高性能生產(chǎn)環(huán)境的主要手段。 ONNX提供了自動捕捉和轉(zhuǎn)換模型的靜態(tài)部分的能力。 我們有一個額外的工具鏈,通過將它們映射到Caffe2中的控制流原函數(shù)或者以C ++作為自定義操作符重新實現(xiàn)它們,會有助于將模型從Python轉(zhuǎn)移到動態(tài)圖。

機器學(xué)習(xí)的資源需求

鑒于機器學(xué)習(xí)在訓(xùn)練和推理(inference)的階段的資源要求、頻率和持續(xù)時長不同,我們將分別討論這兩個階段的細(xì)節(jié)和資源應(yīng)用。

Facebook硬件資源概況

Facebook的基礎(chǔ)架構(gòu)部門(Facebook Infrastructure)很早之前就開始為主要軟件服務(wù)構(gòu)建的高效平臺,包括針對每種主要工作負(fù)載的資源要求定制的服務(wù)器、存儲以及網(wǎng)絡(luò)支持。

 

圖片描述
圖2 基于CPU的計算服務(wù)器。單插槽服務(wù)器底座上有4個Monolake服務(wù)器卡,雙插槽服務(wù)器底座還一個雙插槽服務(wù)器,因此在2U機箱中共有三個雙插槽服務(wù)器。所以在2U形式的組合中共有12個服務(wù)器。

當(dāng)前Facebook提供約八種主要的計算和存儲架構(gòu),對應(yīng)八種主要服務(wù)。這些主要架構(gòu)類型足以滿足Facebook主要服務(wù)的資源要求。例如,圖2中展示了一個可以容納三個計算Sleds模塊的2U機架,這些模塊可支持兩種服務(wù)器類型。其中一種Sled模塊是單插槽CPU服務(wù)器(1xCPU),多用于Web層——一種主要看重吞吐量的無狀態(tài)服務(wù),因此可以使用能效更高的CPU(Broadwell-D處理器);它的DRAM(32GB)以及主板硬盤或閃存較少。

另一種Sled模塊是較大的雙插槽CPU服務(wù)器(2x高功率Broadwell-EP或Skylake SP CPU),它配有大量的DRAM ,常用于涉及大量計算和存儲的服務(wù)。

 

圖片描述
圖3 搭載8個GPU的Big Basin GPU服務(wù)器(3U機架)

由于我們訓(xùn)練的神經(jīng)網(wǎng)絡(luò)越來越大,并且越來越深,我們開發(fā)出了Big Basin GPU服務(wù)器(如圖3所示),這是我們2017年最新的GPU服務(wù)器。最初的Big Basin GPU服務(wù)器配置了八個互相連接的NVIDIA Tesla P100 GPU加速器,它使用NVIDIA NVLink形成了一個八CPU混合立方網(wǎng)格,后來,這種設(shè)計經(jīng)過改進之后又應(yīng)用到了V100 GPU上。

Big Basin是早前的Big Sur GPU的繼承者,后者是Facebook數(shù)據(jù)中心首個廣泛應(yīng)用的高性能AI計算平臺,用于支持于2015年開發(fā)并通過開放計算項目(Open Compute Project)發(fā)布的NVIDIA M40 GPU。

與Big Sur相比,V100 Big Basin每瓦電可實現(xiàn)的性能更高,這得益于單精度浮點運算單元——每個GPU的運算速度從7 teraflops(每秒萬億次浮點運算)增加到了15.7 teraflops,以及可提供900GB/s的帶寬的高帶寬顯存(HBM2)。這種新的架構(gòu)還使得半精度運算的速度快了一倍,進一步提高了運算吞吐量。

由于Big Basin的運算吞吐量更大,而且顯存也從12 GB增加到了16 GB,因此它可以用來訓(xùn)練比先前模型大30%的模型。高帶寬NVLink互連GPU通信還強化了分布式訓(xùn)練。在使用ResNet-50圖像分類模型進行的測試中,Big Basin的運算吞吐量比Big Sur要高出300%,借助它我們可以以更快的速度訓(xùn)練比以往更復(fù)雜的模型。

Facebook通過開放計算項目(Open Compute Project)公布了所有這些計算服務(wù)器的設(shè)計以及幾種存儲平臺。

離線訓(xùn)練的資源需求

當(dāng)前,不同的產(chǎn)品會使用不同的計算資源來完成各自的離線訓(xùn)練步驟。有些產(chǎn)品(例如Lumos)在GPU上完成所有的訓(xùn)練。其他產(chǎn)品(例如Sigama)則在雙插槽 CPU計算服務(wù)器完成所有的訓(xùn)練。諸如Facer這樣的產(chǎn)品采用雙階段訓(xùn)練流程,先在GPU上以很小的頻率(幾個月一次)隊通用的面部檢測和識別模型進行訓(xùn)練,然后在數(shù)千個1xCPU服務(wù)器上以很高的頻率對每個用戶的模型進行特定訓(xùn)練。

在本部分,我們將圍繞機器學(xué)習(xí)訓(xùn)練平臺、訓(xùn)練頻率和持續(xù)時長,具體介紹多種服務(wù)的細(xì)節(jié),并在表II中進行了總結(jié)。另外,我們還討論了數(shù)據(jù)集的趨勢以及這些趨勢對計算、內(nèi)存、存儲和網(wǎng)絡(luò)架構(gòu)的意義。

計算類型和相對數(shù)據(jù)來源的位置。離線訓(xùn)練既可以在CPU上完成,也可以在GPU上完成,這取決于服務(wù)本身。雖然在多數(shù)情況下,在GPU上訓(xùn)練出的模型在性能上要比在CPU上訓(xùn)練的模型好,但是CPU強大的現(xiàn)成運算能力使得它成為了一個非常有用的平臺。這一點在每天的非高峰期中尤為明顯,因為在這期間CPU資源本來就無法得到利用,后面的圖4會對此進行說明。下面我們給出了服務(wù)和計算資源訓(xùn)練模型的對應(yīng)關(guān)系:

  • 在GPU上訓(xùn)練模型的服務(wù): Lumos、語音識別、語言翻譯
  • 在CPU上訓(xùn)練模型的服務(wù):News Feed、Sigma
  • 在GPU和CPU上訓(xùn)練模型的服務(wù):Facer (在GPU上每幾年訓(xùn)練一次的通用模型,此類模型較為穩(wěn)定;在1xCPU上訓(xùn)練的用戶特定的模型,此類模型可以用于處理新圖像數(shù)據(jù))、搜索(利用多個獨立的垂直搜索引擎,使用可以進行預(yù)測的分類器啟動最合適的垂直搜索引擎)。

目前,GPU主要被用于離線訓(xùn)練,而不是向用戶提供實時數(shù)據(jù)。因為大多數(shù)GPU架構(gòu)都針對運算吞吐量進行了優(yōu)化,以克服延遲劣勢。同時由于訓(xùn)練過程嚴(yán)重依賴從大型數(shù)據(jù)生成庫中獲取的數(shù)據(jù),考慮到性能和帶寬方面的原因,GPU必須靠近數(shù)據(jù)來源。由于訓(xùn)練模型所使用的數(shù)據(jù)量增長的相當(dāng)快,GPU是否靠近數(shù)據(jù)來源變得越來越重要。

內(nèi)存、存儲和網(wǎng)絡(luò):從內(nèi)存儲器容量的角度看,CPU和GPU平臺都能為訓(xùn)練提供充足的存儲容量。即使對于Facer這樣的應(yīng)用,也可以在1xCPU上用32GB RAM訓(xùn)練用戶特定的SVM模型。如果可以盡可能地利用高效平臺以及多余的存儲容量,則平臺的總體訓(xùn)練效率會非常優(yōu)秀。

 

圖片描述
表II 不同服務(wù)的離線訓(xùn)練的頻率、持續(xù)時長和資源

機器學(xué)習(xí)系統(tǒng)依賴于使用實例數(shù)據(jù)的訓(xùn)練。Facebook 使用了機器學(xué)習(xí)數(shù)據(jù)管道中的大量數(shù)據(jù)。這使得計算資源趨向于靠近數(shù)據(jù)庫。

隨著時間的推移,大多數(shù)服務(wù)會顯示出利用累積的用戶數(shù)據(jù)的趨勢,這將導(dǎo)致這些服務(wù)更加依賴Facebook的其他服務(wù),并且需要更大的網(wǎng)絡(luò)帶寬來獲取數(shù)據(jù)。因此,只有在數(shù)據(jù)源所在地或附近部署巨大的存儲,以便從偏遠(yuǎn)的區(qū)域大規(guī)模轉(zhuǎn)移數(shù)據(jù),從而避免為了等待獲取更多樣本數(shù)據(jù)而關(guān)停訓(xùn)練管道。

在部署訓(xùn)練機器的位置時,我們也可以使用這種方法來避免訓(xùn)練機群給附近的存儲資源造成過大的壓力。

不同的服務(wù)在離線訓(xùn)練期間使用的數(shù)據(jù)量有很大的差別。幾乎所有服務(wù)的訓(xùn)練數(shù)據(jù)集都呈現(xiàn)出持續(xù)增長甚至大幅增長的趨勢。例如,有些服務(wù)在ROI降低之前會使用數(shù)百萬行數(shù)據(jù),其他服務(wù)則使用數(shù)百億行數(shù)據(jù)(100多TB),并且只受到資源的限制。

擴展(Scaling)考慮和分布式訓(xùn)練:訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程包含使用隨機梯度下降法(SGD)對參數(shù)權(quán)重進行優(yōu)化。這種方法用于擬合神經(jīng)網(wǎng)絡(luò),通過評價標(biāo)記實例的小子集(即“batch” 或“mini-batch”)來迭代更新權(quán)重。在數(shù)據(jù)并行中,網(wǎng)絡(luò)會生成多個模型副本(并行實例),以并行的處理多批數(shù)據(jù)。

當(dāng)使用一臺機器訓(xùn)練模型時,模型越大或更深都會帶來更好的訓(xùn)練效果,準(zhǔn)確度也會更高,但是訓(xùn)練此類模型往往需要處理更多的樣本。當(dāng)使用一臺機器進行訓(xùn)練時,我們可以通過增加模型副本的數(shù)量并在多個GPU上執(zhí)行數(shù)據(jù)并行,來最大化訓(xùn)練效果。

當(dāng)訓(xùn)練所需的數(shù)據(jù)量隨時間增加,硬件限制會導(dǎo)致總體訓(xùn)練延遲和收斂時間增加。不過,我們可以使用分布式訓(xùn)練來克服這些硬件限制,減少延遲。這個研究領(lǐng)域在Facebook和整個AI研究界相當(dāng)熱門。

一種普遍的假設(shè)是,在不同機器上實現(xiàn)數(shù)據(jù)并行需要使用一種專門的互連機制。但是,在我們對分布式訓(xùn)練的研究中,我們發(fā)現(xiàn)基于以太網(wǎng)(Ethernet)的網(wǎng)絡(luò)就可以提供近似線性的擴展能力。能否實現(xiàn)近似線性的擴展,與模型的大小和網(wǎng)絡(luò)帶寬有密切的關(guān)系。

如果網(wǎng)絡(luò)帶寬太小,執(zhí)行參數(shù)同步所花的時間比執(zhí)行梯度計算所花的時間還多,在不同機器上進行數(shù)據(jù)并行所帶來的優(yōu)勢也會大打折扣。使用50G的以太網(wǎng)NIC,我們可以用Big Basin服務(wù)器擴展視覺模型的訓(xùn)練,而且機器間的同步完全不會造成問題。

在所有情況下,更新都需要使用同步(每個副本都看到相同狀態(tài)),一致性(每個副本生成正確更新)和性能(子線性縮放)的技術(shù)來與其他副本共享,這可能會影響訓(xùn)練質(zhì)量。 例如,翻譯服務(wù)目前就不能在不降低模型質(zhì)量的情況下進行大批量的小批量(mini-batches)訓(xùn)練。

相反,如果使用特定的超參數(shù)設(shè)置,我們就可以在非常大的mini-batch數(shù)據(jù)集上訓(xùn)練圖像分類模型,并且可以擴展到256個以上的GPU上。

實驗證明,在Facebook的某個大型服務(wù)中,在5倍的機器上執(zhí)行數(shù)據(jù)并行可以實現(xiàn)4倍的訓(xùn)練效率(例如:訓(xùn)練一組訓(xùn)練時間超過4天的模型,以前總共可以訓(xùn)練100個不同模型的機器集群現(xiàn)在每天只能訓(xùn)練同樣的20個模型,訓(xùn)練效率降低了20%,但是潛在的工程進度等待時間從4天減少到了1天)。

如果模型變得超級大,這時候就可以使用并行訓(xùn)練,對模型的層進行分組和分布,以優(yōu)化訓(xùn)練效率,各機器間可以傳遞激活單元。優(yōu)化可能與網(wǎng)絡(luò)帶寬、延遲或平衡內(nèi)部機器限制有關(guān)。這會增加模型的端對端延遲,因此,每一時步(time step)內(nèi)原始性能的增強通常與步長(step)質(zhì)量的下降有關(guān)。這可能會進一步降低模型在每個步長的準(zhǔn)確度。各步長準(zhǔn)確度的下降最終會累積起來,這樣我們就可以得出并行處理的最佳步長數(shù)量。

DNN模型本身的設(shè)計使得它只能在一臺機器上運行,在推理階段,在機器間分割模型圖通常會導(dǎo)致機器與機器進行大量的溝通。但是Facebook的主要服務(wù)會不斷地權(quán)衡擴展模型的利與弊。這些考慮可以決定網(wǎng)絡(luò)容量需求的變化。

 

圖片描述
表 III 在線推理服務(wù)的資源要求

在線推理的資源需求

在完成離線訓(xùn)練之后的線推理步驟中,我們需要將模型載入到機器中,使用實時輸入運行模型來生成網(wǎng)站流量的實時結(jié)果。

接下來我們將討論,一種實際應(yīng)用中的在線推理模型——廣告排名模型。這種模型可以篩選成千上萬條廣告,在消息推送中顯示排在1至5名的廣告。這個過程是通過對依次減小的廣告子集進行逐步復(fù)雜的排名運算循環(huán)(passes)來實現(xiàn)的。

每一輪運算都會用到類似于多層感知模型(MLP)的模型,這種模型包含稀疏嵌入層,每一輪運算都會縮小廣告的數(shù)量。稀疏嵌入層需要大量的內(nèi)存,因此當(dāng)進行到靠后的運算時,模型的超參數(shù)數(shù)量更多,它將在獨立于MLP運算輪的一個服務(wù)器上運行。

從計算的角度上看,絕大多數(shù)在線推理都是在大量1xCPU(單插槽)或2xCPU(雙插槽)上運行的。由于1xCPU對Facebook的服務(wù)而言性能更高,而且性價比更高,因此Facebook提倡盡可能使用1xCPU服務(wù)器訓(xùn)練模型。

隨著高性能移動硬件的誕生,F(xiàn)acebook甚至可以在用戶的移動設(shè)備上直接運行某些模型,來改進延遲和降低通信成本。但是,某些需要大量計算和內(nèi)存資源的服務(wù)仍然需要使用2xCPU才能實現(xiàn)最佳性能。

不同的產(chǎn)品在得出在線推理的結(jié)果時擁有不同的延遲要求。在某些情況下,得出的數(shù)據(jù)可能“十分優(yōu)秀” ,也可能會在向用戶返回初步快速評估后被重新輸入到模型中。例如,在某些情況中將某個內(nèi)容分類為合格是可以接受的,但是當(dāng)運行更加復(fù)雜的模型時這個初步的分類結(jié)果就會被推翻。

廣告排名和消息推送之類的模型配置有穩(wěn)定的SLA,可以向用戶推送合適的內(nèi)容。這些SLA決定著模型的復(fù)雜性和依賴性,因此如果擁有更加強大的計算能力,我們就可以訓(xùn)練出更加先進的模型。

機器學(xué)習(xí)數(shù)據(jù)計算

除了資源需求外,在數(shù)據(jù)中心部署機器學(xué)習(xí)時還需要考慮一些重要的因素,包括對重要數(shù)據(jù)的需求以及面對自然災(zāi)害的可靠性。

從獲取數(shù)據(jù)到模型

Facebook公司的許多機器學(xué)習(xí)模型,成功的主要因素就是廣泛而高質(zhì)量的可用數(shù)據(jù)??焖偬幚聿⑦@些數(shù)據(jù)提供給機器學(xué)習(xí)模型的能力能夠確保我們部署快速有效的離線訓(xùn)練。

對于復(fù)雜的機器學(xué)習(xí)應(yīng)用程序,如廣告和排名,每個訓(xùn)練任務(wù)所需的數(shù)據(jù)量都超過數(shù)百TB大小。此外,復(fù)雜的預(yù)處理邏輯的使用能確保數(shù)據(jù)被清理并歸一化,以便高效地遷移和更輕松地學(xué)習(xí)。這些操作對資源的要求非常高,特別對存儲量,網(wǎng)絡(luò)和CPU的需求。

作為一個通用的解決方案,我們嘗試對訓(xùn)練工作量中的數(shù)據(jù)進行解耦。這兩個工作量都有非常顯著的特點。一方面,它非常復(fù)雜,具有臨時的,依賴業(yè)務(wù)性的,且變化快等特點。另一方面,訓(xùn)練工作量通常是固定的(例如GEMM),穩(wěn)定的(核心業(yè)務(wù)相對較少),高度優(yōu)化,且更偏愛于“干凈”的環(huán)境下工作(例如,獨占高速緩存使用和最小線程爭奪)。

為了優(yōu)化這兩者,我們在物理上對不同的機器的不同工作負(fù)載進行隔離。數(shù)據(jù)處理機器,又名“readers”,從存儲器中讀取數(shù)據(jù),處理和壓縮它們,然后將結(jié)果反饋給一個叫做“trainers”的訓(xùn)練機器。另一方面,trainers只專注于快速有效地執(zhí)行任務(wù)。readers和trainers可以分布以便提供更靈活性和可擴展性的應(yīng)用。此外,我們還優(yōu)化了不同工作負(fù)荷的機器配置。

另一個重要的優(yōu)化指標(biāo)是網(wǎng)絡(luò)使用。訓(xùn)練過程產(chǎn)生的數(shù)據(jù)流量非常重要的,并且有時候會突然產(chǎn)生。如果沒有智能化處理的話,這很容易就會導(dǎo)致網(wǎng)絡(luò)設(shè)備的飽和,甚至干擾到其他服務(wù)。為了解決這些問題,我們采用壓縮優(yōu)化,調(diào)度算法,數(shù)據(jù)/計算布局等等操作。

 

圖片描述

利用規(guī)模

作為一家為用戶提供服務(wù)的全球性公司,F(xiàn)acebook必須保持大量服務(wù)器的設(shè)計能夠滿足在任何時間段內(nèi)的峰值工作負(fù)載。如圖所示,由于用戶活動的變化取決于日常負(fù)荷以及特殊事件(例如地區(qū)節(jié)假日)期間的峰值,因此大量的服務(wù)器在特定的時間段內(nèi)通常是閑置的。

這就釋放了非高峰時段內(nèi)大量可用的計算資源。利用這些可能的異構(gòu)資源,以彈性方式合理分配給各種任務(wù)。這是Facebook目前正努力探索的一大機會。對于機器學(xué)習(xí)應(yīng)用程序,這提供了將可擴展的分布式訓(xùn)練機制的優(yōu)勢應(yīng)用到大量的異構(gòu)資源(例如具有不同RAM分配的CPU和GPU平臺)的機會。但是,這也會帶來一些挑戰(zhàn)。在這些低利用率的時期,大量可用的計算資源將從根本上導(dǎo)致分布式訓(xùn)練方法的不同。

調(diào)度程序首先必須正確地平衡跨越異構(gòu)硬件的負(fù)載,這樣主機就不必為了同步性而等待其他進程的執(zhí)行。當(dāng)訓(xùn)練跨越多個主機時,調(diào)度程序還必須要考慮網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和同步所需的成本。如果處理不當(dāng),機架內(nèi)或機架間同步所產(chǎn)生的流量可能會很大,這將極大地降低訓(xùn)練的速度和質(zhì)量。

例如,在1xCPU設(shè)計中,四個1xCPU主機共享一個50G的網(wǎng)卡。如果全部四臺主機同時嘗試與其他主機的梯度進行同步,那么共享的網(wǎng)卡很快就會成為瓶頸,這會導(dǎo)致數(shù)據(jù)包下降和請求超時。因此,網(wǎng)絡(luò)之間需要用一個共同的設(shè)計拓?fù)浜驼{(diào)度程序,以便在非高峰時段有效地利用閑置的服務(wù)器。另外,這樣的算法還必須具備能夠提供檢查指向停止及隨著負(fù)荷變化重新開始訓(xùn)練的能力。

災(zāi)難后恢復(fù)能力

能夠無縫地處理Facebook一部分全球計算,存儲和網(wǎng)絡(luò)足跡的損失,一直是Facebook基礎(chǔ)設(shè)施的一個長期目標(biāo)。Facebook的災(zāi)難恢復(fù)小組會定期在內(nèi)部進行演習(xí),找出并補救全球基礎(chǔ)設(shè)施中最薄弱的環(huán)節(jié)和軟件堆棧。干擾行動包括在幾乎沒有任何通知情況下,進行整個數(shù)據(jù)中心離線處理以確認(rèn)我們?nèi)驍?shù)據(jù)中心的損失對業(yè)務(wù)造成最小的干擾值。

對于機器學(xué)習(xí)的訓(xùn)練和推理部分,容災(zāi)的重要性是不言而喻的。盡管驅(qū)動幾個關(guān)鍵性項目的推理過程十分重要這一觀點以并不讓人意外,但在注意到幾個關(guān)鍵產(chǎn)品的可測量退化之前發(fā)現(xiàn)其對頻繁訓(xùn)練的依賴性依然是一個的驚喜。

下文討論了三種主要產(chǎn)品頻繁機器學(xué)習(xí)訓(xùn)練的重要性,并討論為適應(yīng)這種頻繁的訓(xùn)練所需要的基礎(chǔ)架構(gòu)支持,以及這一切是如何耦合到災(zāi)難后恢復(fù)性的。

如果不訓(xùn)練模型會發(fā)生什么?我們分析了三個利用機器學(xué)習(xí)訓(xùn)練的關(guān)鍵性服務(wù),以確定那些不能頻繁執(zhí)行操作來訓(xùn)練更新模型(包括廣告,新聞)和社區(qū)誠信所帶來的影響。我們的目標(biāo)是理解在失去訓(xùn)練模型能力的一個星期,一個月,六個月時間內(nèi)所帶來的影響。

第一個明顯的影響是工程師的效率,因為機器學(xué)習(xí)的進度通常與頻繁的實驗相關(guān)。雖然許多模型可以在CPU上進行訓(xùn)練,但是在GPU上訓(xùn)練往往能夠顯著地提升模型性能。這些加速效果能夠讓模型迭代時間更快,以及并帶來探索更多想法的能力。因此,GPU的損失將導(dǎo)致這些工程師生產(chǎn)力下降。

此外,我們確定了這個問題對Facebook產(chǎn)品的重大影響,特別是對頻繁刷新其模型的產(chǎn)品。 我們總結(jié)了這些產(chǎn)品使用舊模型時出現(xiàn)的問題。

社交安全:創(chuàng)造一個安全的地方讓人們分享和連接是Facebook的核心使命。 迅速而準(zhǔn)確地檢測攻擊性內(nèi)容是這項任務(wù)的核心。我們的社交安全團隊十分依賴使用機器學(xué)習(xí)技術(shù)來檢測攻擊性的內(nèi)容文字,圖像和視頻。攻擊性內(nèi)容檢測是一種垃圾郵件檢測的專門形式。對抗者會不斷地尋找新的、創(chuàng)新性的方法來繞過我們的標(biāo)識符,向我們的用戶展示令人反感的內(nèi)容。Facebook經(jīng)常訓(xùn)練模型去學(xué)習(xí)這些新的模式。每次訓(xùn)練迭代都要花費幾天的時間來生成用于檢測令人反感的圖像的精確模型。 我們正在繼續(xù)推動使用分布式訓(xùn)練技術(shù)來更快地訓(xùn)練模型的邊界,但是不完全的訓(xùn)練會導(dǎo)致內(nèi)容退化。

消息推送:我們的發(fā)現(xiàn)并不令人驚訝,像消息推送樣的產(chǎn)品對機器學(xué)習(xí)和頻繁的模型訓(xùn)練依賴很大。在用戶每次訪問我們網(wǎng)站的過程中,為其確定最相關(guān)的內(nèi)容,非常依賴先進的機器學(xué)習(xí)算法來正確查找和排列內(nèi)容。與其他一些產(chǎn)品不同,F(xiàn)eed排名的學(xué)習(xí)方式分兩步進行:離線步驟是在CPU / GPU上訓(xùn)練最佳模型,在線步驟則是在CPU上進行的持續(xù)在線訓(xùn)練。陳舊的消息推送模式對消息質(zhì)量有著可量化的影響。消息推送團隊不斷在他們的排名模型上進行創(chuàng)新,并讓模型模擬自身,進行幾小時的不間斷的訓(xùn)練,以此來推進模型的進步。而如果數(shù)據(jù)中心離線一個星期,帶來的訓(xùn)練過程的損失計算就可能會阻礙團隊探索新的能力模型和新的參數(shù)的進度。

廣告:最令人驚訝的是頻繁的廣告排名模式的訓(xùn)練的重要性。尋找和展示合適的廣告極其依賴機器學(xué)習(xí)及其創(chuàng)新。為了強調(diào)這種依賴的重要性,我們了解到,利用過時的機器模型的影響是以小時為單位來衡量的。 換句話說,使用一個舊的模型比使用一個僅訓(xùn)練一個小時的模型要糟糕得多。

總的來說,我們的調(diào)查強調(diào)了機器學(xué)習(xí)訓(xùn)練對于許多Facebook產(chǎn)品與服務(wù)的重要性。在日益增長的工作負(fù)荷面前,容災(zāi)工作不應(yīng)該被低估。

 

圖片描述

容災(zāi)架構(gòu)支持:上圖展示了Facebook數(shù)據(jù)中心的基礎(chǔ)架構(gòu)在全球的分布情況。如果我們關(guān)注在訓(xùn)練和推理過程中CPU資源的可用性,那么我們將有充足的計算適應(yīng)能力來應(yīng)對幾乎每個地區(qū)的服務(wù)器的損失需求。為GPU資源提供平等冗余的重要性最初被低估了。然而,利用GPU進行訓(xùn)練的初始工作量主要是計算機視覺應(yīng)用程序和訓(xùn)練這些模型所需的數(shù)據(jù),這些訓(xùn)練數(shù)據(jù)在全球范圍內(nèi)都能被復(fù)制得到。當(dāng)GPUs剛開始被部署到Facebook的基礎(chǔ)設(shè)施中時,對單一區(qū)域進行可管理性操作似乎是明智的選擇,直到設(shè)計成熟,我們都可以基于他們的服務(wù)和維護要求來建立內(nèi)部的專業(yè)知識。這兩個因素的結(jié)果就是我們將所有生產(chǎn)GPU物理隔離到了另一個數(shù)據(jù)中心區(qū)域。

然而,在那之后會發(fā)生了幾個關(guān)鍵的變化。由于越來越多的產(chǎn)品采用深度學(xué)習(xí)技術(shù),包括排名,推薦和內(nèi)容理解等,GPU計算和大數(shù)據(jù)的重要性將增加。此外,計算數(shù)據(jù)托管并復(fù)雜化是朝向一個巨型區(qū)域戰(zhàn)略樞紐的存儲方式。大型地區(qū)的概念意味著少數(shù)數(shù)據(jù)中心地區(qū)將容納Facebook的大部分?jǐn)?shù)據(jù)。順便說一下,該地區(qū)所有的GPU群并沒有駐留在大型存儲區(qū)域。

因此,除了共同定位數(shù)據(jù)計算的重要性之外,思考什么可能情況將使我們完全失去了搭載GPU的區(qū)域,就變得尤為重要。而這個考慮的結(jié)果驅(qū)使我們?yōu)闄C器學(xué)習(xí)訓(xùn)練部署多樣化GPU的物理位置。

未來的設(shè)計方向:硬件、軟件和算法

隨著模型復(fù)雜度和數(shù)據(jù)集規(guī)模的增長,機器學(xué)習(xí)的計算需求也隨之增加。 機器學(xué)習(xí)工作負(fù)載反映了許多影響硬件選擇的算法和數(shù)值的屬性。

我們知道,卷積和中等尺寸的矩陣乘法是深度學(xué)習(xí)前饋和后向過程的關(guān)鍵計算內(nèi)核。在批處理量較大的情況下,每個參數(shù)權(quán)重都會被更經(jīng)常地重用,因此必須進行這些內(nèi)核在算術(shù)強度(每個被訪問內(nèi)存字節(jié)的計算操作次數(shù))方面的改進。提高算術(shù)強度通常會提高底層硬件的效率,因此在延遲的限制之內(nèi),以更大的數(shù)據(jù)批量運行是可取的做法。計算機器學(xué)習(xí)負(fù)載的上下限將有助于更寬的SIMD單元的使用,及專門的卷積或矩陣乘法引擎、專門的協(xié)處理器的部署。

在某些情況下,對每個節(jié)點使用小批量數(shù)據(jù),在并發(fā)查詢低的實時推理中或在訓(xùn)練過程中擴展到大量的節(jié)點的情況,也是必需的。小的batch規(guī)模通常會有較低的算術(shù)強度(例如,全連接層中矩陣的矢量乘法運算,本質(zhì)上是有帶寬限制的)。當(dāng)完整模型不適合片上SRAM單元或最后一級緩存時,這種small batch數(shù)據(jù)可能會降低幾個常見情況的性能。

這個問題可以通過模型壓縮,量化和高帶寬內(nèi)存來緩解。模型壓縮可以通過和/或量化稀疏來實現(xiàn)。訓(xùn)練期間的稀疏修剪連接(Sparsification prunes connections)會導(dǎo)致一個更小的模型。量化使用定點整數(shù)或更窄的浮點格式來壓縮模型,而不是用于加權(quán)和激活的FP32(單精度浮點)。 目前已經(jīng)有一些使用8位或16位的常用網(wǎng)絡(luò),被證明了相當(dāng)?shù)臏?zhǔn)確性。還有一些正在進行的研究工作是使用1或2位對模型權(quán)重進行壓縮。除了減少內(nèi)存占用量外,修剪和量化還可以通過降低帶寬來加速底層硬件,并且允許硬件架構(gòu)在使用固定點數(shù)進行操作時具有更高的計算速率,這比運行FP32值更有效。

縮短訓(xùn)練時間,加快模型傳遞需要分布式訓(xùn)練。正如在第四節(jié)B中討論的那樣,分布式訓(xùn)練需要對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和調(diào)度進行仔細(xì)的協(xié)同設(shè)計,以有效利用硬件并實現(xiàn)良好的訓(xùn)練和質(zhì)量。正如第III部分B節(jié)中描述的,分布式訓(xùn)練中最廣泛使用的并行性形式是數(shù)據(jù)并行性,,這需要同步所有節(jié)點的梯度下降,要么同步要么異步。同步SGD需要全部減少操作(all-reduce operation)。 當(dāng)使用遞歸加倍(和減半)執(zhí)行時,全部減少操作呈現(xiàn)出來的一個有趣的屬性是帶寬需求隨著遞歸級別呈指數(shù)級下降。

這鼓勵了我們進行分層系統(tǒng)的設(shè)計,其中的節(jié)點在層次結(jié)構(gòu)的底部形成超節(jié)點連接(例如,通過高帶寬點實現(xiàn)點到點的連接或高位開關(guān));在層次結(jié)構(gòu)的頂部,超節(jié)點通過較慢的網(wǎng)絡(luò)(例如,以太網(wǎng))連接。換句話說,異步SGD(不等待其他節(jié)點處理批處理)更難,通常需要通過共享參數(shù)服務(wù)器完成; 節(jié)點將其更新發(fā)送到參數(shù)服務(wù)器,該服務(wù)器聚合并將其分發(fā)回節(jié)點。為減少更新的陳舊程度并減輕參數(shù)服務(wù)器的壓力,混合設(shè)計可能是個好的思路。在這樣的一個設(shè)計中,異步更新發(fā)生在超節(jié)點內(nèi)具有高帶寬和低延遲連接性的本地節(jié)點,而同步更新發(fā)生在超節(jié)點之間。進一步增加擴展性需要增加批量的大小而不是以犧牲收斂性為代價。不管是在Facebook內(nèi)部還是外部,這都是一個很活躍的算法研究領(lǐng)域。

正如第II部分所描述的,在Facebook上我們的使命是為那些基于機器學(xué)習(xí)的應(yīng)用程序構(gòu)建高性能,節(jié)能的機器學(xué)習(xí)系統(tǒng)。我們正在不斷評估和構(gòu)建新穎的硬件解決方案,并保持算法的變化及其對系統(tǒng)潛在影響的關(guān)注。

結(jié)論

基于機器學(xué)習(xí)的工作負(fù)載重要性的增加正在影響到系統(tǒng)堆棧的所有部分。對此,計算機體系結(jié)構(gòu)社區(qū)如何做出最好的應(yīng)對策略以及由此產(chǎn)生的挑戰(zhàn)將成為大家越來越關(guān)注的一個話題。雖然以前我們已經(jīng)圍繞有效地處理ML訓(xùn)練和推理的必要計算進行了大量工作,但是考慮到解決方案在應(yīng)用到大規(guī)模數(shù)據(jù)時將出現(xiàn)挑戰(zhàn),情況就會發(fā)生改變。

在Facebook,我們發(fā)現(xiàn)了幾個關(guān)鍵因素,這些因素在規(guī)?;约膀?qū)動數(shù)據(jù)中心基礎(chǔ)架構(gòu)的設(shè)計決策時非常重要:數(shù)據(jù)與計算機協(xié)同定位的重要性,處理各種機器學(xué)習(xí)工作負(fù)載(不僅僅是計算機視覺)的重要性,由非高峰期的每日循環(huán)產(chǎn)生的剩余容量而帶來的機會。我們在設(shè)計包含定制設(shè)計的,易于使用的開源硬件的端到端解決方案,以及平衡性能和可用性的開源軟件生態(tài)系統(tǒng)時,考慮了上述每一個因素。這些解決方案現(xiàn)在正在服務(wù)超過21億人的大規(guī)模機器學(xué)習(xí)工作負(fù)載提供強大的動力,同時也體現(xiàn)了相關(guān)專家在跨越機器學(xué)習(xí)算法和系統(tǒng)設(shè)計方面所付出的努力。

責(zé)任編輯:未麗燕 來源: 網(wǎng)絡(luò)大數(shù)據(jù)
相關(guān)推薦

2010-11-04 10:06:27

GSMMTN華為

2012-05-29 09:44:56

Facebook開放圖譜

2015-01-05 09:56:41

UDPLinux TCP

2021-04-06 11:06:02

Facebook黑客論壇泄露的數(shù)據(jù)

2021-01-20 23:40:27

數(shù)據(jù)泄露OpenWRT攻擊

2014-12-04 09:32:08

UDP

2011-04-11 23:34:44

FacebookHBase遷移

2018-09-29 15:36:39

2011-12-18 21:27:29

Android

2011-03-25 15:21:43

2021-01-06 10:01:09

數(shù)據(jù)泄露漏洞信息安全

2016-02-24 13:21:49

應(yīng)用程序定量分析開源

2018-03-25 17:17:27

2022-12-01 12:14:09

2021-05-11 11:05:58

蘋果iOS隱私

2023-10-23 19:18:05

2015-10-19 18:18:44

2016-10-13 18:57:58

阿里云云安全

2020-07-02 07:46:07

Facebook 開發(fā)數(shù)據(jù)

2022-08-10 14:35:33

機器人模型
點贊
收藏

51CTO技術(shù)棧公眾號