Este tutorial orienta você na configuração de uma solução de recomendação personalizada no PAI-Rec com um conjunto de dados público. Ao final, você terá um pipeline de recomendação ponta a ponta funcional, abrangendo engenharia de features, recall e classificação refinada, com o fluxo de trabalho implantado no DataWorks.
Pré-requisitos
Antes de começar, verifique se você:
Ativou o PAI. Consulte Ativar o PAI e criar um workspace padrão.
Criou uma virtual private cloud (VPC) e um vSwitch. Consulte Criar uma VPC com um bloco CIDR IPv4.
Ativou o PAI-FeatureStore com FeatureDB como armazenamento online (não ative o Hologres). Consulte a seção Prerequisites em Create a data source e Create an online store: FeatureDB.
Ativou o MaxCompute e criou um projeto do MaxCompute chamado project_mc. Consulte Activate MaxCompute e Create a MaxCompute project.
Criou um bucket do Object Storage Service (OSS). Consulte Create a bucket.
-
Ativou o DataWorks e concluiu as seguintes configurações:
Criou um workspace do DataWorks. Consulte Create a workspace.
Adquiriu um grupo de recursos Serverless para o DataWorks (usado para sincronizar dados do PAI-FeatureStore e executar comandos eascmd para criar e atualizar serviços do PAI-EAS). Consulte Use a Serverless resource group.
Configurou uma fonte de dados OSS e uma fonte de dados MaxCompute no DataWorks. Consulte Data source management e Attach a MaxCompute computing resource.
Criou um projeto do FeatureStore e entidades de features. Pule esta etapa se usar um grupo de recursos Serverless. Caso utilize um grupo de recursos dedicado, instale o SDK Python do FeatureStore. Consulte II. Create and register a FeatureStore e Install the FeatureStore Python SDK.
Ativou o Flink com Storage Type definido como OSS bucket (não Fully Managed Storage). O bucket OSS do Flink deve corresponder ao configurado para o PAI-Rec. O Flink registra dados comportamentais do usuário em tempo real e calcula features de usuário em tempo real. Consulte Activate Realtime Compute for Apache Flink.
(Condicional) Se você usar EasyRec (TensorFlow): o modelo treina no MaxCompute por padrão.
(Condicional) Se você usar TorchEasyRec (PyTorch): o modelo treina no PAI-DLC por padrão. Para baixar dados do MaxCompute no PAI-DLC, ative o Data Transmission Service (DTS). Consulte Purchase and use a dedicated resource group for Data Transmission Service.
Etapa 1: Criar uma instância do PAI-Rec e inicializar o serviço
Esta etapa provisiona uma instância do PAI-Rec Premium Edition e a conecta aos recursos de nuvem configurados nos pré-requisitos. A Premium Edition é obrigatória, pois inclui diagnósticos de dados e os recursos de solução de recomendação personalizada usados neste tutorial.
Acesse a página inicial da Personalized Recommendation Platform e clique em Buy Now.
-
Na página de compra, defina os parâmetros a seguir e clique em Buy Now.
Parâmetro
Descrição
Region and zone
Região onde seus serviços de nuvem estão implantados.
Service type
Selecione Premium Edition. A Premium Edition adiciona diagnósticos de dados e recursos de solução de recomendação personalizada em comparação à Standard Edition.
Faça login no console do PAI-Rec e selecione sua região na barra de menu superior.
No painel de navegação à esquerda, clique em Instance list. Clique no nome da instância para abrir a página de detalhes.
-
Na seção Operation guide, clique em Init. Você será redirecionado para System configurations > End-to-End service. Clique em Edit, configure os recursos conforme a tabela abaixo e clique em Done.
No painel de navegação à esquerda, escolha System configurations > Permission management. Na aba Access service, verifique se o acesso está concedido para cada produto de nuvem.
Etapa 2: Clonar o conjunto de dados público
Esta etapa carrega dados de exemplo no seu projeto do MaxCompute. O PAI-Rec fornece três tabelas compartilhadas no projeto acessível publicamente 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 comportamento:
pai_online_project.rec_sln_demo_behavior_table
Os dados nessas tabelas são gerados aleatoriamente e não possuem significado comercial real. Portanto, métricas de treinamento como Area Under the Curve (AUC) serão baixas. Isso é esperado para um ambiente de demonstração.
Dois métodos estão disponíveis:
|
Método |
Suporte a agendamento |
Quando usar |
|
Sincronizar uma janela de tempo fixa usando SQL |
Não |
Configuração única para explorar o tutorial |
|
Gerar dados usando um script Python |
Sim (diário) |
Treinamento rotineiro de modelos com tarefas agendadas |
Para geração diária de dados e treinamento de modelos, utilize o método de script Python.
Sincronizar uma janela de tempo fixa
Execute comandos SQL no DataWorks para copiar as três tabelas de pai_online_project para o seu projeto do MaxCompute (por exemplo, project_mc).
Faça login no console do DataWorks e selecione sua região.
No painel de navegação à esquerda, clique em Data development and O&M > Data development.
Selecione o workspace do DataWorks criado e clique em Go to data development.
-
Passe o mouse sobre Create e escolha Create node > MaxCompute > ODPS SQL. Defina os parâmetros a seguir e clique em Confirm.
-
No editor de nós, cole e execute o SQL a seguir. Antes de executar, configure variáveis de agendamento para que
${bizdate}seja definido como a data de ontem e${bizdate_100}seja definido como 100 dias antes de${bizdate}. Configure os parâmetros de agendamento da seguinte forma:
Execute o SQL a seguir uma vez para copiar dados do projeto público para o 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 created items', follow_cnt BIGINT COMMENT 'Number of follows', 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 tag', author BIGINT COMMENT 'Author', click_count BIGINT COMMENT 'Total clicks', praise_count BIGINT COMMENT 'Total likes', pub_time BIGINT COMMENT 'Publication 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 'Instrumentation 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 'Behavior time', item_id STRING COMMENT 'Item ID', event STRING COMMENT 'Behavior type', playtime DOUBLE COMMENT 'Playback/Read 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}";
Gerar dados usando um script Python
Utilize este método para agendar a geração diária de dados. O script gera dados sintéticos para um intervalo de tempo especificado.
No console do DataWorks, crie um nó PyODPS 3. Consulte Create and manage MaxCompute nodes.
Baixe o arquivo create_data.py e cole seu conteúdo no nó PyODPS 3.
-
No painel direito, clique em Scheduling configurations e configure os parâmetros de agendamento. Substitua as seguintes variáveis: Após a substituição: Configure as dependências de agendamento e clique nos ícones Salvar
e Enviar
.$user_table_name→rec_sln_demo_user_table$item_table_name→rec_sln_demo_item_table$behavior_table_name→rec_sln_demo_behavior_table


