當前位置:
首頁 > 新聞 > Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

雷鋒網 AI 科技評論按,隨著深度學習的出現,基於神經網路的個性化和推薦模型已經成為包括 Facebook 等公司構建推薦系統的重要工具。然而,這些模型與其他深度學習模型有很大的不同,因為它們必須能夠處理用於描述高級屬性的分類數據。對於一個神經網路來說,有效地處理這類稀疏的數據是很有挑戰性的,而且由於公開的代表性模型和數據集細節的缺乏,減緩了其研究進展。

為了有助於加深人們對這一子領域的理解,Facebook 開源了一個最先進的深度學習推薦模型(DLRM),該模型是使用 Facebook 開源的 PyTorch 和 Caffe2 平台實現的。DLRM 通過將協同過濾和基於預測分析的方法的原理結合起來,改進了其他模型,從而使其能夠有效地處理工業規模的數據,並提供最先進的結果。

相關 github 地址:https://github.com/facebookresearch/dlrm

雷鋒網將 Facebook 博文編譯如下:

通過發布這個模型,並在本文中詳細介紹它的功能,我們希望幫助社區找到新方法,從而解決使用這類模型所帶來的獨特挑戰。我們還希望鼓勵進一步的演算法實驗、建模、系統協同設計和基準測試。這反過來將導致新的模型和更高效的系統,它們可以為使用數字服務的人們提供更相關的內容。

了解 DLRM 模型

在 DLRM 模型中,分類特徵使用 embedding 處理,而連續特徵使用底層多層感知器(MLP)處理。然後,它明確地計算了不同特徵的二階交互作用。最後,使用頂部 MLP 對結果進行處理,並將其輸入到 sigmoid 函數中,以給出單擊的概率。

Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

DLRM 模型處理描述用戶和產品的連續(密集)和分類(稀疏)功能,如圖所示。它使用了各種硬體和系統組件,如內存容量和帶寬,以及通信和計算資源。

基準化分析與系統協同設計

DLRM 的開源實現可以用作衡量以下各項的基準:

  • 模型執行的速度

  • 各種數值技術如何影響其精度

這可以在不同的硬體平台上完成,例如 BigBasin 人工智慧平台。

DLRM 基準測試提供了兩個版本的代碼,一個使用 PyTorch,另一個使用 Caffe2 操作符。此外,還使用 Glow C++操作符提供了這種變化的實現(為適應每個框架的具體情況,每個框架的代碼略有不同,但總體結構是相似的)。這些實現允許我們將 Caffe2 框架與 PyTorch 框架以及當前專註於加速器的 Glow 的實現進行對比。也許最重要的是,我們接下來可以突出顯示每個框架中的最佳特性,這些特性將來可以合併到一個框架中。

Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

Big Basin 採用模塊化,可擴展的架構,開源設計可用

DLRM 基準測試支持隨機和合成輸入。支持與分類特徵對應的自定義索引生成有很多原因。例如,如果我們的應用程序使用一個特定的數據集,但出於隱私考慮,我們不想共享它,那麼我們可以選擇通過分發來表示分類功能。另外,如果我們想練習系統組件,例如研究內存運行,我們可能想捕獲合成追蹤中,原始追蹤訪問的基本位置。

此外,Facebook 上的服務根據用例使用各種個性化的推薦模型。例如,為了在大規模數據上提高性能,服務可以通過批處理輸入並將多個模型放在一台機器上,在不同的平台上並行推理。此外,Facebook 數據中心中的各種伺服器引入了架構異構性,從不同的 SIMD 寬度到緩存層次結構的不同實現。這篇文章對 Facebook 推薦系統的體系結構進行了深入分析。

並行性

如上圖所示,DLRM 基準由計算主導的 MLP 和內存容量有限的 embedding 組成。因此,依靠數據並行性來提高 MLP 的性能,依靠模型並行性來滿足嵌入的內存容量需求是很自然的。DLRM 基準測試提供了一個遵循此方法的並行實現。我們注意到,在交互過程中,它需要一個高效的全部一一對應的通信原語,我們稱之為蝴蝶式隨機播放。它將每個設備上小批量的嵌入查找結果隨機移動到所有設備上的小批量嵌入查找的一部分。如下圖所示,其中每種顏色表示小批量的不同元素,每個數字表示設備及其分配的 embedding。

Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

此圖顯示 DLRM 的蝴蝶式隨機播放

建模與演算法實驗

DLRM 基準測試是用 Python 編寫的,其中模型體系結構、數據集和其他參數由命令行參數定義。

該代碼是自包含的,可以與公共數據集(包括 kaggle 廣告展示挑戰賽數據集)進行介面。這個特定的數據集包含 13 個連續特徵和 26 個分類特徵,這些特徵定義了 MLP 輸入層的大小以及模型中使用的 embedding 數量,而其他參數可以在命令行上定義。例如,下面的圖表顯示了使用以下命令行參數運行 DLRM 的結果。


python dlrm_s_pytorch.py --arch-sparse-feature-size=16 --arch-mlp-bot="13-512-256-64-16" --arch-mlp-top="512-256-1" --data-generation=dataset --data-set=kaggle --processed-data-file=./input/kaggle_processed.npz --loss-function=bce --round-targets=True --learning-rate=0.1 --mini-batch-size=128 --print-freq=1024 --print-time

Facebook 開源深度學習推薦模型 DLRM,可直接用 PyTorch 和 Caffe2 實現

左邊的圖表顯示了訓練和測試二進位交叉熵損失,右邊的圖表顯示了訓練和測試的準確性

模型運行在一個真實的數據集上,它允許我們測量模型的精度。我們計劃在接下來的工作中基於建模和演算法實驗,對該模型的影響進行進一步深入的分析。

通過詳細描述 DLRM 最先進的個性化推薦系統及其開源實現,我們希望能提醒大家注意這類模型所帶來的獨特挑戰。我們期待著與人工智慧社區的其他人合作,在演算法實驗、建模、系統協同設計和基準測試方面取得進展。從長遠來看,我們的目標是開發新的、更好的方法,將深度學慣用於推薦和個性化工具(並提高模型的效率和性能),使用新的方法給人們推薦和他們最相關的內容。

via:https://ai.facebook.com/blog/dlrm-an-advanced-open-source-deep-learning-recommendation-model/

雷鋒網雷鋒網

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

阿里潛心布局多年,丹鳥終於初試啼聲
ARM、英特爾、AMD 的處理器路線之爭

TAG:雷鋒網 |