Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Introduzione al notebook di esempio Feature Store
Importante
IAMLe politiche personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L'autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic taggano automaticamente tutte le risorse che creano. Se una IAM politica consente a Studio e Studio Classic di creare risorse ma non consente l'aggiunta di tag, si possono verificare errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta Fornisci le autorizzazioni per etichettare le risorse SageMaker.
AWS Policy gestite per Amazon SageMakerche concedono le autorizzazioni per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.
Il codice esemplificativo in questa pagina si riferisce al notebook di esempio Introduzione al Feature Store
Usa quanto segue per clonare il amazon-sagemaker-examples GitHub repository aws/, contenente
-
Per Studio Classic
Avvia Studio Classic. Puoi aprire Studio Classic se Studio o Studio Classic sono abilitati come esperienza predefinita. Per istruzioni su come aprire Studio Classic, consultaAvvia Studio Classic utilizzando la SageMaker console Amazon.
Clona il amazon-sagemaker-examples GitHub repository aws/
su Studio Classic seguendo i passaggi indicati. Clona un repository Git in Studio Classic SageMaker -
Per le istanze di SageMaker notebook Amazon
Avvia l'istanza del SageMaker notebook seguendo le istruzioni riportate inAccesso alle istanze del notebook.
Controlla se gli esempi sono già presenti nei tuoi taccuini seguendo le istruzioni riportate in. Accedi a taccuini di esempio In caso contrario, segui le istruzioni riportate in. Aggiungi un repository Git al tuo account Amazon SageMaker
Ora che hai i taccuini di SageMaker esempio, vai alla amazon-sagemaker-examples/sagemaker-featurestore
directory e apri il notebook di esempio Introduction to Feature Store
Passaggio 1: configura la sessione SageMaker
Per iniziare a utilizzare Feature Store, crea una SageMaker sessione. Quindi, configura il bucket Amazon Simple Storage Service (Amazon S3) che desideri utilizzare per le tue funzionalità. Il bucket Amazon S3 è rappresentato dall’archivio offline. Il codice seguente utilizza il bucket SageMaker predefinito e vi aggiunge un prefisso personalizzato.
Nota
Al ruolo utilizzato per eseguire il notebook devono essere collegate le seguenti policy gestite: AmazonS3FullAccess
e AmazonSageMakerFeatureStoreAccess
. Per informazioni sull'aggiunta di politiche al tuo IAM ruolo, consulta. Aggiungere politiche al proprio IAM ruolo
# 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()
Fase 2: verifica dei dati
In questo esempio di notebook, inseriamo dati sintetici dal GitHub repository
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())
Il diagramma seguente illustra i passaggi che i dati devono seguire prima che Feature Store li acquisisca. In questo taccuino, illustriamo il caso d'uso in cui si dispone di dati provenienti da più fonti e si desidera archiviarli in modo indipendente in un Feature Store. L’esempio considera i dati di un data warehouse (dati dei clienti) e i dati di un servizio di streaming in tempo reale (dati degli ordini).
Fase 3: creazione di gruppi di funzionalità
Per iniziare, vengono creati i nomi dei gruppi di funzionalità per customer_data e orders_data. Successivamente, creiamo due gruppi di funzionalità, uno per customer_data
e l'altro per: orders_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())
Crea un'istanza di un FeatureGroup
oggetto per 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"
Aggiungi funzionalità EventTime
al data frame. Questo parametro è obbligatorio e indica la data e l'ora di ogni punto dati:
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")
Carica le definizioni delle funzionalità nel tuo gruppo di funzionalità:
customers_feature_group.load_feature_definitions(data_frame=customer_data) orders_feature_group.load_feature_definitions(data_frame=orders_data)
Le seguenti chiamate create
per creare due gruppi di funzionalità customers_feature_group
eorders_feature_group
, rispettivamente:
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 )
Per confermare che il tuo gruppo di funzionalità è stato creato, lo mostriamo utilizzando DescribeFeatureGroup
e 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
Fase 4: inserimento di dati in un gruppo di funzionalità
Dopo aver creato i gruppi di funzionalità, possiamo inserire dati in essi. Se stai usando il SageMaker AWS SDK for Python (Boto3), usa la ingest
API chiamata. Se stai usando SDK per Python (Boto3), usa il. PutRecord
API Occorre meno di 1 minuto per inserire i dati in entrambe le opzioni. Questo esempio usa SageMaker SDK for Python (Boto3), quindi usa la chiamata: ingest
API
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 )
Con un ID record cliente arbitrario, 573291, si usa get_record
per verificare che i dati siano stati inseriti nel gruppo di funzionalità.
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)
Di seguito viene illustrato come utilizzare per ottenere un batch_get_record
batch di record.
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)
Fase 5: rimozione
Qui rimuoviamo i gruppi di funzionalità che abbiamo creato.
customers_feature_group.delete() orders_feature_group.delete()
Fase 6: fasi successive
In questo taccuino di esempio, avete imparato come iniziare a usare Feature Store, creare gruppi di funzionalità e inserirvi dati.
Per un esempio avanzato su come utilizzare Feature Store per un caso d'uso relativo al rilevamento delle frodi, consulta Fraud Detection with Feature Store
Fase 7: Esempi di codice per programmatori
In questo notebook abbiamo usato una varietà di API chiamate diverse. La maggior parte di essi è accessibile tramite SageMaker PythonSDK, tuttavia alcuni esistono solo all'interno di Boto3. Puoi richiamare le chiamate SageMaker SDK API Python direttamente sugli oggetti del Feature Store, mentre per API richiamare le chiamate esistenti all'interno di Boto3, devi prima accedere a un client Boto3 tramite Boto3 e sessioni: ad esempio,. SageMaker sagemaker_session.boto_session.client()
Di seguito è riportato un elenco di chiamate per questo notebook. API Queste chiamate esistono all'interno di SDK for Python ed esistono in Boto3, come riferimento:
SDKper chiamate Python (Boto3) API
describe() ingest() delete() create() load_feature_definitions()
APIChiamate Boto3
list_feature_groups() get_record()