為方便您快捷體驗PAI-Rec產品,本文提供了一份公開資料集,您可以按照文檔說明,按步驟體驗PAI-Rec推薦演算法定製的特徵工程、召回、精排等關鍵功能的配置,產生代碼並部署到DataWorks相應的商務程序中。相比原來的推薦方案定製功能,模組化可以實現單獨功能的上下線,減少對推薦其餘流程產生影響。
為什麼要把推薦方案定製做模組化的拆分?
通過新增特徵組的概念,讓使用者更容易地新增特徵組迭代模型。
一鍵上線,包含了部署、自動啟動補數任務,減少使用者的操作時間。
在排序模組才能真正對需要的特徵組、樣本、fg等模組全部補數,如果特徵工程配置出錯,返工的成本更低。
前提條件
在開始執行操作前,請確認您已完成以下準備工作:
建立OSS儲存空間(Bucket),詳情請參見建立儲存空間。
已開通PAI,詳情請參見開通PAI並建立預設工作空間。
已建立Virtual Private Cloud和交換器,詳情請參見搭建IPv4專用網路。
已開通PAI-FeatureStore(參考建立資料來源的前提條件部分),注意資料來源部分不用開通Hologres,資料來源選擇FeatureDB,參考建立線上資料來源:FeatureDB。
已開通MaxCompute服務,並建立MaxCompute專案project_mc,詳情請參見開通MaxCompute和建立MaxCompute專案。
開通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管理主控台,在頂部功能表列左上方處,選擇地區。
在左側導覽列選擇執行個體列表,單擊執行個體名稱,進入執行個體詳情頁面。
單擊操作指引地區的云产品配置,跳轉至系统配置>云产品配置頁面,單擊编辑,按照如下資源配置完成相應參數配置,然後單擊退出。
在左側導覽列選擇系统配置>权限管理,按照介面提示,在访问服务頁簽檢查各項雲產品授權情況,確保對應雲產品訪問狀態正常。
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設定為當前的日期的前一天,設定調度參數如下:在 調度參數 地區,單擊 新增參數,手動添加兩個參數:參數名
bizdate,參數值為$[yyyymmdd-1];參數名bizdate_100,參數值為$[yyyymmdd-100]。以下代碼執行一次,即可將資料從公用的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
在調度參數配置面板中,除上述三個表名參數外,還包含調度參數 bizdate,其參數值為
$bizdate。替換後:
調度參數中還需配置
bizdate參數,值為$[yyyymmdd-1],來源為手動添加。
配置調度依賴。
單擊營運中心,並選擇。
單擊目標任務操作列下的。
在補資料配置面板中,設定業務日期,並單擊提交並跳轉。
較好的補資料時間範圍為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。
分組熱門召回:按照城市、性別區間等指標來分類召回,這對提高熱門物品的準確性有協助。
etrec u2i召回:基於etrec協同過濾演算法。
swing u2i召回(可選):基於Swing演算法。
向量召回(可選):DSSM向量召回。
精排:單目標可以選擇MultiTower排序;多目標可選擇DBMTL排序。
本文旨在體驗配置與部署流程,因此在召回配置環節只配置了全域熱門召回及RECommender(eTREC,一種協同過濾的實現)的u2i召回策略。在排序配置上,選擇了精細化排名以最佳化體驗。具體操作步驟如下:
在左側導覽列選擇推荐方案定制>建立模組化推薦方案,選擇已建立的情境,並單擊创建模块化推荐方案,按照如下資源配置建立1個方案,然後單擊保存并进入算法方案配置。
未說明的參數保持預設即可,詳情請參見資料表配置。
在数据表配置,單擊目標資料表右側的添加,按照如下資源配置分別設定行為日誌表、使用者表和物品表,並設定相應的分區、事件、特徵、時間戳記等欄位,然後單擊下一步。
未說明的參數保持預設即可,詳情請參見資料表配置。
在特征组配置,單擊添加,按照如下資源配置完成相應參數配置,設定特徵模組名稱,版本,分別勾選在数据表配置 中的使用者表,物品表,行為日誌表。
單擊确定,會在使用者和物品側衍生出多種統計特徵,點擊該特徵組的特征配置可以查看到對應的驗證特徵,本方案不對衍生特徵進行二次編輯,保持預設即可。您可以根據自身業務需求,對衍生特徵進行編輯,詳情請參見特徵配置。點擊該特徵組的上线,任務運行日期選擇資料最新分區日期,調整任務最大並行數,最大為10,其餘配置預設,單擊确定。該動作會產出節點,並部署到DataWorks,同時根據日期補跑資料,當改模組狀態成為已上线才可進行後續配置。單擊該模組的上线详情可以查看該模組相關的詳細資料,其中补数任务列表可以查看到每個任務運行狀態,對於失敗的任務,點擊查看任务节点可以跳轉至DataWorks查看任務詳細報錯,對於失敗任務修正後點擊补数任务列表該節點重跑,通過後點擊續跑。
Label表配置,此模組根據行為表構建樣本目標,點擊添加,選擇當前模組為label模組,輸入Label 模組名稱,特徵模組選擇上遊配置的特徵模組。單擊精排目標設定(labels)後的新增,新增如下兩個label:
目標1:精排目標名稱填寫
is_click,精排目標運算式填寫max(if(event='click',1,0)),目標類型選擇 分類(CLASSIFICATION)。目標2(注意ln中的l是L的小寫)配置精排目標:將 精排目標名稱 設定為
ln_playtime,精排目標運算式 設定為ln(sum(playtime)+1),精排目標依賴 設定為is_click,目標類型 選擇 迴歸(REGRESSION)。單擊 確定。确定後仿照特徵模組進行上線,等待狀態成為已上线後繼續下遊配置
样本配置,此模組功能是樣本目標表關聯特徵,並在feature-store產出模型特徵。點擊添加,選擇當前模組為樣本模組,並命名模型特徵,特徵模組選擇上遊產生的特徵模組,Label模組選擇上遊產出的Label模組,仿照上面進行上線,等待狀態成為已上线後繼續下遊配置。
特征生成配置,此模組可以將樣本表所有特徵進一步衍生,目前不支援自訂配置。點擊添加,選擇當前模組為特徵產生,特徵組建類型選擇排序,模型特徵模組選擇上遊樣本配置產生的模型特徵。等待狀態成為已上线後繼續下遊配置。
排序配置,點擊精排的添加,特徵模組輸出選擇上遊產出的特徵產生,其餘選項預設,點擊确定,仿照上遊進行上線。該模組狀態變成已上线,在pai-eas中能看到模型服務。
召回配置,單擊目標分類右側的添加,完成相應參數配置,單擊确认,然後進行上线。以下內容包含了多種召回配置方法,為了帶您快速體驗部署流程,您可以只配置全域熱門召回和etrec u2i召回。其他向量召回、協同度量召回等僅供參考。