Einführung in das Feature Store-Beispiel-Notebook - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einführung in das Feature Store-Beispiel-Notebook

Wichtig

Benutzerdefinierte IAM Richtlinien, die es Amazon SageMaker Studio oder Amazon SageMaker Studio Classic ermöglichen, SageMaker Amazon-Ressourcen zu erstellen, müssen auch Berechtigungen zum Hinzufügen von Tags zu diesen Ressourcen gewähren. Die Berechtigung zum Hinzufügen von Tags zu Ressourcen ist erforderlich, da Studio und Studio Classic automatisch alle von ihnen erstellten Ressourcen taggen. Wenn eine IAM Richtlinie Studio und Studio Classic das Erstellen von Ressourcen, aber kein Taggen erlaubt, können "AccessDenied" Fehler auftreten, wenn versucht wird, Ressourcen zu erstellen. Weitere Informationen finden Sie unter Stellen Sie Berechtigungen für das Taggen von Ressourcen SageMaker bereit.

AWS Verwaltete Richtlinien für Amazon SageMakerdie Berechtigungen zum Erstellen von SageMaker Ressourcen gewähren, beinhalten bereits Berechtigungen zum Hinzufügen von Tags beim Erstellen dieser Ressourcen.

Der Beispielcode auf dieser Seite bezieht sich auf das Beispiel-Notebook Introduction to Feature Store. Wir empfehlen, dass Sie dieses Notizbuch in Studio Classic oder in Notebook-Instanzen ausführen, oder JupyterLab weil der Code in diesem Handbuch konzeptionell ist und nicht voll funktionsfähig ist, wenn er kopiert wird.

Gehen Sie wie folgt vor, um das amazon-sagemaker-examples GitHub aws/-Repository zu klonen, das das Beispiel-Notizbuch enthält:

Nachdem Sie die SageMaker Beispielnotizbücher haben, navigieren Sie zum amazon-sagemaker-examples/sagemaker-featurestore Verzeichnis und öffnen Sie das Beispielnotizbuch Introduction to Feature Store.

Schritt 1: Richten Sie Ihre SageMaker Sitzung ein

Um mit der Nutzung des Feature Store zu beginnen, erstellen Sie eine SageMaker Sitzung. Richten Sie dann den Amazon Simple Storage Service (Amazon S3) -Bucket ein, den Sie für Ihre Funktionen verwenden möchten. Amazon-S3-Bucket ist Ihr Offline-Speicher. Der folgende Code verwendet den SageMaker Standard-Bucket und fügt ihm ein benutzerdefiniertes Präfix hinzu.

Anmerkung

Der Rolle, die Sie zum Ausführen des Notebooks verwenden, müssen die folgenden verwalteten Richtlinien zugeordnet sein: AmazonS3FullAccess und AmazonSageMakerFeatureStoreAccess. Informationen zum Hinzufügen von Richtlinien zu Ihrer IAM Rolle finden Sie unterHinzufügen von Richtlinien zu Ihrer IAM Rolle.

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

Schritt 2: Überprüfen Ihrer Daten

In diesem Beispiel für ein Notizbuch nehmen wir synthetische Daten aus dem GitHub Repository auf, das das gesamte Notizbuch hostet.

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

Das folgende Diagramm veranschaulicht die Schritte, die Daten durchlaufen, bevor sie von Feature Store aufgenommen werden. In diesem Notizbuch veranschaulichen wir den Anwendungsfall, bei dem Sie Daten aus mehreren Quellen haben und diese unabhängig voneinander in einem Feature Store speichern möchten. In unserem Beispiel werden Daten aus einem Data Warehouse (Kundendaten) und Daten aus einem Echtzeit-Streaming-Dienst (Bestelldaten) berücksichtigt.

Erstellung von Feature-Gruppen und Datenaufnahme im Feature Store für dieses Beispiel-Notizbuch.

Schritt 3: Erstellen von Feature-Gruppen

Wir beginnen damit, Feature-Gruppennamen für customer_data und orders_data zu erstellen. Anschließend erstellen wir zwei Feature-Gruppen, eine für customer_data und eine weitere für: 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())

Instanziieren Sie ein FeatureGroup Objekt für customers_data und: 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"

Hängen Sie ein EventTime Feature an Ihren Datenrahmen an. Dieser Parameter ist erforderlich und gibt jedem Datenpunkt einen Zeitstempel:

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

Laden Sie Feature-Definitionen in Ihre Feature-Gruppe:

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

Im Folgenden wird create die Erstellung von jeweils zwei Feature-Gruppen aufgerufen: customers_feature_group orders_feature_group

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 )

Um zu bestätigen, dass Ihre Feature-Gruppe erstellt wurde, zeigen wir sie mit DescribeFeatureGroup und an 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

Schritt 4: Daten in eine Feature-Gruppe aufnehmen

Nachdem die Feature-Gruppen erstellt wurden, können wir Daten in sie einfügen. Wenn Sie den verwenden SageMaker AWS SDK for Python (Boto3), verwenden Sie den ingest API Anruf. Wenn Sie Python SDK (Boto3) verwenden, verwenden Sie den. PutRecord API Die Datenaufnahme dieser beiden Optionen dauert weniger als 1 Minute. In diesem Beispiel wird SageMaker SDK for Python (Boto3) verwendet, also der ingest API Aufruf:

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 )

Mithilfe einer beliebigen Kundendatensatz-ID, 573291, überprüfen wir, ob die Daten in die Feature-Gruppe aufgenommen wurden get_record.

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)

Im Folgenden wird gezeigt, wie Sie den verwenden, batch_get_record um einen Stapel von Datensätzen abzurufen.

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)

Schritt 5: Bereinigen

Hier entfernen wir die Feature-Gruppen, die wir erstellt haben.

customers_feature_group.delete() orders_feature_group.delete()

Schritt 6: Nächste Schritte

In diesem Beispielnotizbuch haben Sie gelernt, wie Sie mit Feature Store beginnen, Feature-Gruppen erstellen und Daten in diese aufnehmen.

Ein fortgeschrittenes Beispiel zur Verwendung von Feature Store für einen Anwendungsfall zur Betrugserkennung finden Sie unter Betrugserkennung mit Feature Store.

Schritt 7: Codebeispiele für Programmierer

In diesem Notizbuch haben wir eine Vielzahl verschiedener API Aufrufe verwendet. Die meisten von ihnen sind über SageMaker Python zugänglichSDK, einige existieren jedoch nur in Boto3. Sie können die SageMaker SDK API Python-Aufrufe direkt für Ihre Feature Store-Objekte aufrufen, wohingegen Sie zum Aufrufen von API Aufrufen, die in Boto3 existieren, zuerst über Ihre Boto3- und Sessions auf einen Boto3-Client zugreifen müssen: zum Beispiel. SageMaker sagemaker_session.boto_session.client()

Im Folgenden finden Sie eine Liste von Aufrufen für dieses Notizbuch. API Diese Aufrufe existieren innerhalb der SDK for Python und existieren in Boto3, als Referenz:

SDKfür Python (Boto3) -Aufrufe API

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

Boto3-Aufrufe API

list_feature_groups() get_record()