DSSM(Deep Structured Semantic Model)向量召回通過雙塔模型分別學慣用戶和物品的向量表示,適用於推薦系統的候選召回階段。本文介紹基於EasyRec組件使用DSSM實現向量召回的完整工作流程。
前提條件
已運行推薦解決方案-特徵工程工作流程範本產生向量召回的資料集,具體操作請參見特徵工程。
rec_sln_demo_user_table_preprocess_all_feature_v2
rec_sln_demo_item_table_preprocess_all_feature_v2
rec_sln_demo_behavior_table_preprocess_v2
實現向量召回
進入Designer頁面。
登入PAI控制台。
在左側導覽列單擊工作空间列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。
在工作空間頁面的左側導覽列選擇,進入Designer頁面。
構建工作流程
在Designer頁面,單擊預置模板頁簽。
在模板列表的推薦解決方案-向量召回地區,單擊建立。
在建立工作流程對話方塊,配置參數(可以全部使用預設參數)。
其中: 工作流程資料存放區配置為OSS Bucket路徑,用於儲存工作流程運行中產出的臨時資料和模型。
單擊確定。
等待約10秒,工作流程建立成功。
在工作流程列表,雙擊推薦解決方案-向量召回工作流程,進入工作流程。
系統根據預置的模板,自動構建工作流程,如下圖所示。

組件編號
描述
1
DSSM_Recall向量召回模型樣本。
2
使用FG模組編碼樣本,產出DSSM_Recall向量召回模型的樣本。rec_sln_demo_dssm_recall_fg_v1.json,fg_on_odps-1.3.59-jar-with-dependencies.jar
3
建立正樣本表,負採樣時使用正樣本參與訓練。
4
統計數值類特徵的等頻分箱,用於設定模型的boundaries(邊界)。
5
統計枚舉類特徵的唯一值數,用於設定模型的embedding_dim和hash_bucket_size。
6
使用FG編碼Item特徵。rec_sln_demo_dssm_recall_item_fg_v1.json
7
使用FG編碼User特徵。rec_sln_demo_dssm_recall_user_fg_v1.json
8
匯總rec_sln_demo_dssm_recall_30d_binning
_v1表和rec_sln_demo_dssm_recall_30d_
count_v1表結果,計算Feature配置資訊和Step配置資訊。
9
建立物品表用作負採樣。
10
打散DSSM_Recall模型的30天樣本資料形成訓練樣本。
11
根據組件編號8節點的計算結果,在EasyRec設定檔中填充配置資訊。
12
模型訓練需要先執行一次組件編號11節點,產生EasyRec設定檔。rec_sln_demo_dssm_recall_v1_template.config
13
使用切分後的物品模型,對物品特徵表進行推理。rec_sln_demo_dssm_recall_item_feature_fg_encoded_v1,得到物品向量。item_fg.json
14
使用切分後使用者模型,推理使用者特徵表 rec_sln_demo_dssm_recall_user_feature_fg_encoded_v1,得到使用者向量。user_fg.json
15
建立序列表,用作hit_rate評估。
說明評估當天出現的新使用者及新商品不參與評估。
18
召回模型使用hit_rate@top200進行評估,用於評估推薦系統的召回階段的效能。
運行工作流程並查看輸出結果。
單擊畫布上方的运行。
工作流程運行結束後,查看輸出結果。
按右鍵畫布中組件編號為18的組件(18_rec_sln_demo_recall_total_hit_rate_v1_2),在捷徑功能表,單擊查看資料 > hit_rate_detail。即可查看向量召回評估詳情結果hit_rate_detail。輸出結果資料表包含以下欄位:id(查詢ID)、topk_ids(召回的Top-K結果ID列表)、topk_dists(對應的距離值)、hitrate(命中率)、bad_ids(未命中的Bad Case ID列表)、bad_dists(對應的距離值)。
按右鍵畫布中編號為18的組件(18_rec_sln_demo_recall_total_hit_rate_v1_2),在捷徑功能表,單擊查看資料 > total_hit_rate,即可查看向量召回評估值total_hit_rate。查詢結果中,hitrate 列的值約為
0.00163057388272136。