「Amazon SageMaker Feature Store Feature Processorを使用して、MLの洞察を解き放つ」
Unlocking ML insights with Amazon SageMaker Feature Store Feature Processor.
Amazon SageMaker Feature Storeは、機械学習(ML)のための特徴量エンジニアリングを自動化するエンドツーエンドのソリューションを提供します。多くのMLユースケースでは、ログファイル、センサーの読み取り、トランザクションレコードなどの生データを、モデルトレーニングに最適化された有意義な特徴量に変換する必要があります。
特徴量の品質は、高精度なMLモデルを確保するために重要です。集計、エンコーディング、正規化などを使用して生データを特徴量に変換することは、しばしば必要であり、かなりの努力を必要とする場合もあります。エンジニアは、各ユースケースごとにPythonやSparkでカスタムのデータ前処理や集計ロジックを手動で記述する必要があります。
この一般的な作業は手間がかかり、繰り返しであり、エラーの原因となります。SageMaker Feature Storeの特徴量プロセッサは、生データをバッチトレーニング用の集約された特徴量に自動的に変換することで、この負担を軽減します。エンジニアは簡単なデータ変換関数を提供し、それをSpark上でスケールで実行し、基礎となるインフラストラクチャを管理します。これにより、データサイエンティストやデータエンジニアは、実装の詳細ではなく、特徴量エンジニアリングの論理に集中することができます。
この記事では、自動車販売会社がFeature Processorを使用して生の販売トランザクションデータを特徴量に変換する方法を3つのステップで紹介します:
- 「VirtuSwapがAmazon SageMaker StudioのカスタムコンテナとAWS GPUインスタンスを使用して、Pandasベースの取引シミュレーションを加速する方法」
- 「Amazon SageMakerとHugging Faceを使用して、FetchはML処理の遅延を50%削減します」
- 「アジア競技大会、eスポーツがオリンピックの夢に火をつける新たな節目となる」
- データ変換のローカル実行。
- Sparkを使用したスケールでのリモート実行。
- パイプラインを介した運用化。
SageMaker Feature Storeが生データを取り込み、Sparkを使用して特徴量変換をリモートで実行し、結果の集計された特徴量を特徴量グループにロードする様子を示します。これらのエンジニアリングされた特徴量は、MLモデルのトレーニングに使用することができます。
このユースケースでは、SageMaker Feature Storeが生の自動車販売データを構造化された特徴量に変換する方法を見ていきます。これらの特徴量を使用して、次のような洞察を得ることができます:
- 2010年以降における赤いコンバーチブルの平均価格と最高価格
- 最高の走行距離と価格を持つモデル
- 年ごとの新車と中古車の販売トレンド
- 場所ごとの平均MSRPの違い
SageMaker Feature Storeパイプラインによって、新しいデータが入力されるたびに特徴量が更新され、企業は時間の経過に応じて継続的に洞察を得ることができます。
ソリューションの概要
私たちは、car_data.csv
というデータセットを使用して作業します。このデータセットには、企業が販売した中古車と新車のモデル、年、ステータス、走行距離、価格、およびMSRPなどの仕様が含まれています。次のスクリーンショットは、データセットの例を示しています。
解決策のノートブックfeature_processor.ipynb
には、この投稿で説明する以下の主要なステップが含まれています:
car-data
という名前の特徴量グループと、生の自動車販売レコード用の特徴量グループであるcar-data-aggregated
を作成します。@feature_processor
デコレータを使用して、Amazon Simple Storage Service(Amazon S3)からcar-data特徴量グループにデータをロードします。@feature_processor code
をSparkアプリケーションとしてリモートで実行してデータを集計します。- SageMakerパイプラインを介して特徴量プロセッサを運用化し、実行をスケジュールします。
- Amazon SageMaker Studioで特徴量処理パイプラインとラインナップを探索します。
- 集計された特徴量を使用してMLモデルをトレーニングします。
前提条件
このチュートリアルを実行するには、以下が必要です:
- AWSアカウント。
- SageMaker Studioのセットアップ。
- AWS Identity and Access Management(IAM)の権限。このIAMロールを作成する際には、最小特権アクセスを許可するベストプラクティスに従ってください。
この投稿では、SageMaker Python SDKを使用してFeature Processorを始める方法を示した以下のノートブックを参照しています。
特徴量グループの作成
特徴量グループを作成するには、以下の手順を完了します:
-
次のように
car-data
の特徴量グループ定義を作成します:# Feature Group - Car Sales CAR_SALES_FG_NAME = "car-data" CAR_SALES_FG_ARN = f"arn:aws:sagemaker:{region}:{aws_account_id}:feature-group/{CAR_SALES_FG_NAME}" CAR_SALES_FG_ROLE_ARN = offline_store_role CAR_SALES_FG_OFFLINE_STORE_S3_URI = f"s3://{s3_bucket}/{s3_offline_store_prefix}" CAR_SALES_FG_FEATURE_DEFINITIONS = [ FeatureDefinition(feature_name="id", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="model", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="model_year", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="status", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="mileage", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="price", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="msrp", feature_type=FeatureTypeEnum.STRING), FeatureDefinition(feature_name="ingest_time", feature_type=FeatureTypeEnum.FRACTIONAL), ]
各フィーチャーは、car_data.csv
データセットの各列に対応しています(Model
、Year
、Status
、Mileage
、Price
、およびMSRP
)。
- レコード識別子
id
とイベントの時間ingest_time
をフィーチャーグループに追加します:
CAR_SALES_FG_RECORD_IDENTIFIER_NAME = "id"
CAR_SALES_FG_EVENT_TIME_FEATURE_NAME = "ingest_time"
- 次のように
car-data-aggregated
のフィーチャーグループ定義を作成します:
# フィーチャーグループ - 集計された車の販売AGG_CAR_SALES_FG_NAME = "car-data-aggregated"
AGG_CAR_SALES_FG_ARN = (
f"arn:aws:sagemaker:{region}:{aws_account_id}:feature-group/{AGG_CAR_SALES_FG_NAME}"
)
AGG_CAR_SALES_FG_ROLE_ARN = offline_store_role
AGG_CAR_SALES_FG_OFFLINE_STORE_S3_URI = f"s3://{s3_bucket}/{s3_offline_store_prefix}"
AGG_CAR_SALES_FG_FEATURE_DEFINITIONS = [
FeatureDefinition(feature_name="model_year_status", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="avg_mileage", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="max_mileage", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="avg_price", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="max_price", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="avg_msrp", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="max_msrp", feature_type=FeatureTypeEnum.STRING),
FeatureDefinition(feature_name="ingest_time", feature_type=FeatureTypeEnum.FRACTIONAL),
]
集計されたフィーチャーグループでは、フィーチャーはモデルの年とステータス、平均走行距離、最大走行距離、平均価格、最大価格、平均MSRP、最大MSRP、およびイベントの時間です。このフィーチャーグループにレコード識別子model_year_status
とイベントの時間ingest_time
を追加します。
- さあ、
car-data
フィーチャーグループを作成しましょう:
# フィーチャーグループ - 車の販売記録を作成します。
car_sales_fg = FeatureGroup(
name=CAR_SALES_FG_NAME,
feature_definitions=CAR_SALES_FG_FEATURE_DEFINITIONS,
sagemaker_session=sagemaker_session,
)
create_car_sales_fg_resp = car_sales_fg.create(
record_identifier_name=CAR_SALES_FG_RECORD_IDENTIFIER_NAME,
event_time_feature_name=CAR_SALES_FG_EVENT_TIME_FEATURE_NAME,
s3_uri=CAR_SALES_FG_OFFLINE_STORE_S3_URI,
enable_online_store=True,
role_arn=CAR_SALES_FG_ROLE_ARN,
)
car-data-aggregated
フィーチャーグループを作成します:
# フィーチャーグループ - 集計された車の販売記録を作成します。
agg_car_sales_fg = FeatureGroup(
name=AGG_CAR_SALES_FG_NAME,
feature_definitions=AGG_CAR_SALES_FG_FEATURE_DEFINITIONS,
sagemaker_session=sagemaker_session,
)
create_agg_car_sales_fg_resp = agg_car_sales_fg.create(
record_identifier_name=AGG_CAR_SALES_FG_RECORD_IDENTIFIER_NAME,
event_time_feature_name=AGG_CAR_SALES_FG_EVENT_TIME_FEATURE_NAME,
s3_uri=AGG_CAR_SALES_FG_OFFLINE_STORE_S3_URI,
enable_online_store=True,
role_arn=AGG_CAR_SALES_FG_ROLE_ARN,
)
フィーチャーグループを表示するには、SageMaker StudioのホームメニューのデータでSageMaker Feature Storeオプションに移動できます。
@feature_processorデコレータを使用してデータをロードする
このセクションでは、Amazon S3からの生の入力データ(car_data.csv
)をFeature Storeのcar-data
フィーチャーグループにローカルで変換します。この初期のローカル実行により、リモートで実行する前に開発と反復を行うことができ、より速い反復のためにデータのサンプルで行うこともできます。
@feature_processor
デコレータを使用すると、変換関数がSparkランタイム環境で実行され、関数に提供される入力引数とその戻り値がSparkのDataFrameとなります。
- SageMaker Python SDKおよびそのエクストラからFeature Processor SDKをインストールするために、以下のコマンドを使用してください:
pip install sagemaker[feature-processor]
変換関数の入力パラメータの数は、@feature_processor
デコレータで構成された入力の数と一致する必要があります。この場合、@feature_processor
デコレータは入力としてcar-data.csv
を持ち、出力としてcar-data
フィーチャーグループを指定しており、これはtarget_store
がOfflineStore
であるバッチ操作であることを示しています:
from sagemaker.feature_store.feature_processor import (
feature_processor,
FeatureGroupDataSource,
CSVDataSource,
)
@feature_processor(
inputs=[CSVDataSource(RAW_CAR_SALES_S3_URI)],
output=CAR_SALES_FG_ARN,
target_stores=["OfflineStore"],
)
- データを変換する
transform()
関数を定義します。この関数は以下のアクションを実行します:- 列名を小文字に変換します。
- イベント時刻を
ingest_time
列に追加します。 - 句読点を削除し、欠損値をNAで置き換えます。
def transform(raw_s3_data_as_df):
"""S3からデータをロードし、基本的な特徴エンジニアリングを実行し、Feature Groupに保存する"""
from pyspark.sql.functions import regexp_replace
from pyspark.sql.functions import lit
import time
transformed_df = (
raw_s3_data_as_df.withColumn("Price", regexp_replace("Price", "\$", ""))
# 列名の変更
.withColumnRenamed("Id", "id")
.withColumnRenamed("Model", "model")
.withColumnRenamed("Year", "model_year")
.withColumnRenamed("Status", "status")
.withColumnRenamed("Mileage", "mileage")
.withColumnRenamed("Price", "price")
.withColumnRenamed("MSRP", "msrp")
# イベント時刻の追加
.withColumn("ingest_time", lit(int(time.time())))
# 句読点と不要な文字列の削除、NAで置換
.withColumn("mileage", regexp_replace("mileage", "(,)|(mi\.)", ""))
.withColumn("mileage", regexp_replace("mileage", "Not available", "NA"))
.withColumn("price", regexp_replace("price", ",", ""))
.withColumn("msrp", regexp_replace("msrp", "(^MSRP\s\\$)|(,)", ""))
.withColumn("msrp", regexp_replace("msrp", "Not specified", "NA"))
.withColumn("msrp", regexp_replace("msrp", "\\$\d+[a-zA-Z\s]+", "NA"))
.withColumn("model", regexp_replace("model", "^\d\d\d\d\s", ""))
)
transform()
関数を呼び出してデータをcar-data
フィーチャーグループに保存します:
# FeatureProcessorの実行
transform()
出力によると、データが正常にcar-data
フィーチャーグループにインジェストされています。
transform_df.show()
関数の出力は次のようになります:
INFO:sagemaker:変換されたデータをarn:aws:sagemaker:us-west-2:416578662734:feature-group/car-dataにインジェストしています。ターゲットストア: ['OfflineStore']
+---+--------------------+----------+------+-------+--------+-----+-----------+
| id| model|model_year|status|mileage| price| msrp|ingest_time|
+---+--------------------+----------+------+-------+--------+-----+-----------+
| 0| Acura TLX A-Spec| 2022| New| NA|49445.00|49445| 1686627154|
| 1| Acura RDX A-Spec| 2023| New| NA|50895.00| NA| 1686627154|
| 2| Acura TLX Type S| 2023| New| NA|57745.00| NA| 1686627154|
| 3| Acura TLX Type S| 2023| New| NA|57545.00| NA| 1686627154|
| 4|Acura MDX Sport H...| 2019| Used| 32675 |40990.00| NA| 1686627154|
| 5| Acura TLX A-Spec| 2023| New| NA|50195.00|50195| 1686627154|
| 6| Acura TLX A-Spec| 2023| New| NA|50195.00|50195| 1686627154|
| 7| Acura TLX Type S| 2023| New| NA|57745.00| NA| 1686627154|
| 8| Acura TLX A-Spec| 2023| New| NA|47995.00| NA| 1686627154|
| 9| Acura TLX A-Spec| 2022| New| NA|49545.00| NA| 1686627154|
| 10|Acura Integra w/A...| 2023| New| NA|36895.00|36895| 1686627154|
| 11| Acura TLX A-Spec| 2023| New| NA|48395.00|48395| 1686627154|
| 12|Acura MDX Type S ...| 2023| New| NA|75590.00| NA| 1686627154|
| 13|Acura RDX A-Spec ...| 2023| New| NA|55345.00| NA| 1686627154|
| 14| Acura TLX A-Spec| 2023| New| NA|50195.00|50195| 1686627154|
| 15|Acura RDX A-Spec ...| 2023| New| NA|55045.00| NA| 1686627154|
| 16| Acura TLX Type S| 2023| New| NA|56445.00| NA| 1686627154|
| 17| Acura TLX A-Spec| 2023| New| NA|47495.00|47495| 1686627154|
| 18| Acura TLX Advance| 2023| New| NA|52245.00|52245| 1686627154|
| 19|入力データを正常に変換し、car-data
フィーチャーグループにインジェストしました。
@feature_processorコードをリモートで実行する
このセクションでは、以前に説明した@remote
デコレータを使用して、Sparkアプリケーションとしてフィーチャープロセッシングコードをリモートで実行する方法を示します。大規模なデータセットにスケーリングするために、Sparkを使用してフィーチャープロセッシングをリモートで実行します。Sparkは、単一のマシンでは処理しきれない大きなデータをクラスター上で分散処理する機能を提供します。 @remote
デコレータは、ローカルのPythonコードを単一またはマルチノードのSageMakerトレーニングジョブとして実行します。
- 次のように
@remote
デコレータと@feature_processor
デコレータを使用します:
@remote(spark_config=SparkConfig(), instance_type = "ml.m5.xlarge", ...)
@feature_processor(inputs=[FeatureGroupDataSource(CAR_SALES_FG_ARN)],
output=AGG_CAR_SALES_FG_ARN, target_stores=["OfflineStore"], enable_ingestion=False )
spark_config
パラメータは、これがSparkアプリケーション
として実行されることを示しています。 SparkConfigインスタンスは、Sparkの設定と依存関係を構成します。
aggregate()
関数を定義して、PySpark SQLとユーザー定義関数(UDF)を使用してデータを集計します。この関数は以下のアクションを実行します:
model
、year
、status
を連結してmodel_year_status
を作成します。
price
の平均を取り、avg_price
を作成します。
price
の最大値を取り、max_price
を作成します。
mileage
の平均を取り、avg_mileage
を作成します。
mileage
の最大値を取り、max_mileage
を作成します。
msrp
の平均を取り、avg_msrp
を作成します。
msrp
の最大値を取り、max_msrp
を作成します。
model_year_status
でグループ化します。
def aggregate(source_feature_group, spark):
"""
SQLクエリとUDFを使用してデータを集計します。
"""
import time
from pyspark.sql.types import StringType
from pyspark.sql.functions import udf
@udf(returnType=StringType())
def custom_concat(*cols, delimeter: str = ""):
return delimeter.join(cols)
spark.udf.register("custom_concat", custom_concat)
# SQL文字列を実行します。
source_feature_group.createOrReplaceTempView("car_data")
aggregated_car_data = spark.sql(
f"""
SELECT
custom_concat(model, "_", model_year, "_", status) as model_year_status,
AVG(price) as avg_price,
MAX(price) as max_price,
AVG(mileage) as avg_mileage,
MAX(mileage) as max_mileage,
AVG(msrp) as avg_msrp,
MAX(msrp) as max_msrp,
"{int(time.time())}" as ingest_time
FROM car_data
GROUP BY model_year_status
"""
)
aggregated_car_data.show()
return aggregated_car_data
aggregate()
関数を実行し、SageMakerトレーニングジョブを作成してSparkアプリケーションを実行します:
# aggregate関数を実行します。
aggregate()
結果として、SageMakerは以前に定義したSparkアプリケーションに対してトレーニングジョブを作成します。 sagemaker-spark-processingイメージ
を使用してSparkランタイム環境を作成します。
ここでは、SageMakerトレーニングジョブを使用して、Sparkフィーチャープロセッシングアプリケーションを実行します。 SageMakerトレーニングを使用することで、SageMakerプロセッシングでは使用できないウォームプーリングを使用して、起動時間を1分以下に短縮することができます。これにより、起動時間が重要なフィーチャープロセッシングなどの短いバッチジョブの最適化が向上します。
- 詳細を表示するには、SageMakerコンソールで、ナビゲーションペインのトレーニングの下にあるトレーニングジョブを選択し、
aggregate-<timestamp>
という名前のジョブを選択します。
aggregate()関数の出力はテレメトリコードを生成します。出力の中には以下のように集計されたデータが表示されます:
+--------------------+------------------+---------+------------------+-----------+--------+--------+-----------+
| model_year_status| avg_price|max_price| avg_mileage|max_mileage|avg_msrp|max_msrp|ingest_time|
+--------------------+------------------+---------+------------------+-----------+--------+--------+-----------+
|Acura CL 3.0_1997...| 7950.0| 7950.00| 100934.0| 100934 | null| NA| 1686634807|
|Acura CL 3.2 Type...| 6795.0| 7591.00| 118692.5| 135760 | null| NA| 1686634807|
|Acura CL 3_1998_Used| 9899.0| 9899.00| 63000.0| 63000 | null| NA| 1686634807|
|Acura ILX 2.0L Te...| 14014.125| 18995.00| 95534.875| 89103 | null| NA| 1686634807|
|Acura ILX 2.0L Te...| 15008.2| 16998.00| 94935.0| 88449 | null| NA| 1686634807|
|Acura ILX 2.0L Te...| 16394.6| 19985.00| 97719.4| 80000 | null| NA| 1686634807|
|Acura ILX 2.0L w/...|14567.181818181818| 16999.00| 96624.72727272728| 98919 | null| NA| 1686634807|
|Acura ILX 2.0L w/...| 16673.4| 18995.00| 84848.6| 96637 | null| NA| 1686634807|
|Acura ILX 2.0L w/...|12580.333333333334| 14546.00|100207.33333333333| 95782 | null| NA| 1686634807|
|Acura ILX 2.0L_20...| 14565.375| 17590.00| 92941.125| 81842 | null| NA| 1686634807|
|Acura ILX 2.0L_20...| 14877.9| 9995.00| 99739.5| 89252 | null| NA| 1686634807|
|Acura ILX 2.0L_20...| 15659.5| 15660.00| 82136.0| 89942 | null| NA| 1686634807|
|Acura ILX 2.0L_20...|17121.785714285714| 20990.00| 78278.14285714286| 96067 | null| NA| 1686634807|
|Acura ILX 2.4L (A...| 17846.0| 21995.00| 101558.0| 85974 | null| NA| 1686634807|
|Acura ILX 2.4L Pr...| 16327.0| 16995.00| 85238.0| 95356 | null| NA| 1686634807|
|Acura ILX 2.4L w/...| 12846.0| 12846.00| 75209.0| 75209 | null| NA| 1686634807|
|Acura ILX 2.4L_20...| 18998.0| 18998.00| 51002.0| 51002 | null| NA| 1686634807|
|Acura ILX 2.4L_20...|17908.615384615383| 19316.00| 74325.38461538461| 89116 | null| NA| 1686634807|
|Acura ILX 4DR SDN...| 18995.0| 18995.00| 37017.0| 37017 | null| NA| 1686634807|
|Acura ILX 8-SPD_2...| 24995.0| 24995.00| 22334.0| 22334 | null| NA| 1686634807|
+--------------------+------------------+---------+------------------+-----------+--------+--------+-----------+
only showing top 20 rows
トレーニングジョブが完了したら、以下の出力が表示されるはずです:
06-13 05:40 smspark-submit INFO spark submit was successful. primary node exiting.
Training seconds: 153
Billable seconds: 153
SageMakerパイプラインを使用して特徴量プロセッサを運用化する
このセクションでは、特徴量プロセッサをSageMakerパイプラインに昇格させ、実行をスケジュールする方法を示します。
- まず、特徴量処理ロジックを含むtransformation_code.pyファイルをAmazon S3にアップロードします:
car_data_s3_uri = s3_path_join("s3://", sagemaker_session.default_bucket(),
'transformation_code', 'car-data-ingestion.py')
S3Uploader.upload(local_path='car-data-ingestion.py', desired_s3_uri=car_data_s3_uri)
print(car_data_s3_uri)
- 次に、.to_pipeline()関数を使用して特徴量プロセッサパイプラインcar_data_pipelineを作成します:
car_data_pipeline_name = f"{CAR_SALES_FG_NAME}-ingestion-pipeline"
car_data_pipeline_arn = fp.to_pipeline(pipeline_name=car_data_pipeline_name,
step=transform,
transformation_code=TransformationCode(s3_uri=car_data_s3_uri) )
print(f"Created SageMaker Pipeline: {car_data_pipeline_arn}.")
- パイプラインを実行するには、次のコードを使用します:
car_data_pipeline_execution_arn = fp.execute(pipeline_name=car_data_pipeline_name)
print(f"Started an execution with execution arn: {car_data_pipeline_execution_arn}")
- 同様に、集計された特徴のためのパイプライン
car_data_aggregated_pipeline
を作成し、実行を開始できます。
car_data_aggregated_pipeline
を24時間ごとに実行するようにスケジュールします:
fp.schedule(pipeline_name=car_data_aggregated_pipeline_name,
schedule_expression="rate(24 hours)", state="ENABLED")
print(f"Created a schedule.")
出力セクションには、パイプラインおよびパイプライン実行ロールのARN、およびスケジュールの詳細が表示されます:
{'pipeline_arn': 'arn:aws:sagemaker:us-west-2:416578662734:pipeline/car-data-aggregated-ingestion-pipeline',
'pipeline_execution_role_arn': 'arn:aws:iam::416578662734:role/service-role/AmazonSageMaker-ExecutionRole-20230612T120731',
'schedule_arn': 'arn:aws:scheduler:us-west-2:416578662734:schedule/default/car-data-aggregated-ingestion-pipeline',
'schedule_expression': 'rate(24 hours)',
'schedule_state': 'ENABLED',
'schedule_start_date': '2023-06-13T06:05:17Z',
'schedule_role': 'arn:aws:iam::416578662734:role/service-role/AmazonSageMaker-ExecutionRole-20230612T120731'}
- Feature Processorのすべてのパイプラインを取得するには、
list_pipelines()
関数を使用します:
fp.list_pipelines()
出力は次のようになります:
[{'pipeline_name': 'car-data-aggregated-ingestion-pipeline'},
{'pipeline_name': 'car-data-ingestion-pipeline'}]
SageMaker Feature Processorパイプラインが正常に作成されました。
特徴量処理パイプラインとMLの経緯を探索する
SageMaker Studioで、次の手順を完了します:
- SageMaker Studioコンソールで、ホームメニューを選択し、Pipelinesを選択します。
2つのパイプラインが作成されるはずです:car-data-ingestion-pipeline
とcar-data-aggregated-ingestion-pipeline
。
car-data-ingestion-pipeline
を選択してください。
実行タブに実行の詳細が表示されます。
- パイプラインによって作成されたフィーチャーグループを表示するには、データの下のフィーチャーストアを選択し、
car-data
を選択してください。
前の手順で作成した2つのフィーチャーグループが表示されます。
car-data
フィーチャーグループを選択してください。
フィーチャータブにフィーチャーの詳細が表示されます。
パイプラインの実行を表示する
パイプラインの実行を表示するには、以下の手順を完了してください:
- パイプライン実行タブで
car-data-ingestion-pipeline
を選択してください。
これにより、すべての実行が表示されます。
- 実行の詳細を表示するためのリンクのいずれかを選択してください。
- ラインナップを表示するには、ラインナップを選択してください。
car-data
の完全なラインナップには、入力データソースcar_data.csv
と上流エンティティが表示されます。car-data-aggregated
のラインナップには、入力car-data
フィーチャーグループが表示されます。
car-data
とcar-data-ingestion-pipeline
のフィーチャーの読み込みを選択し、上流ラインナップのクエリを選択して、すべての上流エンティティを表示してください。
car-data
のフルラインナップは、次のスクリーンショットのようになります。
同様に、car-aggregated-data
のフィーチャーグループのラインナップは、次のスクリーンショットのようになります。
SageMaker Studioは、スケジュールされたパイプラインを追跡し、実行を表示し、ラインナップを探索し、フィーチャープロセッシングコードを表示するための単一の環境を提供します。
car-data-aggregated
フィーチャーグループ内の平均価格、最高価格、平均走行距離などの集計されたフィーチャーは、データの特性に関する洞察を提供します。これらのフィーチャーは、車の価格を予測するためのモデルのトレーニングにも使用したり、他の操作に使用したりすることもできます。ただし、この投稿ではモデルのトレーニングは対象外であり、SageMaker Feature Storeのフィーチャーエンジニアリング機能のデモンストレーションに焦点を当てています。
クリーンアップ
この投稿の一環として作成されたリソースをクリーンアップして、継続的な料金が発生しないようにすることを忘れないでください。
- 次のコードを使用して、スケジュールされたパイプラインを無効にします。
# スケジュールされたパイプラインを無効にする
fp.schedule(
pipeline_name=car_data_aggregated_pipeline_name,
schedule_expression="rate(24 hours)",
state="DISABLED",
)
- 両方のフィーチャーグループを削除します。
# フィーチャーグループを削除する
car_sales_fg.delete()
agg_car_sales_fg.delete()
S3バケットとオフラインフィーチャーストア内にあるデータには費用がかかる場合があるため、料金が発生しないようにそれらを削除する必要があります。
- S3オブジェクトを削除します。
- フィーチャーストアからレコードを削除します。
結論
この投稿では、カーセールス会社がSageMaker Feature Store Feature Processorを使用して、次のような貴重な洞察を得る方法を示しました。
- Sparkを使用してバッチデータを大規模に取り込んで変換する
- SageMakerパイプラインを介してフィーチャーエンジニアリングワークフローを操作化する
- ラインナップの追跡とフィーチャーの探索を行うための単一の環境を提供する
- MLモデルのトレーニングに最適化された集計されたフィーチャーの準備
これらの手順に従うことで、企業は以前使用できなかったデータを構造化されたフィーチャーに変換し、それらを使用して車の価格を予測するためのモデルのトレーニングに使用することができました。SageMaker Feature Storeは、基礎となるインフラストラクチャではなく、フィーチャーエンジニアリングに注力することができるようにしました。
この投稿がSageMaker Feature Store Feature Processorを使用して独自のデータから貴重なMLの洞察を引き出すのに役立つことを願っています!
詳細については、「Feature Processing」と「Amazon SageMaker Feature Store: Feature Processor Introduction」のSageMakerの例を参照してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles