Amazon Web Services ブログ

新機能 — Amazon SageMaker Feature Store で機械学習の機能を格納、発見、共有する

今回、 Amazon SageMaker Feature Store を発表できることを、非常に喜ばしく思います。この Amazon SageMaker の新機能により、トレーニングや予測ワークフローで使用するために精選されたデータの安全な保存、検出、共有などを、データサイエンティストや機械学習エンジニアが容易に実施できるようになります。

作業経験が豊富な方であれば、機械学習 (ML) モデルをトレーニングし適切なアルゴリズムを選択するためには、高品質のデータを供給することがいかに重要かをご存知だと思います。ML のワークフローとして、最初にデータをクリーニングするのは良い考えです。さらに通常は、欠損値の補完、外れ値の削除、その他の処理が行われることになります。さらに多くの場合では、「特徴エンジニアリング」 と呼ばれる (一般的なものと難解なもの両方の手法がミックスされた) 手法により、データの変換が行われます。

特徴エンジニアリングの目的とは、簡単に言えば、表現性が高まるようにデータを変換して、アルゴリズムの学習を助けるということです。例えば、多くの列型データセットには、住所などの文字列が含まれています。ほとんどの ML アルゴリズムにとって、文字列は無意味なので、これらを数値表現でエンコードしなおす必要が生じます。この住所の文字列の場合であれば、GPS 座標に置き換えることができます。この形式なら、位置の概念を学ぶアリゴリズムにとって、より表現性が高いものになります。言い方を変えると、データが新しい石油だとすれば、モデルが成層圏の精度を得るのに必要とする高オクタン価のジェット燃料に、その石油を変える精製プロセスが、特徴エンジニアリングだと言えます。

実際、ML の実務担当者達は、特徴エンジニアリング用にコードを作成し、そのコードを初期データセットに適用し、処理されたデータセットでモデルをトレーニングた上でその精度の評価を行うことに、多くの時間を費やしています。この作業は実験的な性質を持つため、たとえ最小規模のプロジェクトであっても、複数回の反復が必要になることがあります。同じ特徴エンジニアリングコードが何度も実行されることも多く、同じ操作の繰り返により時間と計算リソースが浪費されます。こういった事情は、大規模な組織では、さらなる生産性の低下を引き起こすこともあり得ます。多くの場合で異なるチームが同じジョブを実行していたり、以前の作業に関する情報がないために特徴エンジニアリング用のコードを重複して記述したりするのが、その理由です。

また、MLチームには、解決しなければならない別の難しい問題もあります。モデルは処理が施されたデータセットでトレーニングされるているため、予測のために送信されるデータにも、同じ変換を適用することが不可欠となるのです。これは多くの場合、異なる言語で書きなおした特徴エンジニアリングコードを予測ワークフローに統合して、予測の処理時に実行する、ということを意味します。また、こういったプロセスの全体により、時間が消費されるだけでなく、一貫性を損なう可能性もあります。なぜなら、データ変換の最も小さな差異でさえ、予測には大きな影響を与え得るからです。

これらの問題を解決するために、しばしば ML チームは、フィーチャストアを構築します。フィーチャストアとは、トレーニングや予測ジョブで使用される処理済みデータを保持および取得できる、中央リポジトリのことです。フィーチャストアは便利ですが、独自のストアを構築および管理することは、技術、インフラストラクチャ、そして運用の面で多大な労力を要し、実際の ML 作業のための貴重な時間を奪ってしまいます。こういった状況に対する、よりよいソリューションをお客様から求められ、当社では、新サービスを作ることになりました。

Amazon SageMaker Feature Store のご紹介
Amazon SageMaker Feature Store は、ML 機能のための完全マネージド型で一元化されたリポジトリです。インフラストラクチャを管理することなく、特徴データを安全に保管および取得できます。Feature Store は、Amazon SageMaker に組み込まれています。SageMaker は、あらゆるアルゴリズムをサポートしている、ML 用の完全マネージド型サービスです。さらに Feature Store は、ウェブベースの ML 用開発環境である Amazon SageMaker Studio とも統合されています。

