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
Gehen Sie wie folgt vor, um das amazon-sagemaker-examples GitHub aws/-Repository
-
Für Studio Classic
Starten Sie Studio Classic. Sie können Studio Classic öffnen, wenn Studio oder Studio Classic als Standarderlebnis aktiviert ist. Anweisungen zum Öffnen von Studio Classic finden Sie unterStarten Sie Studio Classic mit der SageMaker Amazon-Konsole.
Klonen Sie das amazon-sagemaker-examples GitHub aws/-Repository
nach Studio Classic, indem Sie die Schritte unter befolgen. Klonen Sie ein Git-Repository in SageMaker Studio Classic -
Für SageMaker Amazon-Notebook-Instances
Starten Sie die SageMaker Notebook-Instance, indem Sie den Anweisungen unter folgenZugreifen auf Notebook-Instances.
Prüfen Sie anhand der Anweisungen unter, ob sich die Beispiele bereits in Ihren Notizbüchern befindenRufen Sie Beispiel-Notizbücher auf. Falls nicht, folgen Sie den Anweisungen unterFügen Sie Ihrem SageMaker Amazon-Konto ein Git-Repository hinzu.
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
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.
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 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
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()