Introducción al cuaderno de ejemplo del almacén de características - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción al cuaderno de ejemplo del almacén de características

importante

IAMLas políticas personalizadas que permiten a Amazon SageMaker Studio o Amazon SageMaker Studio Classic crear SageMaker recursos de Amazon también deben conceder permisos para añadir etiquetas a esos recursos. El permiso para añadir etiquetas a los recursos es obligatorio porque Studio y Studio Classic etiquetan automáticamente los recursos que crean. Si una IAM política permite a Studio y Studio Classic crear recursos, pero no permite el etiquetado, se pueden producir errores AccessDenied «» al intentar crear recursos. Para obtener más información, consulte Proporciona permisos para etiquetar SageMaker los recursos.

AWS Políticas gestionadas para Amazon SageMakerque otorgan permisos para crear SageMaker recursos ya incluyen permisos para añadir etiquetas al crear esos recursos.

El código de ejemplo de esta página hace referencia al cuaderno de ejemplo de introducción al almacén de características. Le recomendamos que ejecute este bloc de notas en Studio Classic, por ejemplo, o JupyterLab porque el código de esta guía es conceptual y no es completamente funcional si se copia.

Utilice lo siguiente para clonar el amazon-sagemaker-examples GitHub repositorio aws/, que contiene el bloc de notas de ejemplo:

Ahora que tiene los cuadernos de SageMaker ejemplo, navegue hasta el amazon-sagemaker-examples/sagemaker-featurestore directorio y abra el cuaderno de ejemplo Introduction to Feature Store.

Paso 1: Configura tu sesión SageMaker

Para empezar a usar Feature Store, cree una SageMaker sesión. A continuación, configure el depósito de Amazon Simple Storage Service (Amazon S3) que desee utilizar para sus funciones. El bucket de Amazon S3 es su almacenamiento sin conexión. El siguiente código usa el bucket SageMaker predeterminado y le agrega un prefijo personalizado.

nota

El rol que utilice para ejecutar el cuaderno debe tener asociadas las siguientes políticas administradas: AmazonS3FullAccess y AmazonSageMakerFeatureStoreAccess. Para obtener información sobre cómo añadir políticas a su IAM función, consulteAñadir políticas a su IAM función.

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

Paso 2: Inspeccionar los datos

En este ejemplo de cuaderno, ingerimos datos sintéticos del GitHub repositorio que aloja el cuaderno completo.

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

El siguiente diagrama ilustra los pasos que siguen los datos antes de que Feature Store los ingiera. En este cuaderno, ilustramos el caso de uso en el que tiene datos de varias fuentes y desea almacenarlos de forma independiente en un Feature Store. El ejemplo considera los datos de un almacenamiento de datos (datos de clientes) y los datos de un servicio de transmisión en tiempo real (datos de pedidos).

Creación de grupos de características e ingesta de datos en Feature Store para este cuaderno de ejemplo.

Paso 3: Crear grupos de características

En primer lugar, cree nombres de grupo de características para customer_data y orders_data. A continuación, creamos dos grupos de características, uno para customer_data y otro 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())

Crea una instancia de un FeatureGroup objeto para customers_data y: 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 una característica EventTime a su marco de datos. Este parámetro es obligatorio y marca la hora de cada punto de datos:

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

Cargue las definiciones de funciones en su grupo de funciones:

customers_feature_group.load_feature_definitions(data_frame=customer_data) orders_feature_group.load_feature_definitions(data_frame=orders_data)

Lo siguiente llama create a crear dos grupos de funciones customers_feature_group yorders_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 se creó su grupo de entidades, lo mostramos mediante DescribeFeatureGroup y 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

Paso 4: Ingerir datos en un grupo de características

Una vez creados los grupos de entidades, podemos incluir datos en ellos. Si estás usando el SageMaker AWS SDK for Python (Boto3), usa la ingest API llamada. Si lo estás usando SDK para Python (Boto3), entonces usa el. PutRecord API Se tardará menos de un minuto en ingerir datos en estas dos opciones. Este ejemplo usa SageMaker SDK para Python (Boto3), por lo que usa la ingest API llamada:

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 )

Se usa un identificador de registro de cliente arbitrario, 573291, y se usa get_record para comprobar que los datos se hayan incorporado al grupo de características.

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 continuación, se muestra cómo utilizar el batch_get_record para obtener un 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)

Paso 5: Eliminar

Aquí eliminamos los grupos de funciones que hemos creado.

customers_feature_group.delete() orders_feature_group.delete()

Paso 6: Siguientes pasos

En este cuaderno de ejemplo, ha aprendido a empezar a utilizar Feature Store, a crear grupos de entidades y a introducir datos en ellos.

Para ver un ejemplo avanzado sobre cómo usar Feature Store para un caso práctico de detección de fraudes, consulta Detección de fraudes con Feature Store.

Paso 7: Ejemplos de código para programadores

En este cuaderno utilizamos una variedad de API llamadas diferentes. La mayoría de ellos son accesibles a través de SageMaker PythonSDK, sin embargo, algunos solo existen en Boto3. Puede invocar las SDK API llamadas de SageMaker Python directamente en los objetos de su Feature Store, mientras que para invocar las API llamadas que existen en Boto3, primero debe acceder a un cliente de Boto3 a través de su Boto3 y sus sesiones: por ejemplo,. SageMaker sagemaker_session.boto_session.client()

La siguiente es una lista de llamadas para este bloc de notas. API Estas llamadas existen dentro del SDK for Python y existen en Boto3, para su referencia:

SDKpara llamadas de Python (Boto3) API

describe() ingest() delete() create() load_feature_definitions()

Llamadas de Boto3 API

list_feature_groups() get_record()