Introduzione al notebook di esempio Feature Store - Amazon SageMaker

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. Si consiglia di eseguire questo notebook in Studio Classic, nelle istanze di notebook o JupyterLab perché il codice contenuto in questa guida è concettuale e non completamente funzionale se copiato.

Usa quanto segue per clonare il amazon-sagemaker-examples GitHub repository aws/, contenente il notebook di esempio:

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 che ospita l'intero notebook.

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).

Creazione di gruppi di funzionalità e inserimento di dati in Feature Store per questo notebook di esempio.

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 ListFeatureGroupsAPIs:

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()