デバッグログ設定
サービスが公開された後、さまざまな情報を収集してオンラインパフォーマンスを分析できます。オフラインデバッグのためにログを出力することもできますが、この方法はオンラインサービスには十分な柔軟性がありません。
この設定は、オンラインのデバッグ情報を収集します。これを有効にすると、情報をコンソールに出力したり、各リコールの効果の分析などの詳細な分析のために 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 G に制限されます。ファイルがこの制限を超えると、ファイルのローテーションが発生します。 ファイル数が `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 設定では、Topic を作成する必要はありません。Topic とスキーマを指定すると、エンジンが自動的に作成します。
{
"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` Topic を作成し、指定されたスキーマを適用します。DataHub コンソールでログ出力を確認した後、MaxCompute と DataHub の間にサブスクリプション関係を作成できます。これにより、DataHub データが MaxCompute テーブルに保存されます。
フィールド | タイプ | 必須 | 説明 |
Endpoint | string | はい | エンドポイントは、DataHub ドメイン名リストからのドメイン名です。DataHub プロジェクトと PAI-Rec が同じリージョンにある場合は、VPC アドレスを使用します。それ以外の場合は、パブリックアドレスを使用します。 |
ProjectName | string | はい | DataHub プロジェクトの名前。 |
TopicName | string | はい | DataHub Topic の名前。 |
Schemas | []map | はい | DataHub スキーマの詳細。 |
Kafka 設定
Kafka 設定では、インスタンス名 (`DebugConfs` の `KafkaName` に対応)、`BootstrapServers` の取り込みエンドポイント、および既存の Topic の名前を設定します。
{
"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 にデプロイされるとき、ネットワーク設定の VPC (virtual private cloud) と vSwitch は、現在の Kafka インスタンスのものと同じでなければなりません。
特徴ログ設定
この設定は、オンラインのユーザー側とアイテム側の特徴を収集するために使用されます。これらの特徴は、詳細な分析のために DataHub に出力されます。
特徴ログ設定は、設定概要の `FeatureLogConfs` で定義されます。`FeatureLogConfs` は `Map[string]object` 構造です。キーはシナリオを表し、これにより各シナリオの設定を分離できます。
{
"FeatureLogConfs": {
"${scene_name}": {
"OutputType": "datahub",
"DatahubName": "",
"UserFeatures": "",
"ItemFeatures": ""
}
}
}フィールド | タイプ | 必須 | 説明 |
OutputType | string | はい | デバッグログの出力メソッド。現在、`DataHub` のみがサポートされています。 |
DatahubName | string | はい | `OutputType` が `datahub` に設定されている場合に必須です。 これは、データソース設定の `DatahubConfs` からのカスタム名です。 |
UserFeatures | string | いいえ | ユーザーは多くの特徴を持つことができます。ここでは、ユーザー側の特徴のサブセットを選択できます。複数の特徴はカンマで区切ります。アスタリスク (`*`) を使用して、すべてのユーザー側の特徴を記録します。このパラメーターが空または指定されていない場合、ユーザー側の特徴は記録されません。 |
ItemFeatures | string | いいえ | 上記と同様に、アイテム側の特徴のサブセットを選択できます。アスタリスク (`*`) を使用して、エンジン内のすべてのアイテム側の特徴を記録します。このパラメーターが空の場合、リコール ID とモデルスコアリングの特徴が記録されます。 |
Datahub 設定
Datahub 設定では、Topic を作成する必要はありません。Topic とスキーマを指定すると、エンジンが自動的に Topic を作成します。
{
"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` Topic を作成し、指定されたスキーマを適用します。
フィールド | タイプ | 必須 | 説明 |
Endpoint | string | はい | DataHub ドメイン名のリストからの DataHub エンドポイント。DataHub プロジェクトと PAI-Rec が同じリージョンにある場合、通常は VPC アドレスが使用されます。それ以外の場合は、通常はパブリックネットワークアドレスが使用されます。 |
ProjectName | string | はい | DataHub プロジェクトの名前。 |
TopicName | string | はい | DataHub Topic の名前。 |
Schemas | []map | はい | DataHub スキーマの詳細。 |