デバッグログの設定
サービスが公開された後、さまざまな情報を収集してオンラインパフォーマンスを分析できます。オフラインデバッグのためにログを出力することもできますが、この方法はオンラインサービスにとっては柔軟性が十分ではありません。
この設定は、オンラインのデバッグ情報を収集します。この設定を有効にすると、情報をコンソールに出力したり、各リコールの効果を分析するなどの詳細な分析のために DataHub に出力したり、他の呼び出しのためにローカルファイルに書き込んだりできます。現在、この設定は、リコール、フィルタリング、および粗ランクの段階を経た後のアイテムデータを収集します。
デバッグ設定は、設定概要の `DebugConfs` に対応します。`DebugConfs` は `Map[string]object` 構造で、キーはシナリオを表します。これにより、さまざまなシナリオに対して分離された設定を作成できます。
{
"DebugConfs": {
"${scene_name}": {
"OutputType": "datahub",
"Rate": 0,
"DebugUsers": [
"1001"
],
"DatahubName": "dh_debug_log",
"KafkaName": "pairec_debug_log",
"FilePath": "/Users/username/pairec/debug_log/",
"MaxFileNum": 20
}
}
}
|
フィールド |
型 |
必須 |
説明 |
|
OutputType |
string |
はい |
デバッグログの出力方法。有効な値:
|
|
Rate |
int |
はい |
ログのサンプリング率。値の範囲は 0 から 100 です。オンラインサービスの秒間クエリ数 (QPS) に基づいてこの値を調整してください。 注意: 値が 0 の場合、デバッグ情報は出力されません。 |
|
DebugUsers |
[]string |
いいえ |
特定の UID のログのみを記録します。たとえば、`"DebugUsers": [ "1001"]` は、ユーザー 1001 のログのみが記録されることを意味します。 |
|
DatahubName |
string |
いいえ |
`OutputType` が `datahub` に設定されている場合に必須です。 これは、データソース設定内の `DatahubConfs` で定義したカスタム名です。 |
|
KafkaName |
string |
いいえ |
`OutputType` が `kafka` に設定されている場合に必須です。 これは、データソース設定内の `KafkaConfs` で定義したインスタンス名です。 |
|
FilePath |
string |
いいえ |
`OutputType` が `file` に設定されている場合に必須です。 デバッグログはこのパスに出力されます。パスが存在しない場合は自動的に作成されます。 |
|
MaxFileNum |
int |
いいえ |
`OutputType` が `file` に設定されている場合はオプションです。 `FilePath` ディレクトリに保存できるログファイルの最大数を設定します。デフォルト値は 20 です。各ログファイルは 1 GB に制限されます。ファイルがこの制限を超えると、ファイルのローテーションが行われます。 ファイル数が `MaxFileNum` を超えると、最も古いログファイルが削除されます。 |
出力情報には、次のフィールドが含まれます:
-
request_id:各推薦リクエストの一意の ID。
-
module:ログを生成したモジュール。現在のモジュールには、`recall`、`filter`、`general_rank` が含まれます。
-
scene_id:シナリオ ID。
-
exp_id:実験 ID。
-
request_time:リクエストの UNIX タイムスタンプ (秒単位)。
-
uid:ユーザー ID。
-
retrieveid:リコール ID。
-
items:アイテムのリスト。フォーマットは `"item1:score1:{'dbmtl_prob_click':'0.03'},item2:score2:{'dbmtl_prob_click':'0.04'}"` です。`module` が `recall` または `filter` の場合、`score` はリコールスコアです。
`module` が `general_rank`、`rank`、または `sort` の場合、フォーマットは `"item1:score1:{'dbmtl_prob_click':'0.03'},item2:score2:{'dbmtl_prob_click':'0.03'}"` です。この場合、`score` は総合ランクまたはランク段階でのモデルサービスからのスコアです。`dbmtl_prob_click` はモデルのターゲットスコアの 1 つです。モデルサービスに複数のターゲットがある場合、中括弧にはすべてのターゲットスコアが含まれます。ターゲットの実際の名前はモデルサービスに依存し、`dbmtl_prob_click` は単なる例です。
現在、モジュール内では、アイテムは各 `retrieveid` ごとに個別に出力されます。たとえば、5 つのリコールソースがある場合、`module` が `recall` のときに 5 つのレコードが生成されます。各レコードは 1 つのリコールソースに対応します。`filter` および `general_rank` モジュールも同じロギングロジックに従います。
DataHub の設定
DataHub の設定では、トピックを作成する必要はありません。トピックとスキーマを指定すると、エンジンが自動的に作成します。
{
"DatahubConfs": {
"dh_debug_log": {
"Endpoint": "http://dh-cn-beijing-int-vpc.aliyuncs.com",
"ProjectName": "project_test",
"TopicName": "pairec_debug_log",
"Schemas": [
{
"Field": "request_id",
"Type": "string"
},
{
"Field": "module",
"Type": "string"
},
{
"Field": "scene_id",
"Type": "string"
},
{
"Field": "request_time",
"Type": "integer"
},
{
"Field": "exp_id",
"Type": "string"
},
{
"Field": "items",
"Type": "string"
},
{
"Field": "retrieveid",
"Type": "string"
},
{
"Field": "uid",
"Type": "string"
}
]
}
}
}
サービスが実行されると、エンジンは自動的に `pairec_debug_log` トピックを作成し、指定されたスキーマを適用します。DataHub コンソールでログ出力を確認した後、MaxCompute と DataHub の間にサブスクリプション関係を作成できます。これにより、DataHub のデータが MaxCompute テーブルに保存されます。
|
フィールド名 |
型 |
必須 |
説明 |
|
Endpoint |
string |
はい |
エンドポイントは、DataHub ドメイン名リストのドメイン名です。DataHub プロジェクトと PAI-Rec が同じリージョンにある場合は、VPC アドレスを使用します。それ以外の場合は、パブリックアドレスを使用します。 |
|
ProjectName |
string |
はい |
DataHub プロジェクトの名前。 |
|
TopicName |
string |
はい |
DataHub トピックの名前。 |
|
Schemas |
[]map |
はい |
DataHub スキーマの詳細。 |
Kafka の設定
Kafka の設定では、インスタンス名 (`DebugConfs` の `KafkaName` に対応)、`BootstrapServers` 接続エンドポイント、および既存のトピックの名前を設定します。
{
"KafkaConfs": {
"pairec_debug_log": {
"BootstrapServers": "alikafka-post-cn-xxxxx-1.alikafka.aliyuncs.com:9093,alikafka-post-cn-xxxxx-2.alikafka.aliyuncs.com:9093,alikafka-post-cn-xxxxx-3.alikafka.aliyuncs.com:9093",
"Topic": "debug_log"
}
}
}
PAI-Rec コンソールを使用して設定する場合、サービスが EAS にデプロイされるとき、ネットワーク設定の Virtual Private Cloud (VPC) と vSwitch は、現在の Kafka インスタンスのものと同じである必要があります。
特徴量ログの設定
この設定は、オンラインのユーザー側とアイテム側の特徴量を収集するために使用されます。これらの特徴量は、詳細な分析のために DataHub に出力されます。
特徴量ログの設定は、設定概要の `FeatureLogConfs` で定義されます。`FeatureLogConfs` は `Map[string]object` 構造です。キーはシナリオを表し、これにより各シナリオの設定を分離できます。
{
"FeatureLogConfs": {
"${scene_name}": {
"OutputType": "datahub",
"Rate": 10,
"DatahubName": "",
"UserFeatures": "",
"ItemFeatures": ""
}
}
}
|
フィールド |
型 |
必須 |
説明 |
|
OutputType |
string |
はい |
デバッグログの出力方法。現在、`DataHub` のみがサポートされています。 |
|
DatahubName |
string |
はい |
`OutputType` が `datahub` に設定されている場合に必須です。 これは、データソース設定内の `DatahubConfs` で定義したカスタム名です。 |
|
Rate |
int |
いいえ |
データサンプリング率。値の範囲は 0 から 100 です。オンラインサービスの QPS に基づいてこの値を調整してください。 重要
以前のバージョンとの互換性を確保するため、このパラメーターを指定しないか、`Rate` を 0 に設定した場合、すべてのデータがサンプリングされます。これは `Rate` を 100 に設定するのと同じです。 |
|
UserFeatures |
string |
いいえ |
ユーザーは多くの特徴量を持つことができます。ここでは、ユーザー側の特徴量のサブセットを選択できます。複数の特徴量はカンマで区切ります。アスタリスク (`*`) を使用して、すべてのユーザー側の特徴量を記録します。このパラメーターが空または指定されていない場合、ユーザー側の特徴量は記録されません。 |
|
ItemFeatures |
string |
いいえ |
上記と同様に、アイテム側の特徴量のサブセットを選択できます。アスタリスク (`*`) を使用して、エンジン内のすべてのアイテム側の特徴量を記録します。このパラメーターが空の場合、リコール ID とモデルスコアリング特徴量が記録されます。 |
|
SplitUserItemLogs |
bool |
いいえ |
ユーザーとアイテムの特徴量ログを分離するかどうかを指定します。デフォルトでは、単一のリクエストに対する各ログレコードには、ユーザー特徴量の完全なセットと 1 つのアイテムの特徴量が含まれます。これにより、冗長なユーザー特徴量データが作成されます。このパラメーターを有効にすると、1 つのログレコードにはユーザー特徴量のみが含まれ、同じリクエストの後続のレコードにはアイテム特徴量のみが含まれるようになります。これにより、データ冗長性が排除されます。 |
DataHub の設定
DataHub の設定では、トピックを作成する必要はありません。トピックとスキーマを指定すると、エンジンが自動的にトピックを作成します。
{
"DatahubConfs": {
"dh_feature_log": {
"Endpoint": "http://dh-cn-beijing-int-vpc.aliyuncs.com",
"ProjectName": "",
"TopicName": "pairec_feature_log",
"Schemas": [
{
"Field": "request_id",
"Type": "string"
},
{
"Field": "scene_id",
"Type": "string"
},
{
"Field": "exp_id",
"Type": "string"
},
{
"Field": "request_time",
"Type": "integer"
},
{
"Field": "user_id",
"Type": "string"
},
{
"Field": "user_features",
"Type": "string"
},
{
"Field": "item_id",
"Type": "string"
},
{
"Field": "position",
"Type": "string"
},
{
"Field": "item_features",
"Type": "string"
}
]
}
}
}
サービスが実行されると、エンジンは自動的に `pairec_feature_log` トピックを作成し、指定されたスキーマを適用します。
|
フィールド名 |
型 |
必須 |
説明 |
|
Endpoint |
string |
はい |
DataHub ドメイン名リストからの DataHub エンドポイント。DataHub プロジェクトと PAI-Rec が同じリージョンにある場合、通常は VPC アドレスが使用されます。それ以外の場合は、通常、パブリックネットワークアドレスが使用されます。 |
|
ProjectName |
string |
はい |
DataHub プロジェクトの名前。 |
|
TopicName |
string |
はい |
DataHub トピックの名前。 |
|
Schemas |
[]map |
はい |
DataHub スキーマの詳細。 |