Este tutorial demonstra como criar e implantar um sistema de recomendação completo no PAI-FeatureStore usando o SDK do Python.
Pré-requisitos
Verifique se os seguintes pré-requisitos foram atendidos.
Serviço | Ações |
Platform for AI (PAI) |
|
MaxCompute |
|
FeatureDB |
|
DataWorks |
|
Etapa 1: Preparar dados
Sincronizar tabelas de dados
Um cenário de recomendação geralmente exige as seguintes tabelas de dados: uma tabela de features de usuário, uma tabela de itens, uma tabela de rótulos, uma tabela de features de sequência e uma tabela de comportamento.
Este tutorial prático utiliza tabelas de dados simuladas preparadas no projeto do MaxCompute pai_online_project. Para utilizá-las, execute comandos SQL no DataWorks para sincronizar as tabelas com seu próprio projeto do MaxCompute. Siga estas etapas:
Faça login no console do DataWorks.
No painel de navegação à esquerda, clique em Data Development & O&M > Data Development.
Selecione seu workspace do DataWorks e clique em Enter Data Development.
-
Passe o mouse sobre New e escolha New Node > MaxCompute > ODPS SQL. Configure os parâmetros do nó da seguinte forma:
Parâmetro
Valor recomendado
engine instance
Selecione o mecanismo do MaxCompute que você criou.
node type
ODPS SQL
path
Business Flow/Workflow/MaxCompute
name
Insira um nome personalizado.
Clique em Confirm.
-
No editor de nós, execute os seguintes comandos SQL para sincronizar as tabelas de dados com seu projeto do MaxCompute. Em Resource Group, selecione seu grupo de recursos exclusivo.
Tabela de usuários: rec_sln_demo_user_table_preprocess_all_feature_v1
Tabela de itens: rec_sln_demo_item_table_preprocess_all_feature_v1
Tabela de rótulos: rec_sln_demo_label_table
Tabela de features de sequência: rec_sln_demo_behavior_table_preprocess_sequence_wide_seq_feature_v3
Tabela de comportamento: rec_sln_demo_behavior_table_preprocess_v3
Agora é possível visualizar as tabelas sincronizadas no seu workspace. O restante deste tutorial utiliza essas cinco tabelas.
Configurar fontes de dados
O FeatureStore geralmente requer dois tipos de fontes de dados: uma fonte offline, como o MaxCompute, e uma fonte online, como FeatureDB, Hologres ou Tablestore. Este tutorial usa MaxCompute e FeatureDB como exemplos.
Faça login no PAI console. No painel de navegação à esquerda, escolha Data Preparation > FeatureStore.
Selecione um workspace e clique em Enter FeatureStore.
-
Configure uma fonte de dados do MaxCompute.
-
Na aba Create Store, clique em Create Store e, na página exibida, configure os parâmetros da fonte de dados do MaxCompute.
Parâmetro
Valor recomendado
Type
MaxCompute
Name
Insira um nome personalizado.
MaxCompute Project Name
Selecione o projeto do MaxCompute que você criou.
Clique em Submit.
-
-
Configure uma fonte de dados do FeatureDB.
Caso já tenha criado uma fonte de dados do FeatureDB, pule esta etapa.
-
Na aba Store, clique em Create Store e configure os parâmetros da fonte de dados do FeatureDB na caixa de diálogo.
Parâmetro
Valor recomendado
Type
FeatureDB (Se for sua primeira vez usando o FeatureDB, siga as instruções na tela para ativá-lo.)
Name
Nomes personalizados não são suportados. O nome padrão é
feature_db.Username
Defina um nome de usuário.
Password
Defina uma senha.
VPC network high-speed connection (optional)
Esta opção permite usar o FeatureStore SDK para acessar diretamente o FeatureDB de dentro de uma VPC via rede privada. Essa conexão melhora o desempenho de leitura/gravação de dados e reduz a latência de acesso.
VPC
Selecione a VPC que contém seus serviços online do FeatureStore.
Zone and vSwitch
Selecione uma zona e um vSwitch. Certifique-se de que o vSwitch esteja na mesma zona dos seus serviços online. Para alta disponibilidade, recomendamos selecionar vSwitches em pelo menos duas zonas.
Clique em Submit.
II. Processo de criação do SDK do Python para FeatureStore
Instale o SDK do Python para FeatureStore, que requer um ambiente Python 3. Recomendamos executar todo o código a seguir em um Jupyter Notebook.
! pip install https://feature-store-py.oss-cn-beijing.aliyuncs.com/package/feature_store_py-2.2.0-py3-none-any.whl
Importe os módulos necessários.
import unittest
import sys
import os
from os.path import dirname, join, abspath
from feature_store_py.fs_client import FeatureStoreClient
from feature_store_py.fs_project import FeatureStoreProject
from feature_store_py.fs_datasource import UrlDataSource, MaxComputeDataSource, DatahubDataSource, HologresDataSource, SparkDataSource, LabelInput, TrainingSetOutput
from feature_store_py.fs_type import FSTYPE
from feature_store_py.fs_schema import OpenSchema, OpenField
from feature_store_py.fs_feature_view import FeatureView
from feature_store_py.fs_features import FeatureSelector
from feature_store_py.fs_config import LabelInputConfig, PartitionConfig, FeatureViewConfig, TrainSetOutputConfig, SequenceFeatureConfig, SequenceTableConfig
import logging
logger = logging.getLogger("foo")
logger.addHandler(logging.StreamHandler(stream=sys.stdout))
Projeto do FeatureStore
É possível criar vários projetos no FeatureStore, onde cada projeto funciona como um namespace isolado. Para instruções detalhadas, consulte Configure a FeatureStore project. A execução deste notebook requer um serviço de backend do FeatureStore e fontes de dados configuradas. Após ativar o FeatureStore, configure uma fonte de dados. Para mais informações, consulte Create a data source.
O parâmetro offline_datasource_id especifica o ID da fonte de dados offline, e online_datasource_id especifica o ID da fonte de dados online.
Este exemplo utiliza um projeto chamado fs_demo.
access_id = ''
access_ak = ''
region = 'cn-beijing'
fs = FeatureStoreClient(access_key_id=access_id, access_key_secret=access_ak, region=region)
cur_project_name = "fs_demo"
project = fs.get_project(cur_project_name)
if project is None:
raise ValueError(f"The project '{cur_project_name}' does not exist. You must create it first.")
Execute o código a seguir para recuperar o projeto atual e imprimir suas informações.
project = fs.get_project(cur_project_name)
print(project)
Entidade de Feature
Uma entidade de feature descreve uma coleção de features relacionadas. Várias visualizações de features podem ser associadas a uma única entidade. Cada entidade possui um join_id, que une features de diferentes visualizações. Cada visualização de feature tem uma chave primária para recuperar seus dados, e o nome dessa chave pode ser diferente do join_id.
Em sistemas de recomendação, as features geralmente estão associadas a uma entidade de usuário ou de item. Este exemplo demonstra como criar tanto uma entidade user quanto uma entidade item.
-
Criar entidade de usuário
user_entity_name = "user" user_join_id = 'user_id' user_entity = project.get_entity(user_entity_name) if user_entity is None: user_entity = project.create_entity(name = user_entity_name, join_id=user_join_id) user_entity.print_summary() -
Criar entidade de item
item_entity_name = "item" join_id = 'item_id' item_entity = project.get_entity(item_entity_name) if item_entity is None: item_entity = project.create_entity(name = item_entity_name, join_id=join_id) item_entity.print_summary()
Visualização de Feature
Uma visualização de feature é um objeto central no FeatureStore que ingere dados externos. Ela define a origem dos dados (fonte de dados), quaisquer operações de pré-processamento ou transformação, a estrutura dos dados (schema da feature, incluindo nomes e tipos) e o local de armazenamento (armazenamento online e/ou offline). A visualização também gerencia metadados, como chave primária, tempo do evento, chave de partição, entidade de feature associada e TTL (Time to Live). Um TTL padrão de -1 indica que a feature é permanentemente válida. Um valor positivo de TTL significa que consultas online recuperarão apenas os dados de feature mais recentes dentro da janela de tempo especificada.
Existem três tipos de visualizações de feature: Batch FeatureView (para features offline ou T-1), Stream FeatureView (para features em tempo real) e Sequence FeatureView (para features de sequência).
Batch FeatureView
Uma Batch FeatureView injeta dados offline no armazenamento offline do FeatureStore e pode, opcionalmente, sincronizá-los com o armazenamento online para suportar consultas em tempo real. Utilize esta visualização para features offline ou T-1.
-
Registre a tabela de features offline de usuário
-
Registre a tabela rec_sln_demo_user_table_preprocess_all_feature_v1 no FeatureStore.
user_feature_view_name = "user_table_preprocess_all_feature_v1" user_table_name = "rec_sln_demo_user_table_preprocess_all_feature_v1" user_feature_view = project.get_feature_view(user_feature_view_name) if user_feature_view is None: ds = MaxComputeDataSource(project.offline_datasource_id, user_table_name) user_feature_view = project.create_batch_feature_view(name=user_feature_view_name, datasource=ds, online=True, entity= user_entity_name, primary_key='user_id', register=True) print(user_feature_view) -
Sincronize os dados da partição 20231023 da tabela
rec_sln_demo_user_table_preprocess_all_feature_v1da fonte offline para a fonte online.user_task = user_feature_view.publish_table({'ds':'20231023'}) user_task.wait() -
Verifique o status da tarefa.
user_task.print_summary()
-
-
Registre a tabela de features offline de item
-
Registre a tabela rec_sln_demo_item_table_preprocess_all_feature_v1 no FeatureStore.
item_feature_view_name = "item_table_preprocess_all_feature_v1" item_table_name = "rec_sln_demo_item_table_preprocess_all_feature_v1" item_feature_view = project.get_feature_view(item_feature_view_name) if item_feature_view is None: ds = MaxComputeDataSource(project.offline_datasource_id, item_table_name) item_feature_view = project.create_batch_feature_view(name=item_feature_view_name, datasource=ds, online = True, entity= item_entity_name, primary_key='item_id', register=True) print(item_feature_view) -
Sincronize os dados da partição 20231023 da tabela
rec_sln_demo_item_table_preprocess_all_feature_v1da fonte offline para a fonte online.item_task = item_feature_view.publish_table({'ds':'20231023'}) item_task.wait() -
Verifique o status da tarefa.
item_task.print_summary()
-
Sequence FeatureView
Uma Sequence FeatureView suporta a escrita de features de sequência offline e a leitura de features de sequência em tempo real online. Em cenários de recomendação, uma tabela de features de sequência offline (F1) é inicialmente gerada por simulação e posteriormente substituída por logs online. Durante consultas online para sequências em tempo real, os dados são recuperados de duas tabelas de comportamento online: uma tabela de comportamento T-1 (B1) e uma tabela de comportamento em tempo real do dia atual (dia T) (B2). A tabela B2 contém features atualizadas por computação em tempo real. O FeatureStore consulta B1 e B2, constrói a sequência de features do usuário e a combina com outras features para pontuação do modelo.
A tabela de comportamento online T-1 (B1) é normalmente sincronizada a partir de uma tabela de comportamento offline T-1 (A1), com o FeatureStore lidando automaticamente com operações como deduplicação. A tabela de comportamento online do dia atual (dia T) (B2) atualmente exige que você escreva dados através de uma API ou outros produtos da Alibaba Cloud, como o Flink.
Portanto, ao registrar uma Sequence FeatureView, o FeatureStore gerencia quatro tabelas em seu nome: a tabela de sequência offline (F1), a tabela de comportamento offline T-1 (A1), a tabela de comportamento online T-1 (B1) e a tabela de comportamento online do dia T (B2).
Durante o registro, você fornece apenas a tabela de sequência offline (F1) e a tabela de comportamento offline T-1 (A1). O FeatureStore cria as tabelas online e cuida da sincronização e deduplicação.
-
Registre a Sequence FeatureView.
seq_feature_view_name = "wide_seq_feature_v3" seq_feature_view = project.get_feature_view(seq_feature_view_name) if seq_feature_view is None: seq_table_name = "rec_sln_demo_behavior_table_preprocess_sequence_wide_seq_feature_v3" behavior_table_name = 'rec_sln_demo_behavior_table_preprocess_v3' ds = MaxComputeDataSource(project.offline_datasource_id, behavior_table_name) event_time = 'event_unix_time' # Field name for event time in the behavior table. item_id = 'item_id' # Field name for item_id in the behavior table. event = 'event' # Field name for the event in the behavior table. # deduplication_method = 1: Deduplicates by ['user_id', 'item_id', 'event']. # deduplication_method = 2: Deduplicates by ['user_id', 'item_id', 'event', 'event_time']. sequence_feature_config_list = [SequenceFeatureConfig(offline_seq_name='click_seq_50_seq', seq_event='click', online_seq_name='click_seq_50', seq_len=50)] # offline_seq_name: Column name of the sequence feature in the offline sequence table. # seq_event: The behavior field name used for filtering. # online_seq_name: The name under which the corresponding item_id sequence for the user is returned by the online Go SDK. # seq_len: The sequence length. Sequences longer than this value are truncated. seq_table_config = SequenceTableConfig(table_name=seq_table_name, primary_key='user_id', event_time='event_unix_time') seq_feature_view = project.create_sequence_feature_view(seq_feature_view_name, datasource=ds, event_time=event_time, item_id=item_id, event=event, deduplication_method=1, sequence_feature_config=sequence_feature_config_list, sequence_table_config=seq_table_config, entity=user_entity_name) # seq_feature_view.print_summary() print(seq_feature_view) -
Sincronize os dados da partição 20231023 da tabela
rec_sln_demo_behavior_table_preprocess_v3da fonte offline para a fonte online. Durante a sincronização, o sistema verifica automaticamente se há dados dos N dias anteriores e os preenche se estiverem ausentes. Você pode especificar N usando o parâmetrodays_to_load, cujo padrão é 30. Recomendamos usar o valor padrão na maioria dos casos.seq_task = seq_feature_view.publish_table({'ds':'20231023'}, days_to_load=30) seq_task.wait() -
Verifique o status da tarefa.
seq_task.print_summary()
Stream FeatureView
Uma Stream FeatureView grava dados diretamente no armazenamento online e os sincroniza simultaneamente com o armazenamento offline. Utilize-a para cenários que exigem atualizações de features em tempo real, como atualização de preços de itens ou volumes de vendas.
Registrar a tabela de rótulos
label_table_name = 'rec_sln_demo_label_table'
ds = MaxComputeDataSource(data_source_id=project.offline_datasource_id, table=label_table_name)
label_table = project.get_label_table(label_table_name)
if label_table is None:
label_table = project.create_label_table(datasource=ds, event_time='event_unix_time')
print(label_table)
Recuperar features online
É possível recuperar features do armazenamento online para finalidades como depuração de consistência offline-online e análise de dados. Este recurso é atualmente otimizado para Hologres.
user_feature_view_name = "user_table_preprocess_all_feature_v1"
user_feature_view = project.get_feature_view(user_feature_view_name)
ret_features_1 = user_feature_view.list_feature_view_online_features(join_ids=['169898460', '148811946'])
print("ret_features = ", ret_features_1)
Conjunto de treinamento
Para treinar um modelo, primeiro construa um conjunto de treinamento com dados de rótulos e features. Ao interagir com o FeatureStore, você fornece os dados de rótulo, especifica as features a serem recuperadas e o sistema realiza uma junção ponto-no-tempo baseada na chave primária (se existir um tempo de evento).
# Specify the label table
label_table_name = 'rec_sln_demo_label_table'
output_ds = MaxComputeDataSource(data_source_id=project.offline_datasource_id)
train_set_output = TrainingSetOutput(output_ds)
user_feature_view_name = "user_table_preprocess_all_feature_v1"
user_feature_selector = FeatureSelector(user_feature_view_name, '*') # '*' selects all features.
item_feature_view_name = "item_table_preprocess_all_feature_v1"
item_feature_selector = FeatureSelector(item_feature_view_name, '*')
seq_feature_view_name = "wide_seq_feature_v3"
seq_feature_selector = FeatureSelector(seq_feature_view_name, ['click_seq_50_seq'])
train_set = project.create_training_set(label_table_name=label_table_name, train_set_output= train_set_output, feature_selectors=[user_feature_selector, item_feature_selector, seq_feature_selector])
print("train_set = ", train_set)
Features do modelo
Após treinar um modelo e implantá-lo como serviço, você pode usá-lo para previsões de negócios. As amostras de treinamento estão disponíveis no objeto train_set da etapa anterior.
model_name = "fs_rank_v2"
cur_model = project.get_model(model_name)
if cur_model is None:
cur_model = project.create_model(model_name, train_set)
print("cur_model_train_set_table_name = ", cur_model.train_set_table_name)
Etapa 3: Exportar conjunto de treinamento e treinar modelo
Para treinar o modelo, exporte um conjunto de treinamento.
Exportar conjunto de treinamento
Especifique a partição e o event_time para a tabela de rótulos e cada visualização de feature.
cur_day = '20231024'
pre_day = '20231023'
label_partitions = PartitionConfig(name = 'ds', value = cur_day)
label_input_config = LabelInputConfig(partition_config=label_partitions)
user_partitions = PartitionConfig(name = 'ds', value = pre_day)
feature_view_user_config = FeatureViewConfig(name = 'user_table_preprocess_all_feature_v1',
partition_config=user_partitions)
item_partitions = PartitionConfig(name = 'ds', value = pre_day)
feature_view_item_config = FeatureViewConfig(name = 'item_table_preprocess_all_feature_v1',
partition_config=item_partitions)
seq_partitions = PartitionConfig(name = 'ds', value = cur_day)
feature_view_seq_config = FeatureViewConfig(name = 'wide_seq_feature_v3', partition_config=seq_partitions, event_time='event_unix_time', equal=True)
feature_view_config_list = [feature_view_user_config, feature_view_item_config, feature_view_seq_config]
train_set_partitions = PartitionConfig(name = 'ds', value = cur_day)
train_set_output_config = TrainSetOutputConfig(partition_config=train_set_partitions)
model_name = 'fs_rank_v2'
cur_model = project.get_model(model_name)
task = cur_model.export_train_set(label_input_config, feature_view_config_list, train_set_output_config)
task.wait()
print("task_summary = ", task.task_summary)
Treinar modelo
O EasyRec é um framework de sistema de recomendação open-source que se integra perfeitamente ao PAI-FeatureStore, permitindo treinar, exportar e implantar modelos. Use a tabela fs_demo_fs_rank_v2_training_set como entrada para treinar seu modelo com o EasyRec.
Para o código-fonte do EasyRec, consulte EasyRec.
Para a documentação do EasyRec, consulte Introdução ao EasyRec.
Para documentação sobre treinamento, consulte Treinamento com EasyRec.
Para dúvidas adicionais sobre o EasyRec, entre em contato conosco no grupo de suporte da Machine Learning Platform for AI (PAI) no DingTalk (ID: 32260796).
IV. Implantar o modelo
Após treinar e exportar um modelo, implante-o para atendimento online. Se você possui um sistema de recomendação próprio, o FeatureStore fornece SDKs para Python, Go, C++ e Java para simplificar a integração. Você também pode entrar em contato conosco pelo grupo do DingTalk (ID: 32260796) para discutir soluções específicas. Caso utilize serviços da Alibaba Cloud, é possível integrá-los perfeitamente ao FeatureStore para construir e implantar rapidamente um sistema de recomendação.
Este tópico explica como implantar um modelo usando serviços da Alibaba Cloud como exemplo.
Agendar tarefas de sincronização de dados
Antes de implantar o modelo, agende tarefas de sincronização de dados. Essas tarefas publicam periodicamente dados de uma fonte offline para uma fonte online para manter as features atualizadas.
Faça login no console do DataWorks.
No painel de navegação à esquerda, escolha Data Development & O&M > Data Development.
Selecione seu workspace do DataWorks e clique em Enter Data Development.
-
Agende a sincronização da tabela de usuários.
Passe o mouse sobre New e escolha New Node > MaxCompute > PyODPS 3.
Na caixa de diálogo exibida, configure os parâmetros do nó e clique em Confirm.
-
Copie o script a seguir para o editor para agendar a sincronização da
user_table_preprocess_all_feature_v1.Sincronização da tabela de usuários
-
No painel à direita, clique em Scheduling configuration e configure os parâmetros de agendamento.
Parâmetro
Valor
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Selecione o grupo de recursos exclusivo que você criou.
Scheduling dependencies
Selecione a tabela de usuários que você criou.
Após configurar e testar o nó, salve-o e envie-o.
Execute um backfill de dados. Para mais informações, consulte synchronize data tables.
-
Agende a sincronização da tabela de itens.
Passe o mouse sobre New e escolha New Node > MaxCompute > PyODPS 3.
Na caixa de diálogo exibida, configure os parâmetros do nó e clique em Confirm.
-
Copie o script a seguir para o editor.
Sincronização da tabela de itens
-
No painel à direita, clique em Scheduling configuration e configure os parâmetros de agendamento.
Parâmetro
Valor
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Selecione o grupo de recursos exclusivo que você criou.
Scheduling dependencies
Selecione a tabela de itens que você criou.
Após configurar e testar o nó, salve-o e envie-o.
Execute um backfill de dados. Para mais informações, consulte synchronize data tables.
-
Agende a sincronização da tabela de comportamento de sequência em tempo real.
Passe o mouse sobre New e escolha New Node > MaxCompute > PyODPS 3.
Na caixa de diálogo exibida, configure os parâmetros do nó e clique em Confirm.
-
Copie o script a seguir para o editor.
Sincronização de features de sequência
-
No painel à direita, clique em Scheduling configuration e configure os parâmetros de agendamento.
Parâmetro
Valor
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Selecione o grupo de recursos exclusivo que você criou.
Scheduling dependencies
Selecione a tabela de itens que você criou.
Após configurar e testar o nó, salve-o e envie-o.
Execute um backfill de dados. Para mais informações, consulte synchronize data tables.
Após a conclusão da sincronização, visualize as features mais recentes no Hologres.
Criar e implantar serviço de modelo EAS
O serviço de modelo recebe solicitações do mecanismo de recomendação, pontua um conjunto de itens candidatos com base na solicitação e retorna as pontuações. O processador EasyRec inclui o SDK C++ do FeatureStore para recuperação de features de baixa latência e alto desempenho. O processador usa o SDK para recuperar features, envia-as ao modelo para inferência e retorna as pontuações resultantes ao mecanismo de recomendação.
Siga estas etapas para implantar o serviço de modelo.
Faça login no console do DataWorks.
No painel de navegação à esquerda, escolha Data Development & O&M > Data Development.
Selecione seu workspace do DataWorks e clique em Enter Data Development.
Passe o mouse sobre New e escolha New Node > MaxCompute > PyODPS 3.
Na caixa de diálogo exibida, configure os parâmetros do nó e clique em Confirm.
-
Copie o script a seguir para o editor.
import os import json config = { "name": "fs_demo_v1", "metadata": { "cpu": 4, "rpc.max_queue_size": 256, "rpc.enable_jemalloc": 1, "gateway": "default", "memory": 16000 }, "model_path": f"oss://beijing0009/EasyRec/deploy/rec_sln_demo_dbmtl_v1/{args['ymd']}/export/final_with_fg", "model_config": { "access_key_id": f'{o.account.access_id}', "access_key_secret": f'{o.account.secret_access_key}', "region": "cn-beijing", "fs_project": "fs_demo", "fs_model": "fs_rank_v2", "fs_entity": "item", "load_feature_from_offlinestore": True, "steady_mode": True, "period": 2880, "outputs": "probs_is_click,y_ln_playtime,probs_is_praise", "fg_mode": "tf" }, "processor": "easyrec-1.8", "processor_type": "cpp" } with open("echo.json", "w") as output_file: json.dump(config, output_file) # Run this line for the first deployment only. os.system(f"/home/admin/usertools/tools/eascmd -i {o.account.access_id} -k {o.account.secret_access_key} -e pai-eas.cn-beijing.aliyuncs.com create echo.json") # For scheduled updates, run the following line. # os.system(f"/home/admin/usertools/tools/eascmd -i {o.account.access_id} -k {o.account.secret_access_key} -e pai-eas.cn-beijing.aliyuncs.com modify fs_demo_v1 -s echo.json") -
No painel à direita, clique em Scheduling configuration e configure os parâmetros de agendamento.
Parâmetro
Valor
Scheduling parameters
Parameter name
dt
Parameter value
$[yyyymmdd-1]
Resource properties
Resource group for scheduling
Selecione o grupo de recursos exclusivo que você criou.
Scheduling dependencies
Selecione a tarefa de treinamento correspondente e
item_table_preprocess_all_feature_v1. Após configurar e testar o nó, execute-o para verificar a implantação.
Quando a implantação for concluída, comente a linha 34, descomente a linha 37 e envie o nó para execução agendada.
(Opcional) Visualize o serviço implantado na aba Inference Service da página Elastic Algorithm Service (EAS). Para mais informações, consulte Deploy a custom service.
Configurar PAI-Rec
O PAI-Rec é um serviço de mecanismo de recomendação que inclui o SDK Go do FeatureStore e se integra perfeitamente tanto ao FeatureStore quanto ao EAS.
Para configurar o PAI-Rec, siga estas etapas:
-
Configure
FeatureStoreConfs.RegionId: Defina este parâmetro para a região onde seu serviço está implantado. Este exemplo usa cn-beijing.ProjectName: O nome do projeto do FeatureStore que você criou, que é fs_demo.
"FeatureStoreConfs": { "pairec-fs": { "RegionId": "cn-beijing", "AccessId": "${AccessKey}", "AccessKey": "${AccessSecret}", "ProjectName": "fs_demo" } }, -
Configure
FeatureConfs.FeatureStoreName: Certifique-se de que este valor corresponda a pairec-fs da configuração FeatureStoreConfs.FeatureStoreModelName: Defina este parâmetro para o nome da feature do modelo, que é fs_rank_v1 neste exemplo.FeatureStoreEntityName: Defina este parâmetro para o nome da entidade de feature, que é user neste exemplo. Isso instrui o mecanismo PAI-Rec a usar o SDK Go do FeatureStore para recuperar features da entidadeuserda feature do modelofs_rank_v1.
"FeatureConfs": { "recreation_rec": { "AsynLoadFeature": true, "FeatureLoadConfs": [ { "FeatureDaoConf": { "AdapterType": "featurestore", "FeatureStoreName": "pairec-fs", "FeatureKey": "user:uid", "FeatureStoreModelName": "fs_rank_v1", "FeatureStoreEntityName": "user", "FeatureStore": "user" } } ] } }, -
Configure
AlgoConfs.Esta configuração especifica qual serviço de pontuação de modelo EAS o PAI-Rec chamará.
Name: Certifique-se de que este valor corresponda ao nome do serviço EAS implantado.UrleAuth: Esses valores são fornecidos pelo serviço EAS. No console Overview, clique no nome do serviço e, na aba Overview, clique em View Endpoint Information para obter a URL e o token. Para mais detalhes de configuração, consulte EAS FAQ.
"AlgoConfs": [ { "Name": "fs_demo_v1", "Type": "EAS", "EasConf": { "Processor": "EasyRec", "Timeout": 300, "ResponseFuncName": "easyrecMutValResponseFunc", "Url": "eas_url_xxx", "EndpointType": "DIRECT", "Auth": "eas_token" } } ],