日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Callback 回調接口

回調接口

PAI-Rec包含內置的回調接口。回調接口主要用來記錄推薦請求時刻的實時特征日志,包括請求參數、用戶和物品的實時特征,可以用于后續的數據分析、離線模型訓練或在線學習。

背景

實時特征是推薦中很重要的一環,包括實時統計特征和實時序列特征,尤其是用戶實時序列特征。一般來說,增加實時特征能明顯的提升推薦系統的指標效果。然而實時特征對準確性的要求很高,如通過離線卡時間窗口關聯的方式(指通過離線日志反推在推薦時刻用戶和物品的實時特征),由于很難估計系統各鏈路間的延時,很容易就出現特征不準確、特征穿越的問題,在召回和排序模型中加上這些不準確的特征得到適得其反的效果。

如何定義準確性?一個訓練樣本S_i(對應推薦請求R_i)中的實時特征,需要是推薦請求R_i時刻的user和item特征,因此最佳記錄實時特征是在推薦請求打到推薦服務的時候,在算法計算推薦結果的同時,把requestId(請求標識)+user的實時特征+item的實時特征落入日志中(如datahub/kafka等),然后再同步到 MaxCompute(ODPS) 中。

image.png

接口定義

接口名稱

/api/callback

請求參數

參數名稱

參數類型

是否必須

參數說明

用例

scene_id

string

首頁推薦

homepage

uid

string

用戶注冊ID

85578510

request_id

string

請求的唯一標識

d9cb1c8d***

features

json string

用戶特征

{"age":25, "city":"beijing"}

item_list

json list

推薦的uid列表

[{"item_id":"99886867"}, {"item_id":"99888623"}]

request_info

json string

請求信息

{"recom_id":"12334234"}

請求樣例

curl 'http://host/api/callback' -d '{"uid":"84603208","request_id":"d9cb1c8d-4d3f-491b-9ea3-380481dabde3","scene_id":"homepage","features":{"age":25, "city":"beijing"}, "item_list":[{"item_id":"113939841"},{"item_id":"113764910"}],"request_info":{"recom_id":"1111111"}}'

返回數據

{
 "code":200,
 "msg":"success",
}

字段

類型

描述

示例

code

integer

返回碼標識

接口狀態碼,200成功

msg

string

提示信息

成功為success

回調配置

Callback 流程主要分兩部分

  • 加載 user/item 特征,

  • 很多情況下如果使用 EasyRec 模型, item 特征是與模型綁定到一起的。 需要請求 easyrec 模型,拿到模型生成的 FG 特征

把上面的特征數據寫入到消息隊列(datahub) 中。

"CallBackConfs": {
  "home_feed": {
    "DataSource": {
      "Name": "pairec_callback_dh",
      "Type": "datahub"
    },
    "RankConf": {
      "RankAlgoList": [
        "ali_rnk_v2_woid_callback_public_v2"
      ],
      "ContextFeatures": [
        "none"
      ],
      "Processor": "EasyRec"
    }
  }
}
  • home_feed 是場景名稱,針對哪個場景落日志

  • DataSource

    • Type 消息隊列類型,目前支持 datahub

    • pairec_callback_dh datahub 的數據源名稱, 在 DatahubConfs 能找到

  • RankConf 配置的模型信息,和正常的引擎服務的模型配置一樣,如果沒有模型產生的特征信息,可以不配置

數據源配置

  "DatahubConfs": {
    "pairec_callback_dh": {
      "Endpoint": "http://dh-cn-hangzhou-int-vpc.aliyuncs.com",
      "AccessId": "${AccessId}",
      "AccessKey": "${AccessKey}",
      "ProjectName": "<ProjectName>",
      "TopicName": "pairec_callback_log",
      "Schemas": [
        {
          "Field": "request_id",
          "Type": "string"
        },
        {
          "Field": "module",
          "Type": "string"
        },
        {
          "Field": "scene",
          "Type": "string"
        },
        {
          "Field": "request_time",
          "Type": "integer"
        },
        {
          "Field": "user_features",
          "Type": "string"
        },
        {
          "Field": "item_features",
          "Type": "string"
        },
        {
          "Field": "request_info",
          "Type": "string"
        },
        {
          "Field": "user_id",
          "Type": "string"
        },
        {
          "Field": "item_id",
          "Type": "string"
        },
        {
          "Field": "raw_features",
          "Type": "string"
        },
        {
          "Field": "generate_features",
          "Type": "string"
        },
        {
          "Field": "context_features",
          "Type": "string"
        }
      ]
    }
    }
重要

注:如果使用 PAI-Rec 控制臺進行配置,為了保持安全性,${AccessId}與${AccessKey} 可以不用替換,引擎會自動替換。

在上面的配置中, topic name 可以不用手動創建, PAI-Rec 可以根據 topic name 及 schema 自動創建。

特征加載配置

配置參考 特征配置。這里不同一點就是場景名稱 + _callback 作為特征加載的場景別名。

home_feed_callback  的場景名稱是 home_feed + _callback 來的。

"FeatureConfs": {
  "home_feed_callback": {
    "AsynLoadFeature": true,
    "FeatureLoadConfs": [
      {
        "FeatureDaoConf": {
          "AdapterType": "hologres",
          "HologresName": "pairec-holo",
          "FeatureKey": "user:uid",
          "UserFeatureKeyName": "client_str",
          "HologresTableName": "dwd_ali_user_all_feature_v2_holo",
          "UserSelectFields": "*",
          "FeatureStore": "user"
        },
        "Features": [
          {
            "FeatureType": "new_feature",
            "FeatureName": "day_h",
            "Normalizer": "hour_in_day",
            "FeatureStore": "user"
          },
          {
            "FeatureType": "new_feature",
            "FeatureName": "week_day",
            "Normalizer": "weekday",
            "FeatureStore": "user"
          },
          {
            "FeatureType": "new_feature",
            "FeatureName": "rand_int_v",
            "Normalizer": "random",
            "FeatureStore": "user"
          }
        ]
      },
      {
        "FeatureDaoConf": {
          "AdapterType": "hologres",
          "HologresName": "pairec-holo",
          "FeatureKey": "user:uid",
          "UserFeatureKeyName": "client_str",
          "HologresTableName": "dwd_ali_user_table_v3_expo_static_feature_v2_holo",
          "UserSelectFields": "*",
          "FeatureStore": "user"
        }
      }
    ]
  }
}

日志格式

callback 請求數據包含一個 uid + item 列表。 很多請求下, user 的特征比較大,為了省空間,我們會把 user 特征和 item 特征分開落下來。

user 特征日志,包含下面數據

  • request_id 請求ID, callback 請求里獲得

  • scene 場景名稱,callback 請求里獲得

  • request_time 請求時間

  • user_features user 特征, json string

  • user_id 用戶ID標識

  • request_info 額外的請求信息, callback 請求里獲得

  • module   固定值 user , 表明是 user 特征

item 特征日志,包含下面數據

  • request_id 請求ID, callback 請求里獲得

  • scene 場景名稱,callback 請求里獲得

  • request_time 請求時間

  • module   固定值 item , 表明是 item 特征

  • item_id item ID 標識

  • user_id 用戶ID標識

  • raw_features easyrec 模型返回raw features

  • generate_features easyrec 模型返回的 FG 之后的特征信息

  • context_features easyrec 模型返回的上下文特征

  • item_features item 特征, json string

若有收獲,就點個贊吧