全部產品
Search
文件中心

:PAI-Rec推薦演算法定製的最佳實務文檔

更新時間:Jun 06, 2026

為方便您快捷體驗PAI-Rec產品,本文提供了一份公開資料集,您可以按照文檔說明,按步驟體驗PAI-Rec推薦演算法定製的特徵工程、召回、精排等關鍵功能的配置,產生代碼並部署到DataWorks相應的商務程序中。

前提條件

在開始執行操作前,請確認您已完成以下準備工作:

1.建立PAI-Rec執行個體並初始化服務

  1. 登入推薦系統開發平台PAI-Rec首頁,單擊立即購買

  2. 在PAI-Rec執行個體購買頁面,配置以下關鍵參數,然後單擊立即購買

    參數

    說明

    地區和可用性區域

    您的雲端服務部署的地區。

    服务类型

    本方案選擇标准版,且啟用“推荐方案定制”功能。

  3. 登入PAI-Rec管理主控台,在頂部功能表列左上方處,選擇地區。

  4. 在左側導覽列選擇執行個體列表,單擊執行個體名稱,進入執行個體詳情頁面。

  5. 單擊操作指引地區的云产品配置,跳轉至系统配置>云产品配置頁面,單擊编辑,按照如下資源配置完成相應參數配置,然後單擊退出

    資源配置

    參數

    說明

    建模

    机器学习平台 PAI 工作空间

    填寫已建立的PAI預設工作空間。

    大数据开发治理平台 DataWorks 工作空间

    填寫自動產生的DataWorks工作空間。

    大数据计算服务 MaxCompute 项目(工作)空间

    填寫已建立的MaxCompute專案。

    对象存储 OSS Bucket

    選擇已建立的OSS Bucket。

    引擎

    实时召回引擎

    確認是否使用PAI-FeatureStore,選擇

    实时特征查询

    確認是否使用PAI-FeatureStore,選擇

  6. 在左側導覽列選擇系统配置>权限管理,按照介面提示,在访问服务頁簽檢查各項雲產品授權情況,確保對應雲產品訪問狀態正常。

2. 複製公開資料集

1.同步資料表

本方案的輸入資料有兩種方案:

  1. 從pai_online_project專案中複製固定時間窗的資料,不支援任務例行調度執行。

  2. 提供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)中。具體操作步驟如下:

  1. 登入DataWorks控制台,在頂部功能表列左上方處,選擇地區。

  2. 在左側導覽列單擊數據開發與營運>資料開發

  3. 選擇已建立的DataWorks工作空間後,單擊進入資料開發

  4. 滑鼠移至上方至新建,選擇建立節點>MaxCompute>ODPS SQL,按照如下資源配置完成相應參數配置,然後單擊确认

    資源配置

    參數

    說明

    引擎執行個體

    選擇已綁定的MaxCompute資料來源。

    節點類型

    選擇節點類型ODPS SQL。

    路径

    選擇當前節點所在路徑。例如商務程序/Workflow/MaxCompute

    名称

    自訂填寫,例如Data。

  5. 在建立節點地區,複製並運行下面的代碼,將使用者表、物品表、行為表從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代碼以產生所需資料。具體操作步驟如下:

  1. 在DataWorks控制台建立PyODPS 3節點,詳情請參見建立並管理MaxCompute節點

  2. 單擊並下載create_data.py,將檔案內容粘貼到PyODPS 3節點中。

  3. 單擊右側的调度配置,並配置以下參數,然後單擊右上方的儲存image和提交image

    • 配置調度參數:

      • $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],來源為手動添加。

    • 配置調度依賴。

  4. 單擊營運中心,並選擇周期任务运维 > 周期任务

  5. 單擊目標任務操作列下的補資料 > 當前節點及下游節點

  6. 補資料配置面板中,設定業務日期,並單擊提交並跳轉

    較好的補資料時間範圍為60天,建議您將業務日期設定為任務定時調度日期-60,以確保資料的完整性。

2.配置依賴節點