SageMaker Feature Store に格納された特徴データは、グループごとに整理され、メタデータを使用しタグ付けされています。これにより、利用可能な特徴データをすばやく見つけ出し、ご自身のモデルに適しているかどうかを判断することができます。また、特徴データの共有および再利用が複数のチームで簡単に行えるため、開発コストを削減しながらイノベーションを加速できます。

一度保存された特徴データは、モデルのトレーニング、バッチ変換、および低レイテンシのリアルタイム予測といった SageMaker のワークフローに取り込んで、使用することができます。オフラインとオンライン両方のストアに格納された共通の特徴データを使用することで、作業の重複を避けるだけでなく、一貫性のあるワークフローを構築できます。

The Climate Corporation (Climate) は Bayer の子会社で、農家にデジタルイノベーションを提供する業界のトップ企業です。Climate のデータおよび分析担当バイスプレジデントである、Daniel McCaffrey 氏は言います。「Climate では、世界中の農家に正確な情報を提供することで、彼らがデータドリブンの意思決定を行えるようになれば、すべての農地で収益率を最大化できると信じています。これを達成するために、私たちは機械学習ツールなどの技術に投資しています。そのモデルの構築には、農産地における生産量など測定可能なエンティティである、特徴データを使用しています。Amazon SageMaker Feature Store では、一元的なフィーチャストアを使用することで複数のチームが簡単に特徴データにアクセスして再利用できるようになり、ML モデルの開発を加速できます。SageMaker Feature Store のオンラインのストアを使用すると、特徴データへのリアルタイムのアクセスが容易になります。また、別のユースケースでは、オフラインのストアを使用して特徴データの使用をスケジュールすることもでき、ML モデルを迅速に開発できます。」

Care.com は、高品質の介護ケアを見つけて管理するための、世界をリードするプラットフォームです。同社もまた、Amazon SageMaker Feature Store を使用しています。Care.com のデータサイエンスマネージャーである Clemens Tummeltshammer 氏は、次のように話します。「 需要が供給を満たせるだけの強力な介護産業は、個人の家庭レベルから国の GDP までにおよぶ経済的な成長には、不可欠な要素と言えます。当社では、Amazon SageMaker Feature Store と Amazon SageMaker Pipelines により、データサイエンスと開発チーム全体でより優れたスケーラビリティが獲得できると確信しています。これらのサービスでは、精選され一貫性を持つデータセットを使用することで、データの準備からデプロイまでカバーするスケーラブルなエンドツーエンドの機械学習モデルパイプラインを構築できます。新たに発表された、この Amazon SageMaker の機能により、さまざまなアプリケーション用の ML モデルの開発とデプロイを迅速化できるでしょう。お客様には、以前よりすばやくリアルタイムの推奨事項を提供できるので、情報に基づいた意思決定を行っていただけるようになります。

それでは、使用の開始方法をご紹介していきましょう。

特徴データの Amazon SageMaker Feature Store を使用した保存と取得
特徴エンジニアリングのコードで処理されたデータは、その特徴ごとにグループ化され、SageMaker Feature Store 内で編成および格納できるようになります。特徴グループは、テーブルの行に似た、レコードのコレクションです。各レコードには一意の識別子があり、元のデータソース内の 1 つのデータインスタンスのための、処理済みの特徴データ値が保持されています。オプションとして、各特徴グループ内で一意の AWS Key Management Service (KMS) キーを独自に使用して、保存中のデータを暗号化することもできます。

特徴グループの定義方法は、ユーザー次第です。例えば、データソース (CSV ファイル、データベーステーブルなど) ごとに 1 つづつ作成し、固有の列をレコード識別子 (主キー、顧客 ID、トランザクション ID など) として使用できます。

