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