為了確保後續代碼產生與部署的順利進行,請預先在您的DataWorks專案中添加三個SQL代碼節點。請將這些節點的調度依賴配置為工作空間的根節點,完成所有設定後再發布節點。具體操作步驟如下:

  1. 滑鼠移至上方至新建,選擇建立節點>通用>虛擬節點,按照如下資源配置分別建立3個虛擬節點,然後單擊确认

    資源配置

    參數

    說明

    方案預設樣本

    節點類型

    選擇節點類型。

    虛擬節點

    路径

    選擇當前節點所在路徑。

    商務程序/Workflow/通用

    名称

    分別填寫已同步的資料表名稱。

    • rec_sln_demo_user_table_v1

    • rec_sln_demo_item_table_v1

    • rec_sln_demo_behavior_table_v1

  2. 選中節點,分別將代碼節點內容設定為select 1;,然後單擊右側的调度配置,完成以下配置:

    • 時間屬性地區,設定重跑屬性運行成功或失敗後節點重跑

    • 調度依賴>依賴的上遊節點地區,輸入DataWorks工作空間名稱,選擇帶有_root尾碼的節點,單擊添加

      3個虛擬節點均需配置。

  3. 單擊虛擬節點前的image,提交該節點。

3.註冊資料

為了後續在推薦方案定製功能中配置特徵工程、召回、排序演算法,您需要先註冊同步到DataWorks專案中的三張表,具體操作步驟如下:

  1. 登入PAI-Rec管理主控台,在頂部功能表列左上方處選擇地區。

  2. 在左側導覽列選擇執行個體列表,單擊執行個體名稱,進入執行個體詳情頁面。

  3. 在左側導覽列選擇推荐方案定制>数据注册,在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個推薦情境,然後單擊确定

資源配置

參數

說明

方案預設樣本

情境名稱

自訂填寫。

HomePage

情境介紹

關於情境的詳細說明。

5.建立並配置演算法方案

如果您需要完整配置一個真實情境,建議配置的召回和精排如下。

  • 全域熱門召回:日誌資料中,全面熱門資料的統計排名取Top k。

  • 全域熱門兜底召回:使用Redis作為兜底,防止推薦介面下發資料為空白。

  • 分組熱門召回:按照城市、性別區間等指標來分類召回,這對提高熱門物品的準確性有協助。

  • etrec u2i召回:基於etrec協同過濾演算法。

  • swing u2i召回(可選):基於Swing演算法。

  • 冷啟動召回(可選):dropoutnet演算法的冷啟動召回。

  • 精排:單目標可以選擇MultiTower排序;多目標可選擇DBMTL排序。

一般當召回比較全面之後再開啟向量召回或者PDN召回等演算法。向量召回需要配合向量召回引擎,因為FeatureDB不支援向量召回,因此我們在本案例中不配置向量召回。

