精排配置

模型配置

在精排阶段,一般会调用 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_name1和scene_name2是两个推荐场景的名称),可以根据不同场景选用不同的模型,这里需要用之前在模型配置中配置好的模型的自定义名称。

配置示例

{
  "RankConf": {
    "scene_name1": {
      "RankAlgoList": [
        "fm"
      ],
      "RankScore": "${fm}"
    },
    "scene_name2": {
      "RankAlgoList": [
        "room3_mt_v2"
      ],
      "RankScore": "${room3_mt_v2_probs_ctr} * (${room3_mt_v2_probs_view} + ${room3_mt_v2_y_view_time} + 0.5 * ${room3_mt_v2_probs_on_wheat} + 0.5 * ${room3_mt_v2_y_on_wheat_time} + 0.25 * ${room3_mt_v2_y_gift} + 0.25 * ${room3_mt_v2_probs_add_friend} + 0.1)"
    }
}

字段名

类型

是否必填

描述

RankAlgoList

[]string

在 AlgoConfs 中定义的模型,表示这个场景使用哪个模型进行打分

RankScore

string

模型的融合表达式

Processor

string

当 AlgoConfs 中的 processor 为 EasyRec 时,必填,也取值为 EasyRec

BatchCount

int

批量请求模型的数据量大小,默认为 100

ContextFeatures

[]string

当 AlgoConfs 中的 processor 为 EasyRec 时, 传递的上下文特征。 如果不需要传特征,可以不设置此值。如果需要传递上下文特征到 processor, 特征的字段名称必须配置到 ContextFeatures

其中 RankScore 指的是多个目标预测值的融合表达式,其示例如上所示。例如 room3_mt_v2_probs_ctr,其中 room3_mt_v2 指的是上文中模型配置名称,probs_ctr 指的是模型配置服务中的返回值。

BatchCount 的设置是指PAI-Rec 一批请求的数据量大小。例如,推荐排序的候选集有 1000 个 item_id,将BatchCount 设为 100 时,PAI-Rec 将分 10 批发送请求,每一批请求个数为 100 个,可以根据模型推理服务的资源量灵活配置。