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
Utilice lo siguiente para clonar el amazon-sagemaker-examples GitHub repositorio aws/
-
Para Studio Classic
Inicie Studio Classic. Puede abrir Studio Classic si Studio o Studio Classic están habilitados como experiencia predeterminada. Para obtener instrucciones sobre cómo abrir Studio Classic, consulteInicie Studio Classic con Amazon SageMaker Console.
Para clonar el amazon-sagemaker-examples GitHub repositorio aws/
en Studio Classic, siga los pasos que se indican en. Clonar un repositorio de Git en SageMaker Studio Classic -
Para instancias de Amazon SageMaker Notebook
Inicie la instancia de SageMaker Notebook siguiendo las instrucciones que se indican enAcceso a instancias de cuaderno.
Compruebe si los ejemplos ya están en sus libretas siguiendo las instrucciones que aparecen enAccede a cuadernos de ejemplo. Si no es así, sigue las instrucciones que se indican enAñade un repositorio de Git a tu SageMaker cuenta de Amazon.
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
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).
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 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
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()