本文旨在體驗配置與部署流程,因此在召回配置環節只配置了全域熱門召回及RECommender(eTREC,一種協同過濾的實現)的u2i召回策略。在排序配置上,選擇了精細化排名以最佳化體驗。具體操作步驟如下:

  1. 在左側導覽列選擇推荐方案定制>方案配置,選擇已建立的情境,並單擊创建推荐方案,按照如下資源配置建立1個方案,然後單擊保存并进入算法方案配置

    未說明的參數保持預設即可,詳情請參見資料表配置

    資源配置

    參數

    說明

    方案名称

    自訂填寫。

    场景名称

    選擇已建立的推薦情境。

    离线数据源

    選擇推薦情境關聯的MaxCompute專案。

    DataWorks工作空间

    選擇推薦情境關聯的DataWorks工作空間。

    业务流程名称

    該名稱為後續部署推薦方案指令碼時,在DataWorks建立的商務程序名稱。可自訂填寫,例如Flow。

    StorageAPI配置

    國內地區:如北京、上海等可以選擇“StorageAPI”,即隨用隨付的Data Transmission Service;

    海外地區:如中國香港、新加坡、法蘭克福等,需要先購買與使用獨享Data Transmission Service資源群組(如沒有隨用隨付,需要購買包月的Data Transmission Service),然後重新整理選擇包月的Data Transmission Service名稱。在DataWorks的PAI-DLC的TorchEasyRec訓練任務中增加參數,形式類似:-odps_data_quota_name ot_xxxx_p#ot_yyyy。

    slim_mode

    如果DataWorks選購版本對遷移助手中匯入的程式碼封裝有大小限制,可使用此功能,並將超出大小限制的程式碼封裝手動上傳。本方案選擇

    OSS Bucket

    選擇推薦情境關聯的OSS Bucket。

    项目

    選擇已建立的FeatureStore專案,其中線上資料來源選擇FeatureDB。

    用户实体

    選擇FeatureStore專案對應的user特徵實體user。

    物品实体

    選擇FeatureStore專案對應的item特徵實體item。

  2. 数据表配置節點,單擊目標資料表右側的添加,按照如下資源配置分別設定行為日誌表使用者表物品表,並設定相應的分區、事件、特徵、時間戳記等欄位,然後單擊下一步

    未說明的參數保持預設即可,詳情請參見資料表配置

    行為日誌表資源配置

    在配置行為日誌表時,應依據實際資料內容作出調整。以本文為例,行為日誌包含諸如請求ID、使用者唯一識別碼、行為發生的頁面、行為時間戳記及行為類別等核心資訊。若表中包含更豐富的資料維度,推薦將這些資訊按使用者和物品分類,配置到使用者資訊或物品資訊中,以便於後續的特徵工程處理。

    參數

    說明

    方案預設樣本

    行為表名稱

    選擇登入的行為表。

    rec_sln_demo_behavior_table_v1

    時間分區

    行為表的分區欄位。

    ds

    yyyymmdd

    行為資訊配置

    请求ID

    日誌中標記每次推薦請求的ID,一般是程式產生的UUID。可不填。

    request_id

    行為事件

    指日誌中記錄行為事件的欄位。

    event

    行為事件枚舉值

    行為事件中包含的枚舉值,如曝光、點擊、加購或購買等行為。

    expr,click,praise

    行為的值

    表示行為的深度,如成交價格、觀看時間長度等欄位。

    playtime

    行為時間戳記

    日誌發生的時間,精確到秒的時間戳記。

    event_time

    時間戳記格式

    和行為時間戳記配合使用。

    unixtime

    行為情境

    表示日誌發生的情境欄位,如首頁、搜尋網頁或商品詳情頁。

    page

    情境枚舉值

    指使用了哪些情境的資料,在後續特徵工程中可以分情境統計特徵。

    home,detail

    使用者資訊配置

    用户ID

    行為表中使用者ID的標識。

    user_id

    使用者類別特徵

    行為表中存在的使用者類別特徵,如網路、操作平台或性別等。

    net_type

    物品資訊配置

    物品ID

    行為表中物品ID的標識。

    item_id

    使用者表資源配置

    參數

    說明

    方案預設樣本

    使用者表名稱

    選擇已註冊的使用者表。

    rec_sln_demo_user_table_v1

    時間分區

    使用者表的時間分區欄位。

    ds

    yyyymmdd

    使用者資訊配置

    用户ID

    使用者表中的使用者ID欄位。

    user_id

    註冊時間戳記

    該使用者註冊的時間。

    register_time

    時間戳記格式

    和註冊時間戳記配合使用。

    unixtime

    類別特徵

    使用者表的類別欄位,如性別、年齡段或所屬城市等。

    gender,city

    数值特征

    使用者表的數值欄位,如作品數、積分等。

    age,item_cnt,follow_cnt,follower_cnt

    tag特徵

    tag特徵欄位名。

    tags

    物品表資源配置

    參數

    說明

    方案預設樣本

    物品表名稱

    選擇登入的物品表。

    rec_sln_demo_item_table_v1

    時間分區

    物品表的時間分區欄位。

    ds

    yyyymmdd

    物品資訊配置

    物品ID

    物品表中的物品ID欄位。

    item_id

    作者ID

    商品所屬的作者。

    author

    上架時間戳記

    物品上架時間戳記欄位名。

    pub_time

    時間戳記格式

    和上架時間戳記配合使用。

    unixtime

    類別特徵

    物品表的類別欄位,如類目。

    category

    数值特征

    物品表的數值欄位,如作價格、累計銷量或點贊量。

    click_count,praise_count

  3. 特征配置節點,按照如下資源配置完成相應參數配置,單擊生成特征,設定特徵版本,然後單擊下一步

    單擊生成特征後,會在使用者和物品側衍生出多種統計特徵,本方案不對衍生特徵進行二次編輯,保持預設即可。您可以根據自身業務需求,對衍生特徵進行編輯,詳情請參見特徵配置

    資源配置

    參數

    說明

    方案預設樣本

    常用统计时间周期

    該配置將用於批量產生特徵。為了避免產生特徵過多,本方案設定統計時間周期為3、7、15天,分別為了統計使用者和物品在最近3天、7天和15天內的統計特徵。

    如果使用者行為數量很少,可嘗試設定21天。

    3,7,15

    重点关注行为

    選擇已配置的行為事件,建議添加次序為expr(曝光)、click(點擊)、praise(點贊)。

    expr,click,praise

  4. 召回配置節點,單擊目標分類右側的添加,完成相應參數配置,單擊确认,然後單擊下一步

    以下內容包含了多種召回配置方法,為了帶您快速體驗部署流程,您可以只配置全域熱門召回etrec u2i召回。其他向量召回、協同度量召回等僅供參考。

    資源配置

    全域熱門召回

    全域熱門召回是根據點擊事件統計得到熱門的物品熱門排行榜(top_n表示熱門排行榜個數)。如果要修改熱門的得分公式或者訪問事件,您可在產生相關代碼後,將其部署到DataWorks平台再進行修改。

    打分公式為click_uv*click_uv/(expr+adj_factor)*exp(-item_publish_days/fresh_decay_denom),其中

    • click_uv:相同點擊率(CTR)時,點擊量越多,則越熱門。

    • click_uv/(expr+adj_factor):平滑後的點擊率(CTR),其中click_uv表示點擊使用者數量,expr表示曝光數量。增加調節因子adj_factor,一方面是為了防止分母為0,另一方面是當曝光數量很少的時候,CTR會接近於1,加上adj_factor之後CTR會遠離1,從而使得CTR更加趨近於真實的CTR。

    • exp(-item_publish_days/fresh_decay_denom):懲罰發布早的商品。其中item_publish_days表示從發布時間到當前的天數。

    在編輯配置頁面中,設定召回模型名稱(例如 global_hot)、召回時間視窗(例如 15 天)、召回數目(例如 500)、曝光行為事件點擊行為事件熱門得分公式開關、召回引擎(例如 FeatureStore)及版本等參數。

    etrec u2i召回

    etrec是基於item的協同過濾演算法,詳情請參見協同過濾etrec

    編輯配置彈窗中,設定召回模型名稱(如 etrec)和召回引擎(如 HOLOGRES)。在u2i 行為權重中可新增事件及對應權重,例如 expr 權重為 0、click 權重為 1、praise 權重為 3。

    參數

    描述

    訓練天數

    表示使用多少天的行為日誌來訓練。預設為30天,您可以根據日誌量來增減。

    召回數目

    表示最終離線產出的使用者到物品的數量。

    U2ITrigger

    表示使用者有互動行為的物品。例如使用者點擊、收藏或購買的物品,一般不包含曝光物品。

    行為時間視窗

    表示收集多少天內的行為資料,預設為15,表示最近15天。

    行為時間衰減係數

    一般介於0-1之間,值越大表示過去的行為距離今天衰減越厲害,在構造trigger_item中其佔比權重越小。

    Trigger選取數目

    指每個使用者取多少個物品ID去與etrec產出的i2i資料做笛卡爾積。建議取值在10到50之間。如果Trigger的數目太大會造成召回的候選物品數量太多。

    u2i行為權重

    其中注意曝光事件要麼不設定,要麼設定為權重0。建議不設定曝光事件,即跳過使用者曝光資料。

    I2I模型設定

    etrec的參數設定,詳情請參見協同過濾etrec。其中相關Item選取數目建議不要太多。開啟 I2I 模型開關後,配置以下參數:相似性計算策略(sim_type)選擇 wbcosine(可選 asymcosine、jaccard);相關 Item 選取數目(top_n)設為 500單個使用者的最大行為數(max_bhv)設為 500單個使用者的最小行為數(min_bhv)設為 2計算策略(operator)選擇 add(可選 mul、min、max);相似性計算權重係數(weight)設為 1衰減係數(alpha)設為 0.5。配置完成後單擊 Confirm

    分組熱門召回

    即可設定按照城市、性別等屬性來統計熱門排行榜,能提供初步個人化的召回。如下樣本中,使用性別和數值的分桶號組合作為分組。

    編輯配置頁面,召回類型選擇分組熱門召回召回模型名稱填寫 group_hot召回時間視窗填寫 15召回數目填寫 500曝光行為事件選擇 expr點擊行為事件選擇 click。開啟熱門得分公式設定開關後,設定熱門得分指數調整因子100熱門得分新鮮度衰減選擇 true熱門得分新鮮度衰減因子填寫 180。在使用者分組trigger地區,單擊新增添加特徵:特徵名稱 gender(無分桶邊界)和 follow_cnt(分桶邊界為 1,5,10,20)。在行為分組trigger地區,添加特徵 net_type(無分桶邊界)。召回引擎選擇 HOLOGRES版本填寫 1,單擊確定完成配置。

    swing u2i召回

    Swing是一種item相關性計算方法,基於User-Item-User原理衡量Item的相似性。在編輯配置彈窗中設定以下參數:召回類型選擇swing u2i 召回召回模型名稱填寫swing訓練天數設為30召回數目設為500召回引擎選擇HOLOGRESU2I Trigger保持關閉,行為時間視窗設為15衰減係數設為0.2Trigger選取數目設為10。在u2i行為權重地區單擊新增按鈕添加行為權重:expr權重為0、click權重為1、praise權重為3。

    Swing I2I模型的參數配置項包括:相關Item選取數目top_n,樣本值500)、單個使用者的最大點擊數max_click_per_user,樣本值600)、單個物品的互動最大使用者數max_user_per_item,樣本值700)、最大時間跨度max_time_span,樣本值1)、調整係數alpha1=5、alpha2=1、beta=0.3)、Item權值計算方式norm_method,可選COUNT)及版本version)。配置完成後單擊確定

    向量召回

    提供兩種向量召回方式DSSMMIND ,具體介紹參考:

    • 召回目標名稱:一般指是否點擊,設定為is_click。

    • 召回目標選取: 設定為max(if(event='click', 1, 0))

      該部分在執行的時候可以參考如下代碼:

      select max(if(event='click',1,0)) is_click ,...
      from ${behavior_table}
      where between dt=${bizdate_start} and dt=${bizdate_end}
      group by req_id,user_id,item

      其中:

      • ${behavior_table}:表示行為表。

      • ${bizdate_start}:是行為時間窗的開始日期。

      • event:是${behavior_table}表裡面事件欄位,需根據具體欄位選擇。

      • is_click:即目標名稱。

      其中維度計算的公式如下:

      EMB_SQRT4_STEP8: (8 + Pow(count, 0.25)) / 8) * 8
      EMB_SQRT4_STEP4: (4 + Pow(count, 0.25)) / 4) * 4
      EMB_LN_STEP8:    (8 + Log(count + 1)) / 8) * 8
      EMB_LN_STEP4:    (4 + Log(count + 1)) / 4) * 4

      其中count表示特徵枚舉值個數。當特徵取值個數較多時,使用Log函數。

    編輯配置面板中,設定召回模型名稱dssm模型類型選擇 dssm負採樣策略關閉,召回目標設定開啟並將目標類型設為 CLASSIFICATION訓練天數填寫 30embed_dim策略選擇 EMB_SQRT4_STEP4召回引擎選擇 HOLOGRES是否增量訓練選擇 true,增量訓練天數填 1是否非同步訓練選擇 false是否是線上推理模式選擇 false興趣數1樣本權重開啟。

    設定樣本權重名稱(name)sample_weight樣本權重運算式(selection)ln(sum(playtime) + 1)情境資料篩選(scene_values)用於輸入情境資料篩選條件,多個資料用英文逗號分隔。版本(version)設定為 1

    冷啟動召回

    類似於DSSM的雙塔召回模型,分為user塔和item塔。DropoutNet是一種既適用於頭部使用者和物品,也適用於中長尾,甚至全新的使用者和物品的召回模型。

    建立配置頁面中,設定以下參數:召回類型選擇冷啟動召回模型類型(model_type)選擇dropoutnet,開啟召回目標設定(label)並配置召回目標名稱為is_click、召回目標選取為max(if(event='click', 1, 0))、目標類型為CLASSIFICATION。設定訓練天數(train_days)為30embed_dim策略選擇EMB_SQRT4_STEP4召回引擎選擇HOLOGRES是否增量訓練選擇true且增量訓練天數為1是否非同步訓練是否是線上推理模式均選擇false版本填寫1,單擊確認完成配置。

    全域熱門召回兜底

    全域熱門召回兜底和全域熱門召回基本一致,主要是為了防止全域熱門召回引擎失敗情況下能夠召回足夠多的候選集,因此將其存放在Redis儲存中,該產出只有一行資料。在編輯配置頁面中,設定召回類型全域熱門召回兜底兜底模型名稱(model_name)為 global_hot_supplement召回時間視窗(day_interval)為 15兜底召回數目(supplement_top_n)為 500曝光行為事件(exposure_event)為 expr點擊行為事件(click_event)為 click熱門得分公式設定(hot_score)開關關閉,redis資料來源名稱(redis_datasource)為 redis版本(version)為 1

    協同度量學習i2i召回

    協同度量學習i2i召回,又稱Collaborative Metric Learning I2I召回模型,基於session點擊資料計算item與item的相似性。配置協同度量學習 i2i 召回模型參數:召回模型名稱為 CoMetricLearningI2I。開啟召回目標設定後,填寫召回目標名稱 is_click,召回目標選取 max(if(event='click', 1, 0)),目標類型選擇 CLASSIFICATION。其餘配置項:訓練天數填寫 30embed_dim策略選擇 EMB_SQRT4_STEP4召回引擎選擇 HOLOGRES是否增量訓練選擇 false增量訓練天數填寫 1是否非同步訓練選擇 false版本填寫 1。完成後單擊確認

  5. 排序配置節點,單擊精排右側的添加,按照如下資源配置完成相應參數配置,單擊确认,然後單擊下一步

    資源配置

    本平台提供多種排序模型,具體可參考排序模型。下面是按照多目標排序模型DBMTL來設定相關的排序參數。

    在排序參數配置頁面,將排序類型設為精排精排模型名稱(model_name)填寫dbmtl過濾欄位(exclude_field)輸入playtime訓練天數(train_days)設為30模型類型選擇(model_type)選擇dbmtlembed_dim策略(embed_dim_policy)選擇EMB_SQRT4_STEP4是否增量訓練(is_incremental)選擇false增量訓練天數(incremental_train_days)設為1是否非同步訓練(is_async)選擇false版本(version)設為1

    單擊精排目標設定(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),單擊確定

  6. 生成脚本節點,單擊生成部署脚本

    重要

    指令碼產生成功後,系統將產生一個OSS地址,該OSS路徑儲存了待部署的所有檔案。您可以將該地址儲存到本地,方便後續使用手動方式部署指令碼。

  7. 指令碼產生完成後,在彈窗中單擊确定,跳轉至推荐方案定制>部署记录頁面。

    如果產生失敗,請查看作業記錄,分析並解決具體報錯問題,然後重建指令碼。

