為方便您快捷體驗PAI-Rec產品,本文提供了一份公開資料集,您可以按照文檔說明,按步驟體驗PAI-Rec推薦演算法定製的特徵工程、召回、精排等關鍵功能的配置,產生代碼並部署到DataWorks相應的商務程序中。
前提條件
在開始執行操作前,請確認您已完成以下準備工作:
已開通PAI,詳情請參見開通PAI並建立預設工作空間。
已建立Virtual Private Cloud和交換器,詳情請參見搭建IPv4專用網路。
已開通PAI-FeatureStore(參考建立資料來源的前提條件部分),注意資料來源部分不用開通Hologres,資料來源選擇FeatureDB,參考建立線上資料來源:FeatureDB。
已開通MaxCompute服務,並建立MaxCompute專案project_mc,詳情請參見開通MaxCompute和建立MaxCompute專案。
建立OSS儲存空間(Bucket),詳情請參見建立儲存空間。
開通DataWorks服務,並完成以下操作:
已建立DataWorks工作空間,操作詳情請參見建立工作空間。
購買DataWorks的Serverless資源群組,操作詳情請參見使用Serverless資源群組。資源群組用於PAI-FeatureStore同步資料,以及執行eascmd的命令建立和更新PAI-EAS服務。
配置DataWorks資料來源:
建立並綁定OSS資料來源,詳情請參見資料來源管理。
建立並綁定MaxCompute資料來源,詳情請參見綁定MaxCompute計算資源。
建立FeatureStore專案和特徵實體。如果是Serverless資源群組則跳過本條目;如果是DataWorks獨享資源群組,在資源群組上需要安裝FeatureStore Python SDK,詳情請參見二、建立並註冊FeatureStore和安裝FeatureStore Python SDK。
開通Flink,詳情請參見開通Realtime ComputeFlink版。注意“儲存類型”選擇“OSS bucket”,不要選擇“全託管儲存”,並且保證Flink的OSS與PAI-Rec雲產品配置中的OSS bucket一致。Flink用於記錄即時使用者行為資料,統計使用者即時特徵。
當您後續選擇用EasyRec(TensorFlow架構)的時候,預設是在MaxCompute上訓練。
當您後續選擇TorchEasyRec(PyTorch架構)的時候,預設是在PAI-DLC上訓練。PAI-DLC上下載MaxCompute資料需要開通Data Transmission Service(參考購買與使用獨享Data Transmission Service資源群組)。
1.建立PAI-Rec執行個體並初始化服務
登入推薦系統開發平台PAI-Rec首頁,單擊立即購買。
在PAI-Rec執行個體購買頁面,配置以下關鍵參數,然後單擊立即購買。
參數
說明
地區和可用性區域
您的雲端服務部署的地區。
服務類型
本方案選擇標準版,且啟用“推薦方案定製”功能。
登入PAI-Rec管理主控台,在頂部功能表列左上方處,選擇地區。
在左側導覽列選擇執行個體列表,單擊執行個體名稱,進入執行個體詳情頁面。
單擊操作指引地區的雲產品配置,跳轉至系統配置>雲產品配置頁面,單擊編輯,按照如下資源配置完成相應參數配置,然後單擊退出。
在左側導覽列選擇系統配置>許可權管理,按照介面提示,在訪問服務頁簽檢查各項雲產品授權情況,確保對應雲產品訪問狀態正常。
2. 複製公開資料集
1.同步資料表
本方案的輸入資料有兩種方案:
從pai_online_project專案中複製固定時間窗的資料,不支援任務例行調度執行。
提供Python指令碼,通過代碼產出資料,可以通過DataWorks執行任務產出指定時間段的資料。
如果需要調度每天產出資料和訓練模型,建議使用第二種方案。您需要部署指定的Python代碼以產生所需資料,詳情請參見“通過代碼產出資料”頁簽。
同步固定時間窗的資料
PAI-Rec在公開訪問的專案pai_online_project中提前準備了推薦演算法中常用的三張表:
使用者表:pai_online_project.rec_sln_demo_user_table
物品表:pai_online_project.rec_sln_demo_item_table
行為表:pai_online_project.rec_sln_demo_behavior_table
本方案後續的操作均基於上述三張表,其資料均是隨機產生的類比資料,沒有真實業務含義,因此訓練得到的AUC等指標較低。您需要在DataWorks中執行SQL命令,從pai_online_project專案中將上述表資料同步到您的DataWorks專案(例如DataWorks_a)中。具體操作步驟如下:
登入DataWorks控制台,在頂部功能表列左上方處,選擇地區。
在左側導覽列單擊資料開發與營運>資料開發。
選擇已建立的DataWorks工作空間後,單擊進入資料開發。
滑鼠移至上方至建立,選擇建立節點>MaxCompute>ODPS SQL,按照如下資源配置完成相應參數配置,然後單擊確認。
在建立節點地區,複製並運行下面的代碼,將使用者表、物品表、行為表從pai_online_project專案同步到您已建立的MaxCompute專案(例如project_mc)中。執行代碼需要設定變數,指定bizdate到bizdate日期之前100天的資料。一般把bizdate設定為當前的日期的前一天,設定調度參數如下:
以下代碼執行一次,即可將資料從公用的pai_online_project專案複製到使用者的專案中:
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1(
user_id BIGINT COMMENT '使用者唯一ID',
gender STRING COMMENT '性別',
age BIGINT COMMENT '年齡',
city STRING COMMENT '城市',
item_cnt BIGINT COMMENT '創作內容數',
follow_cnt BIGINT COMMENT '關注數',
follower_cnt BIGINT COMMENT '粉絲數',
register_time BIGINT COMMENT '註冊時間',
tags STRING COMMENT '使用者標籤'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_user_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1(
item_id BIGINT COMMENT '內容ID',
duration DOUBLE COMMENT '視頻時間長度',
title STRING COMMENT '標題',
category STRING COMMENT '一級標籤',
author BIGINT COMMENT '作者',
click_count BIGINT COMMENT '累計點擊數',
praise_count BIGINT COMMENT '累計點贊數',
pub_time BIGINT COMMENT '發布時間'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_item_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1(
request_id STRING COMMENT '埋點ID/請求ID',
user_id STRING COMMENT '使用者唯一ID',
exp_id STRING COMMENT '實驗ID',
page STRING COMMENT '頁面',
net_type STRING COMMENT '網路型號',
event_time BIGINT COMMENT '行為時間',
item_id STRING COMMENT '內容ID',
event STRING COMMENT '行為類型',
playtime DOUBLE COMMENT '播放時間長度/閱讀時間長度'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_behavior_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";通過代碼產出資料
使用固定時間窗的資料,不支援任務例行調度執行。如果有執行需求,您需要部署特定的Python代碼以產生所需資料。具體操作步驟如下:
在DataWorks控制台建立PyODPS 3節點,詳情請參見建立並管理MaxCompute節點。
單擊並下載create_data.py,將檔案內容粘貼到PyODPS 3節點中。
單擊右側的調度配置,並配置以下參數,然後單擊右上方的儲存
和提交
。配置調度參數:
注意替換變數:
$user_table_name可以替換為rec_sln_demo_user_table
$item_table_name可以替換為rec_sln_demo_item_table
$behavior_table_name可以替換為rec_sln_demo_behavior_table

替換後:

配置調度依賴。
單擊營運中心,並選擇。
單擊目標任務操作列下的。
在補資料配置面板中,設定業務日期,並單擊提交並跳轉。
較好的補資料時間範圍為60天,建議您將業務日期設定為
任務定時調度日期-60,以確保資料的完整性。
2.配置依賴節點
為了確保後續代碼產生與部署的順利進行,請預先在您的DataWorks專案中添加三個SQL代碼節點。請將這些節點的調度依賴配置為工作空間的根節點,完成所有設定後再發布節點。具體操作步驟如下:
滑鼠移至上方至建立,選擇建立節點>通用>虛擬節點,按照如下資源配置分別建立3個虛擬節點,然後單擊確認。

選中節點,分別將代碼節點內容設定為
select 1;,然後單擊右側的調度配置,完成以下配置:在時間屬性地區,設定重跑屬性為運行成功或失敗後節點重跑。
在調度依賴>依賴的上遊節點地區,輸入DataWorks工作空間名稱,選擇帶有_root尾碼的節點,單擊添加。
3個虛擬節點均需配置。

單擊虛擬節點前的
,提交該節點。
3.註冊資料
為了後續在推薦方案定製功能中配置特徵工程、召回、排序演算法,您需要先註冊同步到DataWorks專案中的三張表,具體操作步驟如下:
登入PAI-Rec管理主控台,在頂部功能表列左上方處選擇地區。
在左側導覽列選擇執行個體列表,單擊執行個體名稱,進入執行個體詳情頁面。
在左側導覽列選擇推薦方案定製>資料註冊,在MaxCompute表頁簽單擊新增資料表,按照如下資源配置分別新增1個使用者表、1個物品表和1個行為表,然後單擊開始匯入。
參數
說明
方案預設樣本
MaxCompute專案
選擇已建立的MaxCompute專案。
project_mc
MaxCompute表
選擇已同步到DataWorks工作空間的資料表。
使用者表:rec_sln_demo_user_table_v1
物品表:rec_sln_demo_item_table_v1
行為表:rec_sln_demo_behavior_table_v1
資料表名稱
自訂填寫。
使用者表
物品表
行為表
4.建立推薦情境
在配置推薦任務之前需要先建立一個推薦情境。推薦情境的基本概念、流量編碼含義參考基本概念。
在左側導覽列選擇推薦情境,單擊建立情境,按照如下資源配置建立1個推薦情境,然後單擊確定。
5.建立並配置演算法方案
如果您需要完整配置一個真實情境,建議配置的召回和精排如下。
全域熱門召回:日誌資料中,全面熱門資料的統計排名取Top k。
全域熱門兜底召回:使用Redis作為兜底,防止推薦介面下發資料為空白。
分組熱門召回:按照城市、性別區間等指標來分類召回,這對提高熱門物品的準確性有協助。
etrec u2i召回:基於etrec協同過濾演算法。
swing u2i召回(可選):基於Swing演算法。
冷啟動召回(可選):dropoutnet演算法的冷啟動召回。
精排:單目標可以選擇MultiTower排序;多目標可選擇DBMTL排序。
一般當召回比較全面之後再開啟向量召回或者PDN召回等演算法。向量召回需要配合向量召回引擎,因為FeatureDB不支援向量召回,因此我們在本案例中不配置向量召回。
本文旨在體驗配置與部署流程,因此在召回配置環節只配置了全域熱門召回及RECommender(eTREC,一種協同過濾的實現)的u2i召回策略。在排序配置上,選擇了精細化排名以最佳化體驗。具體操作步驟如下:
在左側導覽列選擇推薦方案定製>方案配置,選擇已建立的情境,並單擊建立推薦方案,按照如下資源配置建立1個方案,然後單擊儲存並進入演算法方案配置。
未說明的參數保持預設即可,詳情請參見資料表配置。
在資料表配置節點,單擊目標資料表右側的添加,按照如下資源配置分別設定行為日誌表、使用者表和物品表,並設定相應的分區、事件、特徵、時間戳記等欄位,然後單擊下一步。
未說明的參數保持預設即可,詳情請參見資料表配置。
在特徵配置節點,按照如下資源配置完成相應參數配置,單擊產生特徵,設定特徵版本,然後單擊下一步。
單擊產生特徵後,會在使用者和物品側衍生出多種統計特徵,本方案不對衍生特徵進行二次編輯,保持預設即可。您可以根據自身業務需求,對衍生特徵進行編輯,詳情請參見特徵配置。
在召回配置節點,單擊目標分類右側的添加,完成相應參數配置,單擊確認,然後單擊下一步。
以下內容包含了多種召回配置方法,為了帶您快速體驗部署流程,您可以只配置全域熱門召回和etrec u2i召回。其他向量召回、協同度量召回等僅供參考。
在排序配置節點,單擊精排右側的添加,按照如下資源配置完成相應參數配置,單擊確認,然後單擊下一步。
在產生指令碼節點,單擊產生部署指令碼。
重要指令碼產生成功後,系統將產生一個如上圖所示的OSS地址,該OSS路徑儲存了待部署的所有檔案。您可以將該地址儲存到本地,方便後續使用手動方式部署指令碼。
指令碼產生完成後,在彈窗中單擊確定,跳轉至推薦方案定製>部署記錄頁面。
如果產生失敗,請查看作業記錄,分析並解決具體報錯問題,然後重建指令碼。
6.部署推薦方案
指令碼產生完成後,您可以通過以下兩種方式,將該指令碼部署至DataWorks。
方式一:通過推薦全鏈路深度定製開發平台部署
單擊目標方案右側的前往部署。

在部署預覽頁面的檔案diff地區,選擇要部署的檔案。本方案為首次部署,單擊全選,然後單擊部署到DataWorks。
頁面自動返回到部署記錄頁面,顯示指令碼部署運行中。

等待一段時間後,單擊
重新整理列表,查看部署狀態。如果部署失敗,請單擊操作列下的查看日誌,分析並解決具體報錯問題,然後重建指令碼並部署。
當部署狀態變為成功,代表指令碼已成功部署。您可以前往該方案配置的DataWorks工作空間下的資料開發頁面,查看部署好的代碼,詳情請參見資料開發流程指引。

查看任務補資料流程。
在頁面,單擊已部署成功的推薦方案操作列下的詳情。
在部署預覽頁面,單擊查看任務補資料流程,瞭解補資料流程和相關說明,確保資料的完整性。
保證使用者表、物品表、使用者行為表分區都有最近n天(n的值可以是:訓練時間窗加上最大特徵時間窗的數值)的資料。如果是使用本文的demo資料,注意同步最新的資料分區。如果使用Python指令碼產出資料,則在DataWorks營運中心補數產出最新的資料分區。
點擊建立補數任務,在補數工作清單下面點擊依次啟動任務。保證任務都成功運行。某個任務如果運行失敗,可以點擊詳情來查看日誌資訊,分析並解決相應的錯誤,然後重跑即可。重跑成功後需要點擊頁面左上方的續跑,直至任務全部成功。

方式二:通過遷移助手部署
指令碼產生成功後,您也可以前往DataWorks控制台,通過遷移助手功能手動部署指令碼,其中關鍵參數說明如下,其他動作詳情,請參見建立和查看DataWorks匯入任務。
7.凍結節點
此文檔是Demo資料,當一鍵補數已經完成,需要凍結營運中心裏面的任務(步驟2.2中三個節點),防止任務每天調度執行。
進入DataWorks的營運中心,滑鼠選擇周期任務營運>周期任務,搜尋剛才建立節點名稱(如rec_sln_demo_user_table_v1),選中目標節點(工作空間.節點名),選擇暫停(凍結)即可。














