Use um conjunto de dados público para configurar engenharia de features, recall e ranking no PAI-Rec e implante o código gerado no DataWorks. A abordagem modular permite publicar ou despublicar componentes individuais sem afetar o restante do pipeline.
Por que modularizar a personalização da solução de recomendação?
Grupos de features simplificam a iteração do modelo.
A publicação com um clique implanta o código e inicia o backfill de dados automaticamente.
Somente o módulo de ranking executa o backfill completo de todos os componentes necessários (grupos de features, amostras e módulos de geração de features), reduzindo o retrabalho causado por erros na engenharia de features.
Pré-requisitos
Conclua as seguintes preparações:
Create a bucket no OSS.
Crie uma VPC e um vSwitch. Build a VPC with an IPv4 CIDR block.
Ative o PAI-FeatureStore (consulte a seção Prerequisites em Create a Data Source). Não ative o Hologres. Selecione FeatureDB como source de dados (Create an Online Data Source: FeatureDB).
Activate MaxCompute e Create a MaxCompute project chamado
project_mc.-
Consulte o Purchase guide e conclua as seguintes operações:
Create a workspace no DataWorks.
Adquira um grupo de recursos Serverless (Use a Serverless resource group). Esse grupo sincroniza dados para o PAI-FeatureStore e executa comandos
eascmdpara criar e atualizar services do PAI-EAS.-
Configure as fontes de dados do DataWorks:
Crie e vincule uma source de dados OSS (Data Source Management).
Crie e vincule uma source de dados MaxCompute (Bind MaxCompute compute resources).
Crie um projeto FeatureStore e uma entidade de feature (Step 2: Create and register FeatureStore). Ignore esta etapa se usar um grupo de recursos Serverless. Se usar um grupo de recursos dedicado, instale o SDK Python do FeatureStore no grupo de recursos (Install the FeatureStore Python SDK).
Activate Realtime Compute for Apache Flink. Em Storage type, selecione OSS bucket (não selecione Fully managed storage). O bucket OSS deve corresponder ao configurado para o PAI-Rec. O Flink registra dados de comportamento do usuário em tempo real e calcula features de usuário em tempo real.
Se usar o EasyRec (framework baseado em TensorFlow), o treinamento será executado no MaxCompute por padrão.
Se usar o TorchEasyRec (framework baseado em PyTorch), o treinamento será executado no PAI-DLC por padrão. Para baixar dados do MaxCompute no PAI-DLC, ative o Data Transmission Service (Purchase and use a dedicated Data Transmission Service resource group).
1. Criar uma instância do PAI-Rec e inicializar o service
Faça login na página inicial da Recommendation System Development Platform e clique em Buy Now.
-
Na página de compra da instância PAI-Rec, configure os parâmetros principais a seguir e clique em Buy Now.
Parameter
Description
Region and zone
Região onde o service cloud está implantado.
Service Type
Selecione Standard Edition and enable Recommendation Solution Customization.
Faça login no PAI-Rec Management Console. No canto superior esquerdo da barra de menu superior, selecione uma região.
No painel de navegação à esquerda, escolha Instances e clique no nome da instância para abrir a página de detalhes.
-
Na seção Procedure, clique em Cloud Service Configuration para abrir a página System Configuration > Cloud Service Configuration. Clique em Edit, configure os parâmetros conforme a tabela Resource configuration e clique em Exit.
No painel de navegação à esquerda, escolha System Configuration > Permissions. Na aba Services, verifique o status de autorização de cada service cloud.
2. Clonar o conjunto de dados público
1. Sincronizar tabela de dados
Há duas opções de entrada de dados:
Clonar dados do pai_online_project dentro de uma janela de tempo fixa. Esta opção não suporta tarefas agendadas.
Usar um script Python para gerar dados. Execute a tarefa no DataWorks para gerar dados de um intervalo de tempo especificado.
Para geração diária agendada de dados e treinamento de modelos, implante um script Python. Consulte a aba Generate data using code.
Janela de tempo fixa
O PAI-Rec prepara três tabelas no projeto público pai_online_project:
Tabela de usuários:
pai_online_project.rec_sln_demo_user_tableTabela de itens:
pai_online_project.rec_sln_demo_item_tableTabela de comportamentos:
pai_online_project.rec_sln_demo_behavior_table
As operações a seguir usam essas três tabelas. Como os dados são gerados aleatoriamente para simulação, métricas de treinamento como AUC podem ser baixas. Execute comandos SQL no DataWorks para sincronizar os dados das tabelas de pai_online_project para seu projeto DataWorks (por exemplo, DataWorks_a):
Faça login no DataWorks console e selecione uma região no canto superior esquerdo da barra de menu superior.
No painel de navegação à esquerda, clique em Data Development and O&M > Data Development.
Selecione o workspace do DataWorks criado e clique em Enter Data Development.
-
Passe o mouse sobre Create e escolha New node > MaxCompute > ODPS SQL. Configure os parâmetros conforme a tabela a seguir e clique em Confirm.
No editor do novo nó, copie e execute o código a seguir para sincronizar as tabelas de usuários, itens e comportamentos do projeto
pai_online_projectpara seu projeto MaxCompute (por exemplo,project_mc). Antes de executar o código, defina variáveis para especificar uma janela de dados de 100 dias terminando nabizdate. Normalmente, definabizdatecomo o dia anterior. Na área Scheduling parameters, clique em Add Parameter e adicione dois parâmetros: bizdate com o valor$[yyyymmdd-1]e bizdate_100 com o valor$[yyyymmdd-100]. A execução do código a seguir sincroniza os dados do projeto públicopai_online_projectpara seu projeto:
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1(
user_id BIGINT COMMENT 'Unique user ID',
gender STRING COMMENT 'Gender',
age BIGINT COMMENT 'Age',
city STRING COMMENT 'City',
item_cnt BIGINT COMMENT 'Number of published items',
follow_cnt BIGINT COMMENT 'Number of followed accounts',
follower_cnt BIGINT COMMENT 'Number of followers',
register_time BIGINT COMMENT 'Registration time',
tags STRING COMMENT 'User tags'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_user_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1(
item_id BIGINT COMMENT 'Item ID',
duration DOUBLE COMMENT 'Video duration',
title STRING COMMENT 'Title',
category STRING COMMENT 'Primary category',
author BIGINT COMMENT 'Author',
click_count BIGINT COMMENT 'Total clicks',
praise_count BIGINT COMMENT 'Total likes',
pub_time BIGINT COMMENT 'Publish time'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_item_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1(
request_id STRING COMMENT 'Tracking ID/Request ID',
user_id STRING COMMENT 'Unique user ID',
exp_id STRING COMMENT 'Experiment ID',
page STRING COMMENT 'Page',
net_type STRING COMMENT 'Network type',
event_time BIGINT COMMENT 'Event time',
item_id STRING COMMENT 'Item ID',
event STRING COMMENT 'Event type',
playtime DOUBLE COMMENT 'Playback/Reading duration'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_behavior_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
Geração de código
Dados de janela de tempo fixa não suportam tarefas agendadas. Para executar tarefas conforme uma programação, implante um script Python para gerar dados:
No console do DataWorks, crie um nó PyODPS 3 (Create and manage MaxCompute nodes).
Baixe o arquivo create_data.py e cole o conteúdo no editor do nó PyODPS 3.
-
No lado direito do editor, clique em Configure Scheduling e configure os parâmetros. Em seguida, clique nos ícones Save
e Submit
no canto superior direito.-
Configure os parâmetros de agendamento:
-
Nota sobre substituição de variáveis:
Nos parâmetros de agendamento, defina o argumento
$user_table_namecomorec_sln_demo_user_table.Defina o argumento
$item_table_namecomorec_sln_demo_item_table.Defina o argumento
$behavior_table_namecomorec_sln_demo_behavior_table.Além dos três argumentos de nome de tabela, o script também usa um parâmetro de agendamento
bizdate, passado como a variável$bizdate.Configuração de parâmetros:
Adicione um parâmetro chamado
bizdatee defina seu valor como$[yyyymmdd-1].
-
Configure as dependências de agendamento.
-
Clique em Operation Center e selecione .
Na coluna Actions da tarefa alvo, clique em .
-
No painel Data Backfill, defina o timestamp dos dados e clique em Submit and Navigate.
Para um período ideal de backfill de dados de 60 dias, defina o timestamp dos dados como
Scheduled Task Date - 60para garantir a integridade dos dados.
2. Configurar nós de dependência
Adicione três nós virtuais ao projeto DataWorks com dependências de agendamento no nó raiz e publique-os:
-
Passe o mouse sobre Create e selecione new node > General-purpose > virtual node. Crie três nós virtuais usando a configuração de recursos a seguir e clique em Confirm.
-
Selecione cada nó e defina seu conteúdo como
select 1;. Em seguida, clique em Configure Scheduling à direita e conclua as configurações a seguir:Na seção Time attributes, defina o Rerun attribute como Rerun node after success or failure.
-
Na seção Scheduling dependencies > Ancestor Nodes, insira o nome do workspace DataWorks, selecione o nó com o sufixo _root e clique em Add.
Aplique essa configuração de dependência aos três nós virtuais.
Clique no ícone
de cada nó virtual para enviar o nó.
3. Registrar dados
Registre as três tabelas sincronizadas no PAI-Rec antes de configurar a engenharia de features, recall e ranking:
Faça login no PAI-Rec Management Console e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, clique em Instances e clique no nome de uma instância para abrir sua página de detalhes.
-
No painel de navegação à esquerda, acesse Recommendation Solution Customization > Data Registration. Na aba MaxCompute Table, clique em Create Data Table. Adicione uma tabela de usuários, uma tabela de itens e uma tabela de comportamentos usando a configuração na tabela abaixo. Em seguida, clique em Import.
Parameter
Description
Example
MaxCompute project
Selecione o projeto MaxCompute criado.
project_mc
MaxCompute table
Selecione as tabelas de dados sincronizadas com seu workspace DataWorks.
User table: rec_sln_demo_user_table_v1
Item table: rec_sln_demo_item_table_v1
Behavior table: rec_sln_demo_behavior_table_v1
Data table name
Insira um nome personalizado.
User table
Item table
Behavior table
4. Criar um cenário de recomendação
Crie um cenário de recomendação antes de configurar as tarefas de recomendação. Para conceitos básicos e codificação de tráfego, consulte Basic Concepts.
No painel de navegação à esquerda, clique em Recommendation Scenario e depois em Create Scenario. Configure um cenário de recomendação com a configuração de recursos a seguir e clique em Determine.
5. Configurar um algoritmo
Uma configuração completa de produção inclui as definições de recall e ranking a seguir:
Recall hot global: recupera os top-K itens mais populares com base em dados de log.
Recall hot agrupado: recupera candidatos de itens populares de grupos específicos, como cidade ou gênero, para melhorar a relevância.
Recall etrec u2i: usa o algoritmo de filtragem colaborativa etrec.
Recall Swing u2i (opcional): usa o algoritmo Swing.
Recall vetorial (opcional): gera candidatos usando o Deep Structured Semantic Model (DSSM).
Ranking refinado: usa o modelo MultiTower para ranking de objetivo único e o modelo DBMTL para ranking multiobjetivo.
As etapas a seguir abordam o recall hot global e o recall etrec u2i de RECommender (eTREC, a collaborative filtering implementation), além do ranking refinado. Procedimento:
-
No painel de navegação à esquerda, escolha Recommendation Solution Customization. Selecione um cenário criado e clique em Create Modular Recommendation Solution. Crie uma solução com as configurações de recursos a seguir e clique em Save and Go to Algorithm Solution Configuration.
Mantenha os parâmetros não especificados com seus valores padrão. Data Table Configuration.
-
Na aba Configure Table, clique em Add ao lado de uma tabela de dados. Configure a behavior log table, a user table e a item table definindo seus campos correspondentes de partição, evento, feature e timestamp, e clique em Next.
Mantenha os parâmetros não especificados com seus valores padrão. Data Table Configuration.
-
Em Feature Group Configuration, clique em Add. Configure os parâmetros conforme a tabela a seguir. Defina o nome e a versão do módulo de features e selecione a tabela de usuários, a tabela de itens e a tabela de log de comportamento configuradas na aba Configure Table.
Clique em Determine. Essa ação gera várias features estatísticas para usuários e itens. Clique em Configure Feature neste grupo de features para visualizar as features de validação. Para esta solução, não edite as features derivadas; mantenha as configurações padrão. Edite features derivadas para adequá-las às necessidades do negócio (Feature Configuration). Clique em Publish para este grupo de features, selecione a data de partição de dados mais recente como data de execução da tarefa, defina o paralelismo máximo da tarefa como 10 e mantenha as outras configurações com seus valores padrão. Em seguida, clique em Determine. Essa ação gera um nó, implanta-o no DataWorks e faz o backfill de dados por data. Aguarde até que o status do módulo mude para Published antes de prosseguir. Clique em Online Details para visualizar mais informações sobre o módulo. Na Data Refill Task List, verifique o status de execução de cada tarefa. Se uma tarefa falhar, clique em View Task Node para ir ao DataWorks e visualizar informações detalhadas do erro. Após corrigir o problema, localize o nó na Data Refill Task List e clique em Rerun. Após o sucesso da tarefa, prossiga.
-
Em Label Table Configuration, este módulo constrói alvos de amostra a partir da tabela de comportamento. Clique em Add, escolha Label Module como tipo de módulo, insira um nome para o módulo de rótulo e selecione o módulo de features configurado na etapa anterior. Clique em Create ao lado de Fine-grained ranking target settings (labels) e adicione os dois rótulos a seguir:
Alvo 1: defina Fine-grained ranking target name como
is_click, defina Fine-grained ranking target expression comomax(if(event='click',1,0))e selecione CLASSIFICATION para Target type.Alvo 2 (observe que o 'l' em 'ln' é minúsculo): defina Fine-grained ranking target name como
ln_playtime, defina Fine-grained ranking target expression comoln(sum(playtime)+1), defina Fine-grained ranking target dependency comois_clicke selecione REGRESSION para Target type. Em seguida, clique em OK.Após clicar em Determine, publique o módulo da mesma forma que publicou o módulo de features. Aguarde até que o status mude para Published antes de prosseguir.
Em Sample Configuration, este módulo associa tabelas de alvos de amostra com features e gera features de modelo no FeatureStore. Clique em Add, escolha Sample Module como tipo de módulo, nomeie a feature do modelo e selecione os módulos de features e rótulos das etapas anteriores. Publique o módulo e aguarde até que o status mude para Published antes de prosseguir.
Em Feature Generation Configuration, este módulo deriva features adicionais de todas as features na tabela de amostra. A configuração personalizada não é suportada atualmente. Clique em Add, escolha Feature Generation como tipo de módulo, escolha Ranking como tipo de geração de features e selecione o módulo de features do modelo da etapa anterior de configuração de amostra. Aguarde até que o status mude para Published antes de prosseguir.
Em Configure Sorting Method, clique em Add na seção de ranking refinado. Para a saída do módulo de features, selecione o módulo de geração de features da etapa anterior. Mantenha as outras opções com seus valores padrão e clique em Determine. Em seguida, publique o módulo. Depois que o status mudar para Published, o service de modelo será implantado no PAI-EAS.
Em Retrieval Configuration, clique em Add ao lado da categoria alvo, configure os parâmetros, clique em Confirm e, em seguida, clique em Publish para publicar a configuração. Este documento inclui vários métodos de configuração de recall. Para concluir a implantação rapidamente, configure apenas Global Hot Recall e etrec u2i Recall. Os outros métodos, como recall vetorial e recall de métrica colaborativa, servem apenas como referência.