Use um conjunto de dados público para começar a usar o PAI-Rec rapidamente. Configure recursos essenciais para um algoritmo de recomendação personalizado, como engenharia de features, recall e classificação refinada. Em seguida, gere e implante o código no workflow correspondente no DataWorks.
Pré-requisitos
Antes de começar, conclua as etapas a seguir:
Ative o PAI. Para mais detalhes, consulte Activate PAI and create a default workspace.
Crie uma Virtual Private Cloud (VPC) e um vSwitch. Para mais detalhes, consulte Create a VPC with an IPv4 CIDR block.
Ative o PAI-FeatureStore. Para mais detalhes, veja a seção Prerequisites em Create a data source. Não é necessário ativar o Hologres. Como fonte de dados, selecione FeatureDB. Para mais detalhes, consulte Create an online data source: FeatureDB.
Ative o MaxCompute e crie um projeto do MaxCompute chamado project_mc. Para mais detalhes, consulte Activate MaxCompute e Create a MaxCompute project.
Crie um bucket do Object Storage Service (OSS). Para mais detalhes, consulte Create a bucket.
-
Crie um workspace do DataWorks. Para mais detalhes, consulte Create a workspace.
Adquira um grupo de recursos Serverless para o DataWorks. Para mais detalhes, consulte Use a Serverless resource group. Esse grupo de recursos sincroniza dados para o PAI-FeatureStore e executa comandos eascmd para criar e atualizar o service do PAI-EAS.
-
Configure as fontes de dados do DataWorks:
Crie e vincule uma fonte de dados do OSS. Para mais detalhes, consulte Data Source Management.
Crie e vincule uma fonte de dados do MaxCompute. Para mais detalhes, consulte Bind a MaxCompute compute engine.
Crie um projeto do FeatureStore e entidades de features. Pule esta etapa se estiver usando um grupo de recursos Serverless. Caso utilize um grupo de recursos dedicado para o DataWorks, instale o SDK Python do FeatureStore no grupo de recursos. Para mais detalhes, consulte Step 2: Create and register a FeatureStore e Install the FeatureStore Python SDK.
Ative o Realtime Compute for Apache Flink. Para mais detalhes, consulte Activate Realtime Compute for Apache Flink. Nota: Defina o storage type como OSS bucket, e não como Fully Managed Storage. Certifique-se de que o bucket do OSS para o Flink seja o mesmo configurado no PAI-Rec. O Flink registra dados de comportamento do usuário em tempo real e calcula features de usuário em tempo real.
Se você optar posteriormente por usar o EasyRec (framework TensorFlow), o treinamento será executado no MaxCompute por padrão.
Se você optar posteriormente por usar o TorchEasyRec (framework PyTorch), o treinamento será executado no PAI-DLC por padrão. Para baixar dados do MaxCompute no PAI-DLC, é necessário ativar o Data Transmission Service (consulte Purchase and use a dedicated resource group for Data Transmission Service).
Faça login na página inicial do PAI-Rec e clique em Buy Now.
-
Na página de compra da instância do PAI-Rec, configure os parâmetros a seguir e clique em Buy Now.
Parâmetro
Descrição
Region and availability zone
A região onde seu service será implantado.
Service Type
Para esta solução, selecione Standard Edition e ative o recurso Recommendation Solution Customization.
Faça login no console do PAI-Rec. No canto superior esquerdo da barra de menu superior, selecione uma região.
No painel de navegação à esquerda, escolha Instance list. Clique no nome da instância para acessar a página de detalhes da instância.
-
Na seção Procedure, clique em Cloud Service Configuration. Você será direcionado para a página System Configuration > Cloud Service Configuration. Clique em Edit, configure os parâmetros abaixo e clique em Exit.
No painel de navegação à esquerda, escolha System Configuration > Permissions. Na aba Services, verifique se cada product da cloud está autorizado corretamente.
Clonar dados de uma janela de tempo fixa do projeto
pai_online_project. Este método não suporta agendamento rotineiro.Usar um script Python para gerar dados. É possível executar uma tarefa no DataWorks para gerar esses dados por um período específico.
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_tableFaça login no console do DataWorks. Na barra de menu superior, selecione uma 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. Configure os parâmetros conforme descrito na tabela a seguir e clique em Confirm.
No editor do novo nó, cole e execute o código a seguir para sincronizar as tabelas de usuários, itens e comportamentos do projeto
pai_online_projectpara o seu projeto do MaxCompute, por exemplo,project_mc. O código requer uma janela de dados de 100 dias. Para definir essa janela com término no dia anterior, vá para a seção Scheduling Parameters, clique em Add Parameter e adicione dois parâmetros:bizdatecom o valor$[yyyymmdd-1]ebizdate_100com o valor$[yyyymmdd-100].No console do DataWorks, crie um nó PyODPS 3. Para mais informações, consulte Create and manage MaxCompute nodes.
Baixe o arquivo create_data.py e cole seu conteúdo no nó PyODPS 3.
-
Clique em Configure Scheduling à direita, configure os parâmetros a seguir e clique em Salve
e Envie
no canto superior direito.-
Configure os parâmetros de agendamento:
-
Defina o parâmetro
$user_table_namecomorec_sln_demo_user_table.Defina o parâmetro
$item_table_namecomorec_sln_demo_item_table.Defina o parâmetro
$behavior_table_namecomorec_sln_demo_behavior_table.Além dos parâmetros de nome de tabela, adicione um parâmetro para a data de negócio.
Este parâmetro chama-se bizdate.
Defina seu valor como
$[yyyymmdd-1].
-
Configure uma dependência de agendamento.
-
Acesse o Operation Center e escolha .
Na coluna Actions da tarefa alvo, escolha .
-
No painel Backfill Data, defina uma data de negócio e clique em Submit and Go.
O intervalo de tempo ideal para backfill de dados é de 60 dias. Recomendamos definir a data de negócio como
Task scheduled date - 60para garantir a integridade dos dados. -
Passe o mouse sobre Create e escolha Create Node > General-purpose > Virtual Node. Crie três nós virtuais com a seguinte configuração de recursos e clique em Confirm.
-
Para cada nó virtual, defina seu conteúdo como
select 1;. Em seguida, clique em Configure Scheduling à direita e configure as seguintes definições:Na seção Time property, defina Rerun property como Rerun When Succeeded Or Failed.
-
Na seção Scheduling dependencies > Upstream dependencies, insira o nome do seu workspace do DataWorks, selecione o nó com o sufixo _root e clique em Add.
Aplique essas configurações a todos os três nós virtuais.
Clique no ícone
ao lado de cada nó virtual para enviá-lo.Faça login no console do PAI-Rec. Na barra de menu superior, selecione uma região.
No painel de navegação à esquerda, escolha Instance List. Clique no nome da instância para abrir a página de detalhes da instância.
-
No painel de navegação à esquerda, escolha 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 conforme descrito na tabela a seguir e clique em Import.
Parâmetro
Descrição
Exemplo
Projeto MaxCompute
Selecione seu projeto do MaxCompute.
project_mc
Tabela MaxCompute
Selecione as tabelas de dados sincronizadas ao seu workspace do DataWorks.
tabela de usuários: rec_sln_demo_user_table_v1
tabela de itens: rec_sln_demo_item_table_v1
tabela de comportamentos: rec_sln_demo_behavior_table_v1
nome da tabela de dados
Insira um nome personalizado.
tabela de usuários
tabela de itens
tabela de comportamentos
recall global hot: Seleciona os top-k itens mais populares dos dados de log.
recall global hot fallback: Usa o Redis como fallback para evitar respostas vazias da API de recomendação.
recall grouped hot: Recupera itens por grupos (ex.: cidade, gênero) para fornecer recomendações mais precisas de itens populares.
recall etrec u2i: Utiliza o algoritmo de filtragem colaborativa etrec.
recall Swing u2i (opcional): Utiliza o algoritmo Swing.
recall cold-start (opcional): Lida com cenários de cold-start usando o algoritmo DropoutNet.
classificação refinada: Usa MultiTower para classificação de objetivo único e DBMTL para classificação multiobjetivo.
-
No painel de navegação à esquerda, escolha Recommendation Solution Customization > Solution Configurations. Selecione o cenário criado, clique em Create Recommendation Solution, forneça a seguinte configuração de recursos e clique em Save and Go to Algorithm Solution Configuration.
Mantenha os valores padrão para parâmetros não especificados. Para mais informações, consulte Data table configuration.
-
No nó Configure Table, clique em Add ao lado da tabela de dados alvo. Configure as partições, eventos, features e timestamps para a behavior log table, user table e item table conforme detalhado nas seções a seguir. Clique em Next.
Mantenha os valores padrão para quaisquer parâmetros não descritos. Para mais informações, consulte Data Table Configuration.
-
No nó Configure Feature, configure os parâmetros conforme descrito na tabela a seguir, clique em Generate Feature, defina uma versão de feature e clique em Next.
Após clicar em Generate Feature, o sistema deriva várias features estatísticas para usuários e itens. Esta solução usa as features derivadas padrão, mas você pode editá-las com base nos requisitos do seu negócio. Para mais informações, consulte Feature Configuration.
-
No nó Retrieval Configuration, clique em Add ao lado da categoria alvo, configure os parâmetros, clique em Confirm e clique em Next.
Para iniciar rapidamente, configure o global hot recall e o etrec u2i recall. Os outros métodos são fornecidos para referência.
-
No nó Configure Sorting Method, clique em Add ao lado de Fine-grained Ranking, configure os parâmetros conforme descrito abaixo, clique em Confirm e clique em Next.
-
No nó Generate Script, clique em Generate Deployment Script.
ImportanteApós a geração do script de implantação, o sistema fornece um endereço do OSS contendo todos os arquivos de implantação. Salve este endereço para executar o script de implantação manualmente mais tarde.
-
Assim que o script for gerado, clique em Determine na caixa de diálogo para acessar a página Recommendation Solution Customization > Deployment History.
Se a geração do script falhar, verifique os logs de execução para identificar e corrigir o erro e regenere o script.
Clique em Go to Deploy à direita da solução alvo. Na página Deployment Records, filtre registros por scenario e Deployment Status. Encontre a solução de recomendação alvo, como
pai_rec_testdemo_v1, e confirme se seu Deployment Status é Ready.-
Na página Deployment Preview, na seção Diff File, selecione os arquivos a serem implantados. Para uma implantação inicial, clique em Select All e clique em Deploy to DataWorks.
A página retorna para a página Deployment History. Nesta página, o Deployment Status para a solução de recomendação
pai_rec_testdemo_v1no cenário HomePage é exibido como Running. -
Aguarde um momento e 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. Analise e resolva o erro específico e regenere e implante o script.
Quando o Deployment Status mudar para Successful, acesse o DataStudio no workspace do DataWorks configurado para esta solução para visualizar o código implantado. Para mais informações, consulte Data Development: developer. No painel de navegação à esquerda do DataStudio, expanda Business Flow > Workflow > MaxCompute > Data Development para visualizar as pastas de nós implantados, incluindo feature, feature_v726, rank_v1, recall_v1 (com sub-nós etrec_u2i_recall e global_hot_recall) e test.
-
Visualize o processo de backfill de dados da tarefa.
Na página , clique em Details na coluna Actions para a solução implantada com sucesso.
Na página Deployment Preview, clique em View Task Data Backfill Process para revisar o processo e suas instruções.
Garanta que as partições da tabela de usuários, tabela de itens e tabela de comportamento de usuários contenham dados dos últimos n dias, onde n é a soma da janela de tempo de treinamento e a janela de tempo máxima de features. Se estiver usando os dados de demonstração deste tópico, sincronize as partições de dados mais recentes. Se estiver gerando dados com um script Python, realize um backfill de dados no Operation Center do DataWorks para gerar as partições mais recentes.
Clique em Create Data Refill Task no canto superior esquerdo e clique em Start Task by Order sob Data Refill Task List. Garanta que todas as tarefas sejam executadas com sucesso. Se uma tarefa falhar, clique em Details para visualizar as informações de log, analise e resolva o erro e reexecute a tarefa. Após uma reexecução bem-sucedida, clique em Continue Run no canto superior esquerdo da página até que todas as tarefas tenham sucesso. O DAG do processo de backfill de dados mostra o pipeline completo de engenharia de features: no topo estão as três tabelas de origem de dados (
pairec_demo.rec_sln_demo_item_table_v1,pairec_demo.rec_sln_demo_behavior_table_v1epairec_demo.rec_sln_demo_user_table_v1), que passam sequencialmente por pré-processamento, construção de tabela wide (comobehavior_table_v1_wide), estatísticas agregadas (comoitem_id_30d_aggeuser_id_30d_agg) e extração de features estáticas para gerar tabelas de features completas (comoitem_table_v1_all_feateuser_table_v1_all_feat). Finalmente, um nócreate_sync_onlinestoredo tipo PyODPS3 sincroniza os dados para o feature store online. Cada cartão de nó inclui informações como datas de início e fim e a ordem do backfill de dados. O botão Create Backfill Task no canto superior esquerdo inicia esse processo de backfill de dados.
Import Name: Defina conforme o prompt do console.
-
Upload Method: Selecione OSS File, insira o OSS Link e clique em Verify.
O arquivo de implantação está armazenado no endereço do OSS gerado em Step 5, por exemplo,
oss://examplebucket/algoconfig/plan/1723717372/package.zip. Faça login no console do OSS e siga as etapas abaixo para obter a URL do arquivo. No painel de navegação à esquerda do console do OSS, clique em Bucket List. Acesse o bucket alvo e clique em File List. Encontre e clique no arquivo alvo, comopackage.zip. No painel de detalhes que aparece à direita, ative a chave HTTPS e clique em Copy File URL para obter uma URL assinada. Use esta URL como OSS Link.
1. Crie uma instância do PAI-Rec
2. Clone o conjunto de dados público
1. Sincronize tabelas
Esta solução aceita dados de entrada de duas formas:
Para agendar a geração diária de dados e o treinamento de modelos, utilize o segundo método. Implante o código Python especificado para gerar os dados. Para mais informações, consulte a aba Generate data using code.
Janela de tempo fixa
O PAI-Rec fornece três tabelas comuns para algoritmos de recomendação no projeto publicamente acessível pai_online_project:
Os dados são gerados aleatoriamente para fins de demonstração, portanto métricas como AUC resultantes do treinamento serão baixas. Execute comandos SQL no DataWorks para sincronizar os dados das tabelas do projeto pai_online_project para o seu projeto do DataWorks, por exemplo, DataWorks_a. Siga estas etapas:
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}";
Geração de código
O agendamento periódico de tarefas não é suportado para dados de janela de tempo fixa. Para executar tarefas agendadas, implante um script Python para gerar os dados. Siga estas etapas:
2. Configure nós de dependência
Para garantir a geração e implantação adequada do código, adicione três nós de código SQL ao seu projeto do DataWorks. Defina as dependências de agendamento desses nós como o nó raiz do workspace e publique os nós.
3. Registre dados
Para configurar engenharia de features, recall e algoritmos de ordenação na solução de recomendação personalizada, primeiro registre as três tabelas sincronizadas ao seu projeto do DataWorks.
4. Crie cenário de recomendação
Antes de configurar uma tarefa de recomendação, crie um cenário de recomendação. Para uma explicação sobre cenários de recomendação e IDs de tráfego, consulte Basic Concepts.
No painel de navegação à esquerda, clique em Recommendation Scenario. Clique em Create Scenario, configure o novo cenário de acordo com a tabela a seguir e clique em Determine.
5. Configure uma solução de algoritmo
Para configurar completamente um cenário real, utilize as seguintes configurações de recall e classificação refinada:
Ative algoritmos como recall vetorial ou recall PDN somente após o recall inicial cobrir a maioria dos seus candidatos. O recall vetorial requer um engine de recall vetorial. O FeatureDB não suporta recall vetorial, portanto este exemplo não o configura.
Para simplificar o processo, este exemplo usa apenas o recall global hot e a estratégia de recall u2i de RECommender (eTREC, an implementation of collaborative filtering) para recall, além da classificação refinada para ordenação.
6. Implante a recomendação
Uma vez gerado o script, implante-o no DataWorks de uma das duas maneiras abaixo.
Método 1: Implantação integrada
Método 2: Migration Assistant
Implante o script manualmente usando o Migration Assistant no console do DataWorks. Para outras operações, consulte Create and view a DataWorks import task.
7. Congele nós
Após a conclusão do backfill, congele as tarefas no Operation Center (os três nós na etapa 2.2) para evitar que sejam executadas diariamente.
No Operation Center do DataWorks, acesse Auto Triggered Task O&M > Recurring Job. Pesquise pelo nó (por exemplo, rec_sln_demo_user_table_v1), selecione o nó (Workspace.node name) e escolha Suspend (Freeze).