グループの構成が決定したら、各グループについて次の手順を繰り返し実行します。

  1. レコード内の各特徴データに名前とタイプ (分数整数、または文字列) を指定して、特徴の定義を作成します。
  2. create_feature_group() API を使用して、各特徴グループを作成します。
    sm_feature_store.create_feature_group(
         # The name of the feature group
         FeatureGroupName=my_feature_group_name,
         # The name of the column acting as the record identifier
         RecordIdentifierName=record_identifier_name,
         # The name of the column action as the feature timestamp
         EventTimeFeatureName = event_time_feature_name,
         # A list of feature names and types
         FeatureDefinitions=my_feature_definitions,
         # The S3 location for the offline feature store
         OnlineStoreConfig=online_store_config,
         # Optionally, enable the online feature store
         OfflineStoreConfig=offline_store_config,
         # An IAM role
         RoleArn=role
    )
  3. 各特徴グループで put_record() API を使用して、特徴名と特徴データ値のペアが集められたレコードを格納します。
    sm_feature_store.put_record(
       FeatureGroupName=feature_group_name,
       Record=record,
       EventTime=event_time
    )

    複数のスレッドを作成し、この操作を並列化することで、取り込みを高速化できます。

ここまでが完了した時点で、特徴データは Amazon SageMaker Feature Store で利用可能になります。オフラインストアが用意されているため、トレーニング用のデータセットの構築に、Amazon AthenaAWS Glue、または Amazon EMR などのサービスを使用できます。対応する JSON オブジェクトを S3 から取り込んだり、必要な特徴データを選択し、ML アルゴリズムが求める形式で S3 に保存したりすることが可能です。その後は、通常と変わらず SageMaker を使用していくだけです。

また、get_record() API を使用して、オンラインストアに格納されている個別のレコードにアクセスできます。この場合は次のように、アクセスするレコードのグループ名と一意の識別子を渡します。

record = sm_feature_store.get_record(
    FeatureGroupName=my_feature_group_name,
    RecordIdentifierValue={"IntegralValue": 5962}
)

Amazon SageMaker Feature Storeは、リアルタイム推論のための迅速かつ効率的なアクセスを実現するように設計されています。15 キロバイトのペイロードの場合、P95 レイテンシーは 10 ミリ秒未満です。この高速性により、推論の実行中に処理済みの特徴データをクエリしたり、上流アプリケーションから送信された未処理の特徴データを、モデルのトレーニングに使用されたまったく同じ特徴データで置き換えたりすることが可能となっています。設計段階から、特徴データの不整合が排除されるように考慮されているので、ユーザーは、バグの究明ではなく最適なモデルを構築することに集中できます。

さらに、SageMaker Feature Store では、特徴データ作成の際にタイムスタンプが付与されるため、特定の時点における特徴データの状態も取得できます。

Amazon SageMaker Feature Storeは、SageMaker Studioと統合されているので、作成した 2つの特徴グループが次のように表示されます。

SageMaker のスクリーンショット

[Open feature group detail (特徴グループの詳細を開く)] を右クリックし、identity feature group (ID 特徴グループ) を開きます。

SageMaker のスクリーンショット

ここでは、特徴データの定義が確認できます。

SageMaker のスクリーンショット

最後に、オフラインストアへのクエリを生成してみます。このストアを Amazon SageMaker Data Wrangler ワークフローに追加しておくと、トレーニングの前に特徴データをロードすることができます。

SageMaker のスクリーンショット

Amazon SageMaker Feature Store の使用開始方法
ここまででお分かりのとおり、SageMaker Feature Store を使用すると、トレーニングワークフローと予測ワークフローに必要な特徴データを、簡単に保存、取得、共有することができます。

SageMaker Feature Store は、SageMaker が提供されているすべてのリージョンでご利用いただけます。使用料金は、特徴データの読み出しと書き込みの回数、および格納されるデータの総量に基づき決定されます。

すぐに始めるのに役立つ、サンプルノートブックもご用意しています。ぜひお試しいただいて、ご意見をお聞かせください。当社では、常にお客様からのフィードバックをお待ちしております。フィードバックは、通常の AWS サポート連絡先、または、SageMaker の AWS フォーラムを通じてお送りください。

– Julien