調試日誌配置
當服務上線後,為了更精確的分析線上的結果,需要匯總各種資訊。線上下可以通過列印日誌進行調試,當服務上線後,無法靈活的進行列印。
本配置主要用於收集線上調試資訊,並能靈活地開啟將其列印到終端,或者輸出到Datahub上進行更細緻的分析(例如分析每一個召回的效果),也可以輸出到本地檔案以供其它調用。目前收集的是召回、過濾和粗排之後的items資料。
調試配置對應配置總覽中的DebugConfs,DebugConfs是一個Map[string]object結構,其中key是情境,可以對不同的情境進行配置隔離。
{
"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這個user記錄日誌,其他user不記錄。 |
DatahubName | string | 否 | 當OutputType=datahub時,需要填寫此參數。 來源於資料來源配置中的DatahubConfs的自訂名稱。 |
KafkaName | string | 否 | 當OutputType=kafka時,需要填寫此參數。 來源於資料來源配置中的KafkaConfs的執行個體名稱。 |
FilePath | string | 否 | 當OutputType=file時,需要填寫此參數。 會將debug日誌輸出到此路徑,路徑不存在時會自動建立。 |
MaxFileNum | int | 否 | 當OutputType=file時,可以選擇性填寫此參數。 設定FilePath路徑中可儲存的最大日誌數量,預設為20。路徑中每個記錄檔大小限制為1 G,超過會進行檔案輪轉。 若檔案數量超過MaxFileNum,會刪除最舊的記錄檔。 |
目前輸出的資訊包括如下:
request_id:每次推薦請求的唯一標識。
module:標識哪個模組的日誌,目前包括recall、filter和general_rank。
scene_id:情境ID。
exp_id:實驗ID。
request_time:請求時間戳記,單位為秒。
uid:使用者ID。
retrieveid:召回ID。
items:item list列表,格式為 "item1:score1:{'dbmtl_prob_click':'0.03'},item2:score2:{'dbmtl_prob_click':'0.04'}", 表示當module = recall 或 filter時, score為召回得分;
當module=general_rank、rank 和 sort 時,items 格式為 "item1:score1:{'dbmtl_prob_click':'0.03'},item2:score2:{'dbmtl_prob_click':'0.03'}",其中 score 為 general rank 或 rank 階段模型服務的打分,dbmtl_prob_click 為模型的其中一個目標得分,如果模型服務有多個目標,大括弧中會包含所有的目標得分,具體名稱以模型服務真實的多目標為準,dbmtl_prob_click這裡這是舉例。
目前在某個module下, items是分retrieveid進行輸出的。比如有5個召回源,那麼在module = recall時, 會有5條記錄,每條記錄對應一路召回。同樣,filter和general_rank也是按此邏輯列印。
Datahub 配置
在Datahub配置中,您可以不用建立topic, 只要指定topic和schemas,引擎會自動建立。
{
"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"
}
]
}
}
}當運行服務時,引擎會自動建立此Topic: pairec_debug_log,並使用上述schema。 當您在Datahub控制台,看到有日誌輸出時,系統可以自行建立MaxCompute與Datahub的訂閱關係(把Datahub中的資料落盤到MaxCompute表中)。
欄位名 | 類型 | 是否必填 | 描述 |
Endpoint | string | 是 | Datahub的DataHub網域名稱列表,如果Datahub的Project和PAI-Rec是同一個 region,一般使用 VPC 地址,否則一般使用外網地址。 |
ProjectName | string | 是 | Datahub的專案名稱。 |
TopicName | string | 是 | Datahub的Topic名稱。 |
Schemas | []map | 是 | Datahub的Schema詳情。 |
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和交換器需與當前Kafka執行個體保持一致。
特徵日誌配置
本配置主要用於收集線上user側和item側的特徵,輸出到Datahub上進行更細緻的分析。
特徵日誌配置對應配置總覽中的FeatureLogConfs,FeatureLogConfs是一個Map[string]object結構,其中key是情境,可以對不同的情境進行配置隔離。
{
"FeatureLogConfs": {
"${scene_name}": {
"OutputType": "datahub",
"DatahubName": "",
"UserFeatures": "",
"ItemFeatures": ""
}
}
}欄位名 | 類型 | 是否必填 | 描述 |
OutputType | string | 是 | 調試日誌的輸出方式,目前僅支援DataHub。 |
DatahubName | string | 是 | 當OutputType=datahub時,需要填寫此參數。 來源於資料來源配置中的DatahubConfs的自訂名稱。 |
UserFeatures | string | 否 | 由於整個user的特徵可能會有很多,這裡可以選擇user側部分特徵,多個特徵之間使用英文逗號分隔。當使用 "*" 時,會將user側所有的特徵記錄下來;如果不填此參數或者為空白,則不會落user側的任何特徵。 |
ItemFeatures | string | 否 | 同上,這裡可選擇item側的部分特徵,當使用 "*" 時,會落引擎中item側的所有特徵;當為空白時,會將召回ID和模型打分特徵記錄下來。 |
Datahub 配置
在Datahub配置中,您可以不用建立topic, 只要指定topic和schemas,引擎會自動建立。
{
"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"
}
]
}
}
}當運行服務時,引擎會自動建立此Topic: pairec_feature_log,並使用上述schema。
欄位名 | 類型 | 是否必填 | 描述 |
Endpoint | string | 是 | Datahub的DataHub網域名稱列表,如果Datahub的Project和PAI-Rec是同一個 region,一般使用 VPC 地址,否則一般使用外網地址。 |
ProjectName | string | 是 | Datahub的專案名稱。 |
TopicName | string | 是 | Datahub的Topic名稱。 |
Schemas | []map | 是 | Datahub的Schema詳情。 |