6.部署推薦方案

指令碼產生完成後,您可以通過以下兩種方式,將該指令碼部署至DataWorks。

方式一:通過推薦全鏈路深度定製開發平台部署

  1. 單擊目標方案右側的前往部署。在部署記錄頁面,可通過情境部署狀態篩選記錄。找到目標推薦方案(如 pai_rec_testdemo_v1),確認其部署狀態為已就緒

  2. 部署预览頁面的文件diff地區,選擇要部署的檔案。本方案為首次部署,單擊全选,然後單擊部署到DataWorks

    頁面自動返回到部署记录頁面,顯示指令碼部署運行中。部署完成後,在 部署記錄 頁面可查看部署結果,推薦方案 pai_rec_testdemo_v1 對應情境 HomePage,部署狀態顯示為 運行中

  3. 等待一段時間後,單擊image重新整理列表,查看部署狀態。

    • 如果部署失敗,請單擊操作列下的查看日志,分析並解決具體報錯問題,然後重建指令碼並部署。

    • 部署状态變為成功,代表指令碼已成功部署。您可以前往該方案配置的DataWorks工作空間下的資料開發頁面,查看部署好的代碼,詳情請參見資料開發:開發人員。部署成功後,在 DataStudio(資料開發) 左側導航面板中,展開 商務程序 > Workflow > MaxCompute > 資料開發,可查看已部署的節點檔案夾,包括 featurefeature_v726rank_v1recall_v1(含 etrec_u2i_recallglobal_hot_recall 子節點)、test 等。

  4. 查看任務補資料流程。

    1. 推荐方案定制 > 部署记录頁面,單擊已部署成功的推薦方案操作列下的详情

    2. 部署预览頁面,單擊查看任務補資料流程,瞭解補資料流程和相關說明,確保資料的完整性。

    3. 保證使用者表、物品表、使用者行為表分區都有最近n天(n的值可以是:訓練時間窗加上最大特徵時間窗的數值)的資料。如果是使用本文的demo資料,注意同步最新的資料分區。如果使用Python指令碼產出資料,則在DataWorks營運中心補數產出最新的資料分區。

    4. 點擊创建补数任务,在补数任务列表下面點擊依次启动任务。保證任務都成功運行。某個任務如果運行失敗,可以點擊详情來查看日誌資訊,分析並解決相應的錯誤,然後重跑即可。重跑成功後需要點擊頁面左上方的续跑,直至任務全部成功。補資料流程DAG圖展示了完整的特徵工程pipeline:頂部為三個資料來源表(pairec_demo.rec_sln_demo_item_table_v1pairec_demo.rec_sln_demo_behavior_table_v1pairec_demo.rec_sln_demo_user_table_v1),依次經過預先處理(preprocess)、寬表構建(behavior_table_v1_wide等)、彙總統計(item_id_30d_agguser_id_30d_agg等)和靜態特徵提取,產生全特徵表(item_table_v1_all_featuser_table_v1_all_feat),最終通過PyODPS3類型的create_sync_onlinestore節點同步至線上特徵儲存。每個節點卡片包含補數起止日期和補數順序等說明。可單擊左上方建立補數任務按鈕發起補數。

