全部產品
Search
文件中心

Artificial Intelligence Recommendation:精排配置

更新時間:Sep 23, 2025

模型配置

在精排階段,一般會調用 EAS 上面的演算法模型服務來擷取得分,EAS 支援多種類型模型的部署,PAI-REC也支援不同模型的調用,包括 EasyRec、TorchEasyRec、tensorflow、pmml、ps、alink等,模型的資訊配置對應配置總覽中的 AlgoConfs。

EasyRec 的代碼是開源的,根據 EasyRec 文檔 中的介紹訓練模型匯出模型 後再使用 EasyRec Processor部署好 EAS 服務後,就可以使用 PAI-Rec 進行調用打分。

TorchEasyRec 是EasyRec的Torch版本,可根據 TorchEasyRec文檔中的介紹進行訓練模型匯出模型,並使用TorchEasyRec Processor 部署EAS服務,就可以使用 PAI-Rec 進行調用打分。

配置樣本

{
    "AlgoConfs": [
        {
            "Name": "room3_mt_v2",
            "Type": "EAS",
            "EasConf": {
                "Processor": "EasyRec",
                "Timeout": 300,
                "ResponseFuncName": "easyrecMutValResponseFunc",
                "Url": "http:xxx.pai-eas.aliyuncs.com/api/predict/xxx",
                "EndpointType": "DIRECT",
                "Auth": ""
            }
        },
        {
            "Name": "room3_mt_v2_torch",
            "Type": "EAS",
            "EasConf": {
                "Processor": "EasyRec",
                "Timeout": 300,
                "ResponseFuncName": "torchrecMutValResponseFunc",
                "Url": "http:xxx.pai-eas.aliyuncs.com/api/predict/xxx",
                "EndpointType": "DIRECT",
                "Auth": ""
            }
        },
        {
            "Name": "tf",
            "Type": "EAS",
            "EasConf": {
                "Processor": "TensorFlow",
                "ResponseFuncName": "tfMutValResponseFunc",
                "Url": "http:xxx.pai-eas.aliyuncs.com/api/predict/xxx",
                "Auth": ""
            }
        },
        {
            "Name": "ps_smart",
            "Type": "EAS",
            "EasConf": {
                "Processor": "PMML",
                "ResponseFuncName": "pssmartResponseFunc",
                "Url": "http:xxx.pai-eas.aliyuncs.com/api/predict/xxx",
                "Auth": ""
            }
        },
        {
            "Name": "fm",
            "Type": "EAS",
            "EasConf": {
                "Processor": "ALINK_FM",
                "ResponseFuncName": "alinkFMResponseFunc",
                "Url": "http:xxx.pai-eas.aliyuncs.com/api/predict/xxx",
                "Auth": ""
            }
        }
    ]
}

欄位名

類型

是否必填

描述

Name

string

自訂模型資訊名稱,在 RankConf 中引用

Type

string

模型部署類型

EasConf

欄位名

類型

是否必填

描述

Processor

string

模型類型,枚舉值:

  • EasyRec

  • TensorFlow

  • ALINK_FM

  • PMML

  • TFServing

Timeout

int

請求模型逾時時間

ResponseFuncName

string

需要哪個 function 解析返回的資料,這裡與 Processor 類型相匹配。

  • EasyRec

    • TF版本對應 easyrecMutValResponseFunc

    • Torch版本對應 torchrecMutValResponseFunc

  • TensorFlow 對應 tfMutValResponseFunc

  • ALINK_FM 對應 alinkFMResponseFunc

  • PMML 對應 pssmartResponseFunc

  • TFServing 對應 tfServingResponseFunc

Url

string

模型地址

EndpointType

string

枚舉值:DOCKER/DIRECT

如果引擎和模型都部署在 EAS 上,可以設定為 DIRECT,通過直連的方式請求模型,效能更高

Auth

string

模型的 Token

其中上面的 easyrecMutValResponseFunc 、 torchrecMutValResponseFunc 和 tfMutValResponseFunc指的是傳回值可以是多個目標預測值,多個目標預測值可以通過在PAIREC 中配置操作函數進行處理,如返回的多個值可以全部加起來作為最後的總排序分數依據。

如果模型部署在 EAS上,URL 和 Auth 都可以在 EAS 控制台查到。

image.png

演算法配置

演算法配置對應配置總覽中的 RankConf,RankConf 是一個Map[string]object 結構,其中 key 為情境名稱(${scene_name}和${scene_name2}是兩個推薦情境的名稱),可以根據不同情境選用不同的模型,這裡需要用之前在模型配置中配置好的模型的自訂名稱。

配置樣本

{
    "RankConf": {
        "${scene_name1}": {
            "RankAlgoList": [
                "fm"
            ],
            "RankScore": "${fm}"
        },
        "${scene_name2}": {
            "RankAlgoList": [
                "dbmtl_v1"
            ],
            "RankScore": "${dbmtl_v1_probs_ctr} * (${dbmtl_v1_probs_view} + ${dbmtl_v1_y_view_time} + 0.5 * ${dbmtl_v1_probs_on_wheat} + 0.5 * ${dbmtl_v1_y_on_wheat_time} + 0.25 * ${dbmtl_v1_y_gift} + 0.25 * ${dbmtl_v1_probs_add_friend} + 0.1)",
            "Processor": "EasyRec"
        }
    }
}

欄位名

類型

是否必填

描述

RankAlgoList

[]string

在 AlgoConfs 中定義的模型,表示這個情境使用哪個模型進行打分

RankScore

string

模型的融合運算式

Processor

string

當 AlgoConfs 中的 processor 為 EasyRec 時,必填,也取值為 EasyRec

BatchCount

int

批量請求模型的資料量大小,預設為 100

ContextFeatures

[]string

當 AlgoConfs 中的 processor 為 EasyRec 時, 傳遞的上下文特徵。 如果不需要傳特徵,可以不設定此值。如果需要傳遞上下文特徵到 processor, 特徵的欄位名稱必須配置到 ContextFeatures

ItemFeatures

[]string

當 AlgoConfs 中的 processor 為 EasyRec 時,傳遞item特徵到EasyRec processor 中,而不使用processor中緩衝的item特徵。當要傳遞item所有的特徵,可以使用["*"]配置。也可以指定相應的特徵名稱["feature1","feature2"]。此配置可以與ContextFeatures 同步設定。

其中 RankScore 指的是多個目標預測值的融合運算式,其樣本如上所示。例如 dbmtl_v1_probs_ctr,其中 dbmtl_v1 指的是上文中模型配置名稱,probs_ctr 指的是多目標模型的其中一個目標。

RankScore中支援的計算類型包括加(+)、減(-)、乘(*)、除(/)、次方(^)、取餘(%),用法都是類似的,如上述配置中兩個參數的相乘和相加,取餘則是 ${dbmel_v1_probs_ctr}%2,次方則是${dbmtl_v1_probs_ctr}^2。

多個模型融合打分也是類似的,例如有兩個模型 dbmtl_v1 和 dbmtl_v2,則 RankAlgoList 中應該填寫為 ["dbmtl_v1","dbmtl_v2"],RankScore可以填寫為 ${dbmtl_v1_probs_ctr}+${dbmtl_v2_probs_y_gift},每個模型服務拼接上各自的目標即可,這裡 probs_ctr 和 y_gift 只是作為舉例。

BatchCount 的設定是指PAI-Rec 一批請求的資料量大小。例如,推薦排序的候選集有 1000 個 item_id,將BatchCount 設為 100 時,PAI-Rec 將分 10 批發送請求,每一批請求個數為 100 個,可以根據模型推理服務的資源量靈活配置。