Acesse o Operation center e escolha Periodic task O&M > Periodic tasks.
Na coluna Actions da tarefa alvo, escolha Backfill data > Current and descendant nodes.
No painel Backfill data, defina o timestamp dos dados e clique em Submit and go. Defina o timestamp dos dados como
Scheduled task date - 60para preencher 60 dias de dados e garantir a integridade dos dados.
Configurar nós de dependência
Adicione três nós virtuais ao seu projeto do DataWorks. Esses nós atuam como âncoras de dependência para as tabelas de dados, garantindo que as tarefas downstream aguardem a disponibilidade dos dados antes da execução.
-
Passe o mouse sobre Create e escolha Create node > General > Virtual node. Crie três nós virtuais usando as configurações a seguir e clique em Confirm.

-
Para cada nó virtual, defina o conteúdo do nó como
select 1;. Em seguida, clique em Scheduling configurations no painel direito e conclua as seguintes configurações: Configure todos os três nós.Em Time property, defina Rerun property como Rerun when succeeded or failed.
Em Scheduling dependencies > Upstream dependencies, insira o nome do workspace do DataWorks, selecione o nó com o sufixo _root e clique em Add.

Clique no ícone
à frente de cada nó virtual para enviá-lo.
Etapa 3: Registrar dados
Registre as três tabelas sincronizadas no PAI-Rec para que fiquem disponíveis para engenharia de features, recall e configuração de classificação nas etapas subsequentes.
Faça login no console do PAI-Rec e selecione sua região.
No painel de navegação à esquerda, clique em Instance list. Clique no nome da instância para abrir a página de detalhes.
-
No painel de navegação à esquerda, escolha Custom recommendation solution > Data registration. Na aba MaxCompute table, clique em Add data table. Adicione uma tabela de usuário, uma tabela de item e uma tabela de comportamento usando as configurações a seguir e clique em Start import.
Parâmetro
Descrição
Exemplo
MaxCompute project
Projeto do MaxCompute criado.
project_mcMaxCompute table
Tabelas de dados sincronizadas.
Usuário:
rec_sln_demo_user_table_v1; Item:rec_sln_demo_item_table_v1; Comportamento:rec_sln_demo_behavior_table_v1Data table name
Nome de exibição personalizado para a tabela.
User Table,Item Table,Behavior Table
Etapa 4: Criar um cenário de recomendação
Crie um cenário de recomendação para definir o contexto em que as recomendações são servidas (por exemplo, um feed de página inicial). Para obter informações sobre cenários de recomendação e IDs de tráfego, consulte Terms.
No painel de navegação à esquerda, escolha Recommendation scenarios. Clique em Create scenario, configure os parâmetros a seguir e clique em OK.
Etapa 5: Criar e configurar uma solução de algoritmo
Esta etapa configura os algoritmos de recall e classificação para o seu cenário de recomendação. Para uma configuração completa de produção, os seguintes algoritmos estão disponíveis:
Global hot recall: Classifica os top-k itens por estatísticas de cliques dos dados de log.
Global hot fallback recall: Armazena um conjunto de candidatos de fallback no Redis para evitar resultados vazios caso o mecanismo de recall primário falhe.
Grouped hot recall: Recupera itens por grupos de atributos (por exemplo, cidade ou gênero) para melhorar a personalização de itens populares.
etrec u2i recall: Recall usuário-para-item baseado no algoritmo de filtragem colaborativa etrec.
Swing u2i recall (opcional): Recall usuário-para-item baseado no algoritmo Swing.
Cold-start recall (opcional): Recall para novos usuários e itens usando o algoritmo DropoutNet.
Fine-grained ranking: Escolha MultiTower para classificação de objetivo único ou DBMTL para classificação multiobjetivo.
Vector recall e PDN recall são normalmente adicionados após a conclusão da fase básica de recall. O Vector recall requer um mecanismo de recall vetorial e não é abordado neste tutorial porque o FeatureDB não oferece suporte a ele.
Para concluir a implantação rapidamente, este tutorial configura apenas global hot recall e etrec u2i recall para a fase de recall, e fine-grained ranking para a fase de classificação.
-
No painel de navegação à esquerda, escolha Custom recommendation solution > Solution configuration. Selecione o cenário criado, clique em Create recommendation solution, preencha os parâmetros a seguir e clique em Save and configure algorithm solution. Para parâmetros não listados aqui, mantenha os valores padrão. Consulte Data table configuration para detalhes.
-
No nó Data table configuration, clique em Add ao lado de cada tabela de dados. Configure a tabela de log de comportamento, a tabela de usuário e a tabela de item conforme descrito abaixo e clique em Next. Para parâmetros não listados aqui, mantenha os valores padrão. Consulte Data table configuration. Tabela de log de comportamento Ao configurar a tabela de log de comportamento, ajuste os campos para corresponder aos seus dados reais. O log de comportamento de demonstração contém: ID de solicitação, ID de usuário, página, timestamp de comportamento e tipo de comportamento. Se seus dados tiverem dimensões adicionais, classifique-as como informações de usuário ou item para engenharia de features.
User table
Item table
-
No nó Feature configuration, defina os parâmetros a seguir, clique em Generate features, defina a versão da feature e clique em Next. Após clicar em Generate features, o sistema deriva features estatísticas para usuários e itens. Os padrões funcionam para este tutorial. Consulte Feature configuration para personalizar features derivadas.
-
No nó Recall configuration, clique em Add ao lado da categoria de recall alvo, configure os parâmetros, clique em Confirm e, em seguida, clique em Next.
As seções a seguir descrevem cada método de recall. Para uma implantação rápida, configure apenas Global hot recall e etrec u2i recall. Os demais métodos servem como referência. #### Global hot recall O Global hot recall gera uma lista classificada de itens populares (itens
top_n) com base em estatísticas de eventos de clique. Após implantar o código no DataWorks, você pode modificar a fórmula de pontuação ou o evento alvo. A fórmula de pontuação é: -
No nó Ranking configuration, clique em Add ao lado de Fine-grained ranking, configure os parâmetros, clique em Confirm e, em seguida, clique em Next.
-
No nó Generate script, clique em Generate deployment script.
ImportanteApós a geração do script, o sistema produz um endereço OSS onde todos os arquivos de implantação são armazenados. Salve este endereço localmente — você precisará dele se implantar manualmente via Migration Assistant.

