특성 저장소 소개 예제 노트북 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

특성 저장소 소개 예제 노트북

중요

Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic이 Amazon SageMaker 리소스를 생성할 수 있도록 허용하는 사용자 지정 IAM 정책도 해당 리소스에 태그를 추가할 수 있는 권한을 부여해야 합니다. Studio와 Studio Classic은 생성한 모든 리소스에 태그를 자동으로 지정하므로 리소스에 태그를 추가할 수 있는 권한이 필요합니다. IAM 정책에서 Studio 및 Studio Classic이 리소스를 생성하도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스를 생성하려고 할 때 “AccessDenied” 오류가 발생할 수 있습니다. 자세한 내용은 리소스에 태그를 지정할 SageMaker 수 있는 권한 제공 단원을 참조하십시오.

AWS Amazon용 관리형 정책 SageMaker 는 SageMaker 리소스를 생성할 수 있는 권한을 부여하며 이러한 리소스를 생성하는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

이 페이지의 예제 코드는 특성 저장소 소개 예제 노트북을 참조합니다. 이 노트북은 Studio Classic, 노트북 인스턴스 또는 이 가이드의 코드가 개념적이며 복사할 경우 완전히 작동하지 않기 JupyterLab 때문에 실행하는 것이 좋습니다.

다음을 사용하여 예제 노트북이 포함된 aws/amazon-sagemaker-examples GitHub 리포지토리를 복제합니다.

이제 SageMaker 예제 노트북이 있으므로 amazon-sagemaker-examples/sagemaker-featurestore 디렉터리로 이동하여 특성 저장소 소개 예제 노트북을 엽니다.

1단계: SageMaker 세션 설정

특성 저장소 사용을 시작하려면 SageMaker 세션을 생성합니다. 그런 다음 기능에 사용할 Amazon Simple Storage Service(Amazon S3) 버킷을 설정합니다. Amazon S3 버킷은 오프라인 저장소입니다. 다음 코드는 SageMaker 기본 버킷을 사용하고 사용자 지정 접두사를 추가합니다.

참고

노트북을 실행하는 데 사용하는 역할에는 AmazonS3FullAccess, AmazonSageMakerFeatureStoreAccess같은 관리형 정책이 연결되어 있어야 합니다. IAM 역할에 정책을 추가하는 방법에 대한 자세한 내용은 섹션을 참조하세요IAM 역할에 정책 추가.

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

2단계: 데이터 검사

이 노트북 예제에서는 전체 노트북을 호스팅하는 GitHub 리포지토리에서 합성 데이터를 수집합니다.

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

다음 다이어그램은 특성 저장소가 데이터를 수집하기 전에 데이터가 거치는 단계를 보여줍니다. 이 노트북에서는 여러 소스의 데이터가 있고 특성 저장소에 독립적으로 저장하려는 사용 사례를 설명합니다. 이 예에서는 데이터 웨어하우스의 데이터(고객 데이터)와 실시간 스트리밍 서비스의 데이터(주문 데이터를 고려합니다.

이 예제 노트북의 특성 저장소에서 특성 그룹 생성 및 데이터 수집.

3단계: 특성 그룹 생성

먼저 customer_data 및 orders_data에 대한 특성 그룹 이름을 만드는 것으로 시작합니다. 그런 다음 두 개의 특성 그룹을 생성합니다. 하나는 용customer_data이고 다른 하나는 용입니다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())

customers_data 및 에 대한 FeatureGroup 객체 인스턴스화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"

데이터 프레임에 EventTime특성을 추가합니다. 이 파라미터는 필수이며 각 데이터 포인트의 타임스탬프를 지정합니다.

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

특성 그룹에 특성 정의를 로드합니다.

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

다음 호출은 orders_feature_group각각 두 개의 기능 그룹인 customers_feature_groupcreate를 생성합니다.

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 )

특성 그룹이 생성되었는지 확인하기 위해 DescribeFeatureGroupListFeatureGroups 를 사용하여 표시합니다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

4단계: 특성 그룹에 데이터 수집

기능 그룹이 생성된 후 데이터를 해당 그룹에 넣을 수 있습니다. 를 SageMaker 사용하는 경우 ingest API 호출을 AWS SDK for Python (Boto3)사용합니다. 를 Python(Boto3)SDK용으로 사용하는 경우 PutRecord 를 사용합니다API. 이 두 옵션 모두에서 데이터를 수집하는 데 1분도 걸리지 않습니다. 이 예제에서는 for Python(Boto3)을 SageMaker SDK 사용하므로 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 )

임의의 고객 레코드 ID인 573291을 사용하여 데이터가 특성 그룹에 수집되었는지 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)

다음은 를 사용하여 레코드 배치를 batch_get_record 가져오는 방법을 보여줍니다.

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)

5단계: 정리

여기서는 생성한 특성 그룹을 제거합니다.

customers_feature_group.delete() orders_feature_group.delete()

6단계: 다음 단계

이 예제 노트북에서는 특성 저장소를 시작하고, 특성 그룹을 생성하고, 데이터를 수집하는 방법을 배웠습니다.

사기 탐지 사용 사례에 특성 저장소를 사용하는 방법에 대한 고급 예제는 특성 저장소 를 사용한 사기 탐지를 참조하세요.

7단계: 프로그래머의 코드 예제

이 노트북에서는 다양한 API 통화를 사용했습니다. 대부분은 SageMaker Python을 통해 액세스할 수 SDK있지만 일부는 Boto3 내에만 있습니다. SageMaker Python SDK API 호출을 Feature Store 객체에서 직접 호출할 수 있지만 Boto3 내에 있는 API 호출을 호출하려면 먼저 Boto3 및 SageMaker 세션, 예를 들어 를 통해 Boto3 클라이언트에 액세스해야 합니다sagemaker_session.boto_session.client().

다음은 이 노트북에 대한 API 호출 목록입니다. 이러한 호출은 SDK for Python 참조용으로 Boto3에 및 이 있습니다.

SDK Python(Boto3) API 호출

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

Boto3 API 호출

list_feature_groups() get_record()