特徴量ストアとは

このページでは、特徴量ストアとは何か、およびそれが提供する利点と、Databricks Feature Store の具体的な利点について説明します。

特徴量ストアは、データ サイエンティストが特徴量を検索して共有できるようにする一元化されたリポジトリであり、特徴量の値の計算に使用されるのと同じコードがモデルのトレーニングと推論に使用されるようにします。

機械学習では、既存のデータを使用してモデルを構築し、将来の結果を予測します。 ほとんどの場合、生データを使用してモデルを構築するには、前処理と変換が必要です。 このプロセスは特徴エンジニアリングと呼ばれ、このプロセスの出力は特徴量 (モデルの構成要素) と呼ばれます。

特徴量の開発は複雑で時間がかかります。 さらに複雑になるのは、機械学習では、特徴量の計算をモデル トレーニングのために行い、モデルを使用して予測を行うときにもう一度行う必要があるということです。 この実装は、同じチームや同じコード環境を使用して行われない場合があり、これが遅延やエラーを招く可能性があります。 また、往々にして組織内の異なる複数のチームで同じ特徴量が必要とされているのに、他のチームが行った作業を認識していない可能性があります。 特徴量ストアは、このような問題に対処することを目的としています。

Databricks Feature Store を使用する理由

Databricks Feature Store は、他の Azure Databricks コンポーネントと完全に統合されています。

  • 探索可能性。 Databricks ワークスペースからアクセスできる Feature Store UI では、既存の特徴を参照および検索できます。
  • 系列。 Azure Databricks で特徴量テーブルを作成すると、特徴量テーブルの作成に使用されたデータ ソースが保存され、アクセスできるようになります。 特徴量テーブル内の各特徴量について、その特徴量を使用しているモデル、ノートブック、ジョブ、エンドポイントにアクセスすることもできます。
  • モデルのスコア付けと提供との統合。 Feature Store の特徴を使用してモデルをトレーニングする場合、モデルは特徴メタデータと共にパッケージ化されます。 バッチ スコアリングまたはオンライン推論にモデルを使用すると、Feature Store から自動的に特徴量が取得されます。 呼び出し元は、それらについて把握したり、新しいデータをスコア付けするために特徴量を検索または結合するためのロジックを含めたりする必要はありません。 これにより、モデルのデプロイと更新がはるかに簡単になります。
  • ポイントインタイム ルックアップ。 Feature Store は、特定の時点の正確さを必要とする時系列およびイベント ベースの使用例をサポートします。

Unity Catalog の特徴エンジニアリング

Databricks Runtime 13.3 LTS 以降では、ワークスペースが Unity Catalog に対して有効になっている場合、Unity Catalog が特徴量ストアになります。 Unity Catalog では、モデル トレーニングまたは推論の特徴量テーブルとして、主キーを持つ任意の Delta テーブルまたは Delta Live テーブルを使用できます。 Unity カタログでは、特徴の検出、ガバナンス、系列、ワークスペース間のアクセスが提供されます。

Databricks の特徴量ストアのしくみ

Feature Store を使用した一般的な機械学習ワークフローは、次のパスに従います。

  1. 生データを機能に変換し、目的の機能を含む Spark DataFrame を作成するコードを記述します。
  2. Unity Catalog に対して有効になっているワークスペースの場合は、DataFrame を Unity Catalog の特徴量テーブル として書き込みます。 ワークスペースで Unity Catalog が有効になっていない場合は、 DataFrame を特徴量テーブルとしてワークスペース徴量ストアに書き込みます
  3. 特徴量ストアの特徴量を使用してモデルをトレーニングします。 これを行うと、トレーニングに使用された特徴量の仕様がモデルに格納されます。 モデルが推論に使用されると、適切な特徴量テーブルから特徴量が自動的に結合されます。
  4. モデル レジストリにモデルを登録します。

これで、モデルを使用して新しいデータで予測を行うことができます。

バッチ ユース ケースの場合は、モデルが必要な特徴量を Feature Store から自動的に取得します。

バッチ機械学習ユース ケースでの Feature Store ワークフロー。

リアルタイムに提供するユース ケースの場合は、オンライン ストアに特徴量を公開するか、オンライン テーブルを使います。

推論時に、モデルがオンライン ストアから事前計算された特徴量を読み取って、モデル提供エンドポイントに対するクライアント要求で提供されたデータと結合します。

提供された機械学習モデルにおける Feature Store フロー。

Feature Store の使用を開始する

Feature Store の使用を開始するには、次の記事を参照してください。

Unity Catalog で特徴エンジニアリングを使用する場合、Unity Catalog はワークスペース間での特徴テーブルの共有を処理し、Unity Catalog 特権 を使用して特徴テーブルへのアクセスを制御します。 次のリンクは、ワークスペース特徴ストア専用です:

サポートされるデータ型

Unity Catalog の特徴エンジニアリングとワークスペース Feature Store では以下の PySpark データ型がサポートされています。

  • IntegerType
  • FloatType
  • BooleanType
  • StringType
  • DoubleType
  • LongType
  • TimestampType
  • DateType
  • ShortType
  • ArrayType
  • BinaryType [1]
  • DecimalType [1]
  • MapType [1]

[1] BinaryTypeDecimalTypeMapType は、Unity Catalog のすべてのバージョンの特徴エンジニアリングとワークスペース Feature Store v0.3.5 以上でサポートされています。

上記のデータ型は、機械学習アプリケーションで一般的な機能の種類をサポートしています。 次に例を示します。

  • 高密度ベクトル、テンソル、埋め込みを ArrayType のように格納できます。
  • スパース ベクトル、テンソル、埋め込みを MapType のように格納できます。
  • テキストを StringType のように格納できます。

オンライン ストアに公開された場合、ArrayType および MapType 特徴は JSON 形式で格納されます。

Feature Store UI には、特徴データ型のメタデータが表示されます。

複合データ型の例

詳細

Feature Store の使用に関するベスト プラクティスの詳細については、「The Comprehensive Guide to Feature Stores (Feature Stores に関する包括的なガイド)」をダウンロードしてください。