方式二:通過遷移助手部署

指令碼產生成功後,您也可以前往DataWorks控制台,通過遷移助手功能手動部署指令碼,其中關鍵參數說明如下,其他動作詳情,請參見建立和查看DataWorks匯入任務

  • 匯入名稱:按照控制台提示進行設定。

  • 上傳方式:使用OSS檔案,輸入OSS連結並進行校正

    部署檔案存放在步驟5產生的OSS地址中,例如oss://examplebucket/algoconfig/plan/1723717372/package.zip,您可登入OSS控制台,按如下步驟擷取相應檔案的URL連結。在 OSS 管理主控台左側導覽列單擊Bucket 列表,進入目標 Bucket 後單擊檔案清單,找到並單擊目標檔案(如 package.zip),在右側彈出的詳情面板中開啟HTTPS開關,然後單擊複製檔案 URL擷取簽名 URL,將該 URL 作為 OSS 連結輸入。

7.凍結節點

此文檔是Demo資料,當一鍵補數已經完成,需要凍結營運中心裏面的任務(步驟2.2中三個節點),防止任務每天調度執行。

進入DataWorks的營運中心,滑鼠選擇周期任务运维>周期任务,搜尋剛才建立節點名稱(如rec_sln_demo_user_table_v1),選中目標節點(工作空間.節點名),選擇暫停(凍結)即可。