Pengantar buku catatan contoh Toko Fitur - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pengantar buku catatan contoh Toko Fitur

penting

IAMKebijakan khusus yang memungkinkan Amazon SageMaker Studio atau Amazon SageMaker Studio Classic membuat SageMaker sumber daya Amazon juga harus memberikan izin untuk menambahkan tag ke sumber daya tersebut. Izin untuk menambahkan tag ke sumber daya diperlukan karena Studio dan Studio Classic secara otomatis menandai sumber daya apa pun yang mereka buat. Jika IAM kebijakan mengizinkan Studio dan Studio Classic membuat sumber daya tetapi tidak mengizinkan penandaan, kesalahan "AccessDenied" dapat terjadi saat mencoba membuat sumber daya. Untuk informasi selengkapnya, lihat Berikan izin untuk menandai sumber daya SageMaker.

AWS Kebijakan Terkelola untuk Amazon SageMakeryang memberikan izin untuk membuat SageMaker sumber daya sudah menyertakan izin untuk menambahkan tag saat membuat sumber daya tersebut.

Kode contoh pada halaman ini mengacu pada contoh buku catatan Pengantar Toko Fitur. Kami menyarankan Anda menjalankan notebook ini di Studio Classic, instance notebook, atau JupyterLab karena kode dalam panduan ini konseptual dan tidak berfungsi penuh jika disalin.

Gunakan yang berikut ini untuk mengkloning aws/ amazon-sagemaker-examples GitHub repositori, yang berisi contoh notebook:

Sekarang setelah Anda memiliki SageMaker contoh notebook, navigasikan ke amazon-sagemaker-examples/sagemaker-featurestore direktori dan buka buku catatan contoh Pengantar ke Feature Store.

Langkah 1: Siapkan SageMaker sesi Anda

Untuk mulai menggunakan Feature Store, buat SageMaker sesi. Kemudian, siapkan bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) yang ingin Anda gunakan untuk fitur Anda. Bucket Amazon S3 adalah toko offline Anda. Kode berikut menggunakan bucket SageMaker default dan menambahkan awalan kustom ke dalamnya.

catatan

Peran yang Anda gunakan untuk menjalankan buku catatan harus memiliki kebijakan terkelola berikut yang dilampirkan padanya: AmazonS3FullAccess danAmazonSageMakerFeatureStoreAccess. Untuk informasi tentang menambahkan kebijakan ke IAM peran Anda, lihatMenambahkan kebijakan ke IAM peran Anda.

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

Langkah 2: Periksa data Anda

Dalam contoh notebook ini, kami menelan data sintetis dari GitHub repositori yang menampung notebook lengkap.

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

Diagram berikut mengilustrasikan langkah-langkah yang dilalui data sebelum Feature Store menelannya. Dalam buku catatan ini, kami mengilustrasikan kasus penggunaan di mana Anda memiliki data dari berbagai sumber dan ingin menyimpannya secara independen di Toko Fitur. Contoh kami mempertimbangkan data dari gudang data (data pelanggan), dan data dari layanan streaming real-time (data pesanan).

Pembuatan grup fitur dan konsumsi data di Feature Store untuk contoh notebook ini.

Langkah 3: Buat grup fitur

Pertama-tama kita mulai dengan membuat nama grup fitur untuk customer_data dan orders_data. Setelah ini, kami membuat dua grup fitur, satu untuk customer_data dan satu lagi untukorders_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())

Buat instance FeatureGroup objek untuk customers_data dan: 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"

Tambahkan EventTime fitur ke bingkai data Anda. Parameter ini diperlukan, dan stempel waktu setiap titik data:

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

Muat definisi fitur ke grup fitur Anda:

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

Panggilan berikut create untuk membuat dua grup fitur, customers_feature_group danorders_feature_group, masing-masing:

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 )

Untuk mengonfirmasi bahwa grup fitur Anda telah dibuat, kami menampilkannya dengan menggunakan DescribeFeatureGroup dan 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

Langkah 4: Menyerap data ke dalam grup fitur

Setelah grup fitur dibuat, kita dapat memasukkan data ke dalamnya. Jika Anda menggunakan SageMaker AWS SDK for Python (Boto3), gunakan ingest API panggilan. Jika Anda menggunakan SDK untuk Python (Boto3), maka gunakan. PutRecord API Ini akan memakan waktu kurang dari 1 menit untuk menelan data kedua opsi ini. Contoh ini menggunakan SageMaker SDK untuk Python (Boto3), sehingga menggunakan panggilan: 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 )

Menggunakan id catatan pelanggan arbitrer, 573291 kami gunakan get_record untuk memeriksa apakah data telah dicerna ke dalam grup fitur.

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)

Berikut ini menunjukkan bagaimana menggunakan batch_get_record untuk mendapatkan batch catatan.

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)

Langkah 5: Bersihkan

Di sini kita menghapus Grup Fitur yang kita buat.

customers_feature_group.delete() orders_feature_group.delete()

Langkah 6: Langkah selanjutnya

Di buku catatan contoh ini, Anda mempelajari cara memulai dengan Feature Store, membuat grup fitur, dan memasukkan data ke dalamnya.

Untuk contoh lanjutan tentang cara menggunakan Toko Fitur untuk kasus penggunaan deteksi penipuan, lihat Deteksi Penipuan dengan Toko Fitur.

Langkah 7: Contoh kode untuk programmer

Di notebook ini kami menggunakan berbagai API panggilan yang berbeda. Kebanyakan dari mereka dapat diakses melalui SageMaker PythonSDK, namun beberapa hanya ada dalam Boto3. Anda dapat memanggil panggilan SageMaker SDK API Python langsung pada objek Feature Store Anda, sedangkan untuk API memanggil panggilan yang ada dalam Boto3, Anda harus terlebih dahulu mengakses klien Boto3 melalui Boto3 dan sesi Anda: misalnya,. SageMaker sagemaker_session.boto_session.client()

Berikut ini adalah daftar API panggilan untuk notebook ini. Panggilan ini ada di dalam SDK for Python dan ada di Boto3, untuk referensi Anda:

SDKuntuk Panggilan Python (Boto3) API

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

Panggilan Boto3 API

list_feature_groups() get_record()