0
雷鋒網 AI 科技評論按,隨著深度學習的出現,基于神經網絡的個性化和推薦模型已經成為包括 Facebook 等公司構建推薦系統的重要工具。然而,這些模型與其他深度學習模型有很大的不同,因為它們必須能夠處理用于描述高級屬性的分類數據。對于一個神經網絡來說,有效地處理這類稀疏的數據是很有挑戰(zhàn)性的,而且由于公開的代表性模型和數據集細節(jié)的缺乏,減緩了其研究進展。
為了有助于加深人們對這一子領域的理解,Facebook 開源了一個最先進的深度學習推薦模型(DLRM),該模型是使用 Facebook 開源的 PyTorch 和 Caffe2 平臺實現的。DLRM 通過將協同過濾和基于預測分析的方法的原理結合起來,改進了其他模型,從而使其能夠有效地處理工業(yè)規(guī)模的數據,并提供最先進的結果。
相關 github 地址:https://github.com/facebookresearch/dlrm
雷鋒網將 Facebook 博文編譯如下:
通過發(fā)布這個模型,并在本文中詳細介紹它的功能,我們希望幫助社區(qū)找到新方法,從而解決使用這類模型所帶來的獨特挑戰(zhàn)。我們還希望鼓勵進一步的算法實驗、建模、系統協同設計和基準測試。這反過來將導致新的模型和更高效的系統,它們可以為使用數字服務的人們提供更相關的內容。
了解 DLRM 模型
在 DLRM 模型中,分類特征使用 embedding 處理,而連續(xù)特征使用底層多層感知器(MLP)處理。然后,它明確地計算了不同特征的二階交互作用。最后,使用頂部 MLP 對結果進行處理,并將其輸入到 sigmoid 函數中,以給出單擊的概率。
DLRM 模型處理描述用戶和產品的連續(xù)(密集)和分類(稀疏)功能,如圖所示。它使用了各種硬件和系統組件,如內存容量和帶寬,以及通信和計算資源。
基準化分析與系統協同設計
DLRM 的開源實現可以用作衡量以下各項的基準:
模型執(zhí)行的速度
各種數值技術如何影響其精度
這可以在不同的硬件平臺上完成,例如 BigBasin 人工智能平臺。
DLRM 基準測試提供了兩個版本的代碼,一個使用 PyTorch,另一個使用 Caffe2 操作符。此外,還使用 Glow C++操作符提供了這種變化的實現(為適應每個框架的具體情況,每個框架的代碼略有不同,但總體結構是相似的)。這些實現允許我們將 Caffe2 框架與 PyTorch 框架以及當前專注于加速器的 Glow 的實現進行對比。也許最重要的是,我們接下來可以突出顯示每個框架中的最佳特性,這些特性將來可以合并到一個框架中。
Big Basin 采用模塊化,可擴展的架構,開源設計可用
DLRM 基準測試支持隨機和合成輸入。支持與分類特征對應的自定義索引生成有很多原因。例如,如果我們的應用程序使用一個特定的數據集,但出于隱私考慮,我們不想共享它,那么我們可以選擇通過分發(fā)來表示分類功能。另外,如果我們想練習系統組件,例如研究內存運行,我們可能想捕獲合成追蹤中,原始追蹤訪問的基本位置。
此外,Facebook 上的服務根據用例使用各種個性化的推薦模型。例如,為了在大規(guī)模數據上提高性能,服務可以通過批處理輸入并將多個模型放在一臺機器上,在不同的平臺上并行推理。此外,Facebook 數據中心中的各種服務器引入了架構異構性,從不同的 SIMD 寬度到緩存層次結構的不同實現。這篇文章對 Facebook 推薦系統的體系結構進行了深入分析。
并行性
如上圖所示,DLRM 基準由計算主導的 MLP 和內存容量有限的 embedding 組成。因此,依靠數據并行性來提高 MLP 的性能,依靠模型并行性來滿足嵌入的內存容量需求是很自然的。DLRM 基準測試提供了一個遵循此方法的并行實現。我們注意到,在交互過程中,它需要一個高效的全部一一對應的通信原語,我們稱之為蝴蝶式隨機播放。它將每個設備上小批量的嵌入查找結果隨機移動到所有設備上的小批量嵌入查找的一部分。如下圖所示,其中每種顏色表示小批量的不同元素,每個數字表示設備及其分配的 embedding。
此圖顯示 DLRM 的蝴蝶式隨機播放
建模與算法實驗
DLRM 基準測試是用 Python 編寫的,其中模型體系結構、數據集和其他參數由命令行參數定義。
該代碼是自包含的,可以與公共數據集(包括 kaggle 廣告展示挑戰(zhàn)賽數據集)進行接口。這個特定的數據集包含 13 個連續(xù)特征和 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
左邊的圖表顯示了訓練和測試二進制交叉熵損失,右邊的圖表顯示了訓練和測試的準確性
模型運行在一個真實的數據集上,它允許我們測量模型的精度。我們計劃在接下來的工作中基于建模和算法實驗,對該模型的影響進行進一步深入的分析。
通過詳細描述 DLRM 最先進的個性化推薦系統及其開源實現,我們希望能提醒大家注意這類模型所帶來的獨特挑戰(zhàn)。我們期待著與人工智能社區(qū)的其他人合作,在算法實驗、建模、系統協同設計和基準測試方面取得進展。從長遠來看,我們的目標是開發(fā)新的、更好的方法,將深度學習用于推薦和個性化工具(并提高模型的效率和性能),使用新的方法給人們推薦和他們最相關的內容。
via:https://ai.facebook.com/blog/dlrm-an-advanced-open-source-deep-learning-recommendation-model/
雷鋒網雷鋒網
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。