こんにちは、小寺です。
Amazon SageMaker機能ストアでプロビジョニングキャパシティーモードが提供されるようになりました。
https://aws.amazon.com/about-aws/whats-new/2024/01/amazon-sage-maker-feature-store-provisioned-capacity-mode/
Amazon SageMaker機能ストアとは
Amazon SageMaker機能ストアについて復習してみます。
機械学習 (ML) モデルの特微量を保存、共有、管理するためのフルマネージド型の専用リポジトリです。特徴量は、トレーニングと推論で使用される機械学習モデルの入力です。例えば、音楽プレイリストを推奨するアプリケーションでは、特徴量には、曲の評価、曲を聴いている時間、リスナーの属性が含まれる場合があります。特徴量は複数のチームによって繰り返し使用されるため、精度の高いモデルを実現するためには特徴量の品質が重要です。また、オフラインでバッチ的にモデルをトレーニングするために使用した特微量をリアルタイム推論に利用する場合、2 つの特徴量ストアを同期させることは困難です。SageMaker Feature Store は、機械学習ライフサイクル全体でにわたって特徴量を大規模に処理、標準化、使用するための安全で統一されたストアを提供します。
「Feature」は日本語では「特徴」「特徴量」と呼ばれることが多いかと思います。学習や推論に必要なデータの特性を意味しています。
例えば、売上予測を考えてみます。目的変数となるのは、過去の売上です。そして説明変数となるのは、曜日や気温、店舗周辺のイベント、セールの実施の有無、広告費などが挙げられます。
これらを特徴量としてデータを学習させていけば、翌日やそれ以降の売上予測ができるようになります。つまり、特徴量は、データセットの特徴を定量化して表現したものと定義できます。
特徴量の重要性って?
特徴量がなぜ重要なのかについて簡単にまとめてみました。機械学習では良いデータがないと予測も精度が落ちてしまいます。
特徴量の元となる、今ある必要なデータをよく理解することが求められます。どのようなデータを取得・蓄積できているのか、どのタイミングでデータを取得しているのか、そのデータからどういった傾向が読み取れるのかを十分に確認します。
特徴量の取捨選択は完全に自動化するのはまだ難しい領域で、エンジニアが確認する必要があります。
特徴量の質次第で、そのあとの予測に影響を与えるので、重要性が高いですよね。
Amazon SageMaker機能ストアの特長
特徴量の質改善など、MLの生産性を上げる課題解決の一つとして機能ストアという概念がでてきました。
特長をピックアップしました。
・特徴量の処理と取り込みがバッチでもストリーミングでも可能に
アプリケーションやサービスのログ、クリックストリーム、センサーなどのさまざまなソースからのデータ、および Amazon Simple Storage Service (Amazon S3)、Amazon Redshift、AWS Lake Formation、Snowflake、Databricks Delta Lake からの表形式データを SageMaker機能ストア に取り込めます。
特徴量の処理で、バッチデータソースと特徴量変換関数 (製品ビュー数やタイムウィンドウ集計など) を指定すれば、取り込み時のデータを機械学習の特微量に変換することもできます。

・特徴量のメタデータとデータカタログ
SageMaker 機能ストアのタグとインデックス特徴量グループを使って、Amazon SageMaker Studio のビジュアルインターフェイスから簡単に見つけることができます。
特徴量カタログから再利用できる特徴量を簡単に見つけることができます。SageMaker Feature Store は、デフォルトで AWS Glue Data Catalog を使用しますが、必要に応じて別のカタログを使用することも可能です。

・特徴量の一貫性
SageMaker 機能ストア は、トレーニング用のオフラインストレージとリアルタイム推論用のオンラインストレージをサポートしています。トレーニングを実施するにあたり、モデルは完全なデータセットを使用し、コンプリートするのに何時間もかかる一方で、推論はミリ秒単位で行う必要があり、通常はデータのサブセットを使用することが一般的です。SageMaker機能ストアを併用することで、オフラインとオンラインのデータセットが同期された状態に保たれます。
この特長は、オフラインストレージデータとオンラインストレージデータのデータ内容の乖離があるとその後の結果もずれていってしまうので、重要なポイントです。

・リネージトラッキング
特微量の再利用には、データサイエンティストは特微量の構築方法と、どのモデルやエンドポイントで特微量が使用されているかを知っておく必要があります。
Amazon SageMaker機能ストアでは、データサイエンティストは SageMaker Lineage を使用して Amazon SageMaker Studio 内の特微量をモニタリングできます。モニタリングでは、データソースや処理内容のコードが確認できるので、選択する際の精度アップにもつながります。

・タイムトラベル
SageMaker Feature Store Offline APIが提供されています。ポイントインタイムクエリがサポートされているので過去のデータにアクセスして、過去の時間単位での各特微量の状態を取得することができます。

アップデート内容
Amazon SageMaker機能ストアでプロビジョンキャパシティモードが利用できるようになりました。
本アップデートにより機能グループの作成時に必要な書き込みおよび読み取り容量の指定ができます。さらにコスト最適化を目的として、夜間や週末に制限を下げるなど、いつでも容量制限を変更するとができます。
アプリケーション トラフィック パターンの変化に対応するために、機能グループ レベルでプロビジョニング モードとオンデマンド モードを切り替えるオプションも提供されています。
課金モードの設定は、UI、API、またはSDKから行うことができます。
プロビジョンキャパシティモードを使うときの前提条件
・レコード レベルのメタデータにより、レコードが余分な容量ユニットを消費することがあります。
・GetRecord または BatchGetRecord API を使用して機能のサブセットのみを取得しても、レコード全体に対応するRCUが消費されます。
・書き込み容量については、大量の履歴レコードの書き込みが発生する可能性があるバックフィルまたは一括取り込みの実行時のスロットルを回避するために、最近のピーク容量の2倍をプロビジョニングする必要があります。
これは、履歴レコードを書き込むと追加の書き込み容量が消費されるためです。
・機能ストアはプロビジョニング モードの自動スケーリングをサポートしていません。
設定するには
オンデマンドモード: ConsumedReadRequestsUnits
and ConsumedWriteRequestsUnits
プロビジョンドモード : ConsumedReadCapacityUnits
and ConsumedWriteCapacityUnits