Após a conclusão da geração do script, clique em OK na caixa de diálogo. Você será redirecionado para Custom recommendation solution > Deployment records. Se a geração falhar, revise os logs de execução, resolva o erro e regenere o script.
Etapa 6: Implantar a solução de recomendação
Após a geração do script, implante-o no DataWorks usando um dos dois métodos.
Método 1: Implantar pela Personalized Recommendation Platform
-
Clique em Go to deploy ao lado da solução alvo.

-
Na página Deployment preview, na seção File diff, selecione os arquivos a implantar. Para a primeira implantação, clique em Select all e, em seguida, clique em Deploy to DataWorks. A página retorna para Deployment records, mostrando a implantação em andamento.

-
Clique em
para atualizar a lista e verificar o status da implantação.Se a implantação falhar, clique em View log na coluna Actions, resolva o erro e, em seguida, regenere e reimplante o script.
Quando o Deployment status mudar para Success, o script estará implantado. Acesse a página de desenvolvimento de dados do DataWorks para visualizar o código implantado. Consulte Data development process guide.

-
Execute o backfill de dados para preencher dados históricos para treinamento.
Na página Deployment records, clique em Details ao lado da solução implantada com sucesso.
Na página Deployment preview, clique em View task data backfill process para revisar as instruções de backfill e garantir a integridade dos dados.
Confirme se a tabela de usuário, a tabela de item e a tabela de comportamento contêm dados para os últimos _n_ dias, onde _n_ é igual à soma da janela de tempo de treinamento e da janela de tempo máxima de feature. Se estiver usando os dados de demonstração deste tutorial, sincronize as partições de dados mais recentes. Se gerou dados com o script Python, faça o backfill pelo Operation center do DataWorks.
Clique em Create deployment task. Em Backfill task list, clique em Start tasks sequentially. Aguarde até que todas as tarefas sejam concluídas com sucesso. Se uma tarefa falhar, clique em Details para visualizar o log, resolva o erro, execute a tarefa novamente e clique em Continue para prosseguir.

Método 2: Implantar usando o Migration Assistant
Após a geração do script, implante-o manualmente pelo Migration Assistant do DataWorks. Para instruções completas, consulte Create and view a DataWorks import task. Os parâmetros principais são:
Import name: Defina conforme solicitado no console.
Upload method: Selecione OSS file, insira o OSS link da Etapa 5 e clique em Verify.
O pacote de implantação é armazenado no endereço OSS gerado na Etapa 5, por exemplo: oss://examplebucket/algoconfig/plan/1723717372/package.zip. Faça login no console do OSS para recuperar a URL do arquivo.

Etapa 7: Congelar nós
Este tutorial usa dados de demonstração. Após a conclusão do backfill de dados, congele os três nós virtuais criados na Etapa 2 para evitar que sejam executados em um agendamento diário.
No Operation center do DataWorks, escolha Periodic task O&M > Periodic tasks. Pesquise pelos nomes dos nós (por exemplo, rec_sln_demo_user_table_v1), selecione o nó alvo (Workspace.Nome do nó) e escolha Pause (Freeze).













