O PAI-Rec oferece dois mecanismos de log — logs de depuração e logs de recursos — para ajudar você a monitorar e analisar seu service de recomendação online.
|
Tipo de log |
Finalidade |
Destinos de saída |
|
Log de depuração |
Captura dados de itens após as etapas de recall, filtro e classificação preliminar para análise do pipeline |
console, DataHub, Kafka, arquivo local |
|
Log de recursos |
Captura recursos online do lado do usuário e do item para análise de recursos |
DataHub |
Configuração de log de depuração
A configuração de log de depuração corresponde a DebugConfs na visão geral da configuração. DebugConfs é uma estrutura Map[string]object indexada pelo nome do cenário, o que permite configurações isoladas por cenário.
{
"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
}
}
}
Campos
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Destino de saída dos logs de depuração. Valores válidos: |
|
|
int |
Sim |
Taxa de amostragem, de 0 a 100. Defina como 0 para desativar a saída de depuração. Consulte Escolher uma taxa de amostragem. |
|
|
[]string |
Não |
Registra logs apenas para os UIDs especificados. Por exemplo, |
|
|
string |
Não |
Obrigatório quando |
|
|
string |
Não |
Obrigatório quando |
|
|
string |
Não |
Obrigatório quando |
|
|
int |
Não |
Aplicável quando |
Escolher uma taxa de amostragem
Serviços de recomendação online geralmente lidam com alto QPS. Como os problemas tendem a se repetir entre requisições, coletar todas as entradas de log raramente é necessário e gera sobrecarga. Defina Rate com base no QPS do service: valores menores reduzem o volume para serviços de alto throughput, enquanto 100 captura todas as requisições. Definir Rate como 0 desativa completamente a saída de depuração.
Campos de log de saída
Cada registro de log de depuração contém os seguintes campos.
|
Campo |
Tipo |
Descrição |
|
|
string |
ID exclusivo para cada requisição de recomendação. |
|
|
string |
Estágio do pipeline que gerou o log. Valores atuais: |
|
|
string |
ID do cenário. |
|
|
string |
ID do experimento. |
|
|
integer |
Timestamp UNIX da requisição em segundos. |
|
|
string |
ID do usuário. |
|
|
string |
ID da source de recall. |
|
|
string |
Lista de itens desta source de recall. Consulte os detalhes de formato abaixo. |
Formato do campo items
item1:score1:{'dbmtl_prob_click':'0.03'},item2:score2:{'dbmtl_prob_click':'0.04'}
O significado de score depende do valor de module:
recalloufilter:scorerepresenta a pontuação de recall.general_rank,rankousort:scoreindica a pontuação do service de modelo proveniente do estágio de classificação geral ou de classificação. As chaves contêm todas as pontuações-alvo do modelo.dbmtl_prob_clické um exemplo; os nomes reais dependem do service de modelo.
Dentro de um módulo, os registros são agrupados por retrieveid. Por exemplo, cinco fontes de recall produzem cinco registros separados quando module é recall. Os módulos filter e general_rank seguem o mesmo padrão.
Configuração do DataHub
O mecanismo cria automaticamente o tópico do DataHub na inicialização do service. Assim que a saída de log aparecer no console do DataHub, configure uma assinatura entre MaxCompute e DataHub para persistir os dados em uma tabela do MaxCompute.
{
"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"}
]
}
}
}
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Endpoint do DataHub obtido na Lista de nomes de domínio do DataHub. Use um endpoint de VPC se o DataHub e o PAI-Rec estiverem na mesma região; caso contrário, use um endpoint público. |
|
|
string |
Sim |
Nome do projeto do DataHub. |
|
|
string |
Sim |
Nome do tópico do DataHub. |
|
|
[]map |
Sim |
Definição de schema do tópico do DataHub. |
Configuração do Kafka
Configure o nome da instância (correspondente a KafkaName em DebugConfs), o endpoint de ingestão BootstrapServers e o nome de um tópico Kafka existente.
{
"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"
}
}
}
Ao configurar pelo console do PAI-Rec e implantar no Elastic Algorithm Service (EAS), a Virtual Private Cloud (VPC) e o vSwitch na configuração de rede devem corresponder aos da instância Kafka.
Configuração de log de recursos
A configuração de log de recursos é definida em FeatureLogConfs na visão geral da configuração. Assim como DebugConfs, utiliza uma estrutura Map[string]object indexada pelo nome do cenário para isolamento por cenário.
{
"FeatureLogConfs": {
"${scene_name}": {
"OutputType": "datahub",
"Rate": 10,
"DatahubName": "",
"UserFeatures": "",
"ItemFeatures": ""
}
}
}
Campos
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Destino de saída. Atualmente, apenas |
|
|
string |
Sim |
Nome personalizado definido em |
|
|
int |
Não |
Taxa de amostragem, de 0 a 100. Para compatibilidade com versões anteriores, omitir este campo ou defini-lo como 0 amostra todos os dados (equivalente a 100). |
|
|
string |
Não |
Lista separada por vírgulas de recursos do lado do usuário a serem registrados. Use |
|
|
string |
Não |
Lista separada por vírgulas de recursos do lado do item a serem registrados. Use |
|
|
bool |
Não |
Quando ativado, os recursos do usuário e do item são gravados como registros de log separados. Por padrão, cada registro contém o conjunto completo de recursos do usuário mais os recursos de um item, o que gera dados redundantes do usuário em alto QPS. Ative este campo para eliminar essa redundância. |
Configuração do DataHub
O mecanismo cria automaticamente o tópico do DataHub na inicialização do service.
{
"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"}
]
}
}
}
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Endpoint do DataHub obtido na Lista de nomes de domínio do DataHub. Use um endpoint de VPC se o DataHub e o PAI-Rec estiverem na mesma região; caso contrário, use um endpoint público. |
|
|
string |
Sim |
Nome do projeto do DataHub. |
|
|
string |
Sim |
Nome do tópico do DataHub. |
|
|
[]map |
Sim |
Definição de schema do tópico do DataHub. |