《Deep Learning Recommendation Model for Personalization and Recommendation Systems》
模型結構:dense特徵,經過bottom MLP的變換,得到一個embedding; 和類別特徵的embedding們,兩兩之間做向量點乘(類似FM的思想),得到的很多乘積串成一個向量,輸入到top MLP裏面,最後過sigmoid得到點擊概率;
結合了2種並行:
Model並行:類別Embedding佔內存太大,所以存放在多個device上;
Data並行:top MLP的參數量小,所以每個device上都複製一份,但是處理不同的訓練數據;
butterfly all-to-all:
input裏的每個Device,放的是自己那部分的embedding們,3種顏色各表示1/3的mini-batch的embedding們;
output裏的每個Device,放的是自己這1/3個mini-batch所需的所有embedding們;
Data並行那裏,每個Device上的梯度都要AllReduce一把,同步更新所有Device上的MLP模型參數;
Facebook用的是自研的2socket-CPU+8卡GPU一體機;似乎沒有使用多機分佈式;
實驗了全部使用CPU和全部使用GPU,但是沒有說明白最優的組合應該是哪部分使用CPU哪部分使用GPU(也許考慮到跟機型有關?)
使用Adagrad比SGD要好0.5%左右;使用Adagrad時,DLRM比DCN只有微弱優勢(0.2%?);就這效果,也敢自稱state-of-the-art?