モデル構成
詳細ランクステージでは、通常、Elastic Algorithm Service(EAS)上のアルゴリズムモデルサービスを呼び出してスコアを取得します。 EAS は様々なタイプのモデルのデプロイをサポートしており、PAI Recommendation(PAI-Rec)も EasyRec、TorchEasyRec、TensorFlow、PMML、PS、Alink など、様々なモデルの呼び出しをサポートしています。 モデル情報構成は、構成概要の AlgoConfs に対応します。
EasyRec のコードはオープンソースです。モデルをトレーニングし、モデルをエクスポートし、EasyRec プロセッサ(スコアリングサービス)を使用して、EasyRec ドキュメントに基づいて EAS サービスをデプロイできます。 PAI-Rec を使用して呼び出しとスコアリングを行うことができます。
TorchEasyRec は EasyRec の Torch バージョンです。 モデルをトレーニングし、モデルをエクスポートし、TorchEasyRec プロセッサを使用して、TorchEasyRec ドキュメントに基づいて 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 | はい | モデルタイプ、列挙値:
|
Timeout | int | いいえ | リクエストモデルタイムアウト |
ResponseFuncName | string | はい | 返されたデータを解析するために必要な関数。Processor タイプと一致します。
|
Url | string | はい | モデルアドレス |
EndpointType | string | いいえ | 列挙値:DOCKER/DIRECT エンジンとモデルの両方が EAS にデプロイされている場合、DIRECT に設定して直接接続でモデルをリクエストできます。これにより、パフォーマンスが向上します。 |
Auth | string | はい | モデルトークン |
上記の easyrecMutValResponseFunc、torchrecMutValResponseFunc、および tfMutValResponseFunc は、複数のターゲット予測値を含むことができる戻り値です。これらの複数のターゲット予測値は、PAIREC で操作関数を構成することで処理できます。たとえば、すべての戻り値を合計して、最終的な合計ランキングスコアの基礎とすることができます。
モデルが EAS にデプロイされている場合、Url と Auth はどちらも EAS コンソールにあります。

アルゴリズム構成
アルゴリズム構成は、構成の概要の RankConf に対応します。RankConf は Map[string]object 構造で、キーはシナリオ名です (${scene_name1} と ${scene_name2} は 2 つの推奨シナリオの名前です)。シナリオごとに異なるモデルを選択できます。モデル構成で構成されたカスタムモデル名を使用する必要があります。
構成例:
{
"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)",
"Processor": "EasyRec"
}
}フィールド | タイプ | 必須 | 説明 |
RankAlgoList | []string | はい | AlgoConfs で定義されたモデル。このシナリオでスコアリングにどのモデルを使用するかを示します。 |
RankScore | string | はい | モデル融合式。 |
Processor | string | いいえ | AlgoConfs のプロセッサが EasyRec の場合は入力必須で、値も EasyRec です。 |
BatchCount | int | いいえ | バッチリクエストモデルデータサイズ。 デフォルト値:100。 |
ContextFeatures | []string | いいえ | AlgoConfs のプロセッサが EasyRec の場合、コンテキスト特徴が渡されます。 渡す必要のある特徴がない場合は、この値を省略できます。 コンテキスト特徴をプロセッサに渡す必要がある場合は、特徴のフィールド名を ContextFeatures で構成する必要があります。 |
ItemFeatures | []string | いいえ | AlgoConfs のプロセッサが EasyRec の場合、プロセッサにキャッシュされたアイテム特徴を使用する代わりに、アイテム特徴が EasyRec プロセッサに渡されます。 すべてのアイテム特徴を渡すには、["*"] 構成を使用できます。 また、["feature1","feature2"] 形式で関連する特徴を指定することもできます。 このフィールドは、ContextFeatures フィールドと一緒に構成できます。 |
RankScore は、複数のターゲット予測値の融合式です。たとえば、dbmtl_v1_probs_ctr の場合、dbmtl_v1 は前述のモデル構成名であり、probs_ctr はモデル構成サービスの戻り値です。
RankScore 式では、加算 (+)、減算 (-)、乗算 (*)、除算 (/)、べき乗 (^)、および剰余 (%) の算術演算子がサポートされています。これらの演算子は同様の方法で使用できます。前述の文の RankScore 式は参考用です。剰余演算の例: ${dbmel_v1_probs_ctr}%2。べき乗演算の例: ${dbmel_v1_probs_ctr}^2。
マルチモデル融合スコアリングも同様のアプローチに従います。たとえば、dbmtl_v1 と dbmtl_v2 の 2 つのモデルがある場合、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 個のリクエストが含まれます。 これは、モデル推論サービスのリソースに応じて柔軟に構成できます。