As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Introdução ao bloco de anotações de exemplo do Feature Store
O código de exemplo nesta página se refere ao bloco de anotações de exemplo Introdução ao Feature Store
Use o seguinte para clonar o amazon-sagemaker-examples GitHub repositório aws/
-
Para Studio Classic
Inicie o Studio Classic. Você pode abrir o Studio Classic se o Studio ou o Studio Classic estiverem habilitados como sua experiência padrão. Para obter instruções sobre como abrir o Studio Classic, consulteInicie o Studio Classic usando o Amazon SageMaker Console.
Clone o amazon-sagemaker-examples GitHub repositório aws/
no Studio Classic seguindo as etapas em. Clone um repositório SageMaker Git no Studio Classic -
Para instâncias de SageMaker notebooks da Amazon
Execute a instância do SageMaker notebook seguindo as instruções emAcessar instâncias de caderno.
Verifique se os exemplos já estão em seus cadernos seguindo as instruções emBlocos de anotações de exemplo. Caso contrário, siga as instruções emAdicione um repositório Git à sua conta Amazon SageMaker .
Agora que você tem os cadernos de SageMaker exemplo, navegue até o amazon-sagemaker-examples/sagemaker-featurestore
diretório e abra o caderno de exemplo de Introdução ao Feature Store
Etapa 1: configurar sua SageMaker sessão
Para começar a usar a Feature Store, crie uma SageMaker sessão. Em seguida, configure o bucket do Amazon Simple Storage Service (Amazon S3) que você deseja usar para seus recursos. O bucket do Amazon S3 é seu armazenamento offline. O código a seguir usa o bucket SageMaker padrão e adiciona um prefixo personalizado a ele.
nota
A função que você usa para executar esse bloco de anotações deve ter as seguintes políticas gerenciadas anexadas: AmazonS3FullAccess
e AmazonSageMakerFeatureStoreAccess
. Para obter informações sobre como adicionar políticas à sua função do IAM, consulteAdicionar políticas ao seu perfil do IAM.
# SageMaker Python SDK version 2.x is required import sagemaker import sys
import boto3 import pandas as pd import numpy as np import io from sagemaker.session import Session from sagemaker import get_execution_role prefix = 'sagemaker-featurestore-introduction' role = get_execution_role() sagemaker_session = sagemaker.Session() region = sagemaker_session.boto_region_name s3_bucket_name = sagemaker_session.default_bucket()
Etapa 2: inspecionar seus dados
Neste exemplo de notebook, ingerimos dados sintéticos do GitHub repositório
customer_data = pd.read_csv("data/feature_store_introduction_customer.csv") orders_data = pd.read_csv("data/feature_store_introduction_orders.csv") print(customer_data.head()) print(orders_data.head())
O diagrama a seguir ilustra as etapas pelas quais os dados passam antes que a Feature Store os ingira. Neste caderno, ilustramos o caso de uso em que você tem dados de várias fontes e deseja armazená-los de forma independente em um Feature Store. Nosso exemplo considera dados de um data warehouse (dados do cliente) e dados de um serviço de streaming em tempo real (dados do pedido).
Etapa 3: criar grupos de atributos
Primeiro, começamos criando nomes de grupos de atributos para customer_data e orders_data. Depois disso, criamos dois grupos de recursos, um para customer_data
e outro paraorders_data
:
import time from time import strftime, gmtime customers_feature_group_name = 'customers-feature-group-' + strftime('%d-%H-%M-%S', gmtime()) orders_feature_group_name = 'orders-feature-group-' + strftime('%d-%H-%M-%S', gmtime())
Instancie um FeatureGroup
objeto para customers_data
e: orders_data
from sagemaker.feature_store.feature_group import FeatureGroup customers_feature_group = FeatureGroup( name=customers_feature_group_name, sagemaker_session=sagemaker_session ) orders_feature_group = FeatureGroup( name=orders_feature_group_name, sagemaker_session=sagemaker_session )
import time current_time_sec = int(round(time.time())) record_identifier_feature_name = "customer_id"
Anexe um atributo EventTime
ao seu quadro de dados. Esse parâmetro é obrigatório e marca a data e hora de cada ponto de dados:
customer_data["EventTime"] = pd.Series([current_time_sec]*len(customer_data), dtype="float64") orders_data["EventTime"] = pd.Series([current_time_sec]*len(orders_data), dtype="float64")
Carregue as definições de recursos em seu grupo de recursos:
customers_feature_group.load_feature_definitions(data_frame=customer_data) orders_feature_group.load_feature_definitions(data_frame=orders_data)
As seguintes chamadas create
para criar dois grupos de recursos customers_feature_group
eorders_feature_group
, respectivamente:
customers_feature_group.create( s3_uri=f"s3://{s3_bucket_name}/{prefix}", record_identifier_name=record_identifier_feature_name, event_time_feature_name="EventTime", role_arn=role, enable_online_store=True ) orders_feature_group.create( s3_uri=f"s3://{s3_bucket_name}/{prefix}", record_identifier_name=record_identifier_feature_name, event_time_feature_name="EventTime", role_arn=role, enable_online_store=True )
Para confirmar que seu grupo de recursos foi criado, nós o exibimos usando DescribeFeatureGroup
ListFeatureGroups
APIs:
customers_feature_group.describe()
orders_feature_group.describe()
sagemaker_session.boto_session.client('sagemaker', region_name=region).list_feature_groups() # We use the boto client to list FeatureGroups
Etapa 4: ingerir dados em um grupo de atributos
Depois que os grupos de recursos são criados, podemos colocar dados neles. Se você estiver usando o SageMakerAWS SDK for Python (Boto3), use a chamada de ingest
API. Se você estiver usando o SDK for Python (Boto3), use a API. PutRecord
Levará menos de 1 minuto para ingerir dados em ambas as opções. Este exemplo usa o SageMaker SDK para Python (Boto3), então ele usa a chamada de API: ingest
def check_feature_group_status(feature_group): status = feature_group.describe().get("FeatureGroupStatus") while status == "Creating": print("Waiting for Feature Group to be Created") time.sleep(5) status = feature_group.describe().get("FeatureGroupStatus") print(f"FeatureGroup {feature_group.name} successfully created.") check_feature_group_status(customers_feature_group) check_feature_group_status(orders_feature_group)
customers_feature_group.ingest( data_frame=customer_data, max_workers=3, wait=True )
orders_feature_group.ingest( data_frame=orders_data, max_workers=3, wait=True )
Usando um ID de registro de cliente arbitrário, 573291, usamos get_record
para verificar se os dados foram ingeridos no grupo de atributos.
customer_id = 573291 sample_record = sagemaker_session.boto_session.client('sagemaker-featurestore-runtime', region_name=region).get_record(FeatureGroupName=customers_feature_group_name, RecordIdentifierValueAsString=str(customer_id))
print(sample_record)
A seguir, demonstramos como usar o batch_get_record
para obter um lote de registros.
all_records = sagemaker_session.boto_session.client( "sagemaker-featurestore-runtime", region_name=region ).batch_get_record( Identifiers=[ { "FeatureGroupName": customers_feature_group_name, "RecordIdentifiersValueAsString": ["573291", "109382", "828400", "124013"], }, { "FeatureGroupName": orders_feature_group_name, "RecordIdentifiersValueAsString": ["573291", "109382", "828400", "124013"], }, ] )
print(all_records)
Etapa 5: limpar
Aqui, removemos os grupos de recursos que criamos.
customers_feature_group.delete() orders_feature_group.delete()
Etapa 6: próximas etapas
Neste exemplo de caderno de anotações, você aprendeu como começar a usar o Feature Store, criar grupos de recursos e ingerir dados neles.
Para ver um exemplo avançado de como usar a Feature Store para um caso de uso de detecção de fraudes, consulte Detecção de fraudes com a Feature Store
Etapa 7: exemplos de código para programadores
Neste bloco de anotações, usamos uma variedade de chamadas de API diferentes. A maioria deles é acessível por meio do SDK do SageMaker Python, mas alguns só existem no Boto3. Você pode invocar as chamadas da API do SDK do SageMaker Python diretamente nos objetos da Feature Store, enquanto para invocar as chamadas de API que existem no Boto3, você deve primeiro acessar um cliente do Boto3 por meio do Boto3 e das sessões: por exemplo,. SageMaker sagemaker_session.boto_session.client()
Veja a seguir uma lista de chamadas de API para esse notebook. Essas chamadas existem dentro do SDK for Python e existem no Boto3, para sua referência:
Chamadas de API do SDK para Python (Boto3)
describe() ingest() delete() create() load_feature_definitions()
Chamadas da API do Boto3
list_feature_groups() get_record()