特徴量ストアとは
このページでは、特徴量ストアとは何か、およびそれが提供する利点と、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 を使用した一般的な機械学習ワークフローは、次のパスに従います。
- 生データを機能に変換し、目的の機能を含む Spark DataFrame を作成するコードを記述します。
- Unity Catalog に対して有効になっているワークスペースの場合は、DataFrame を Unity Catalog の特徴量テーブル として書き込みます。 ワークスペースで Unity Catalog が有効になっていない場合は、 DataFrame を特徴量テーブルとしてワークスペース徴量ストアに書き込みます。
- 特徴量ストアの特徴量を使用してモデルをトレーニングします。 これを行うと、トレーニングに使用された特徴量の仕様がモデルに格納されます。 モデルが推論に使用されると、適切な特徴量テーブルから特徴量が自動的に結合されます。
- モデル レジストリにモデルを登録します。
これで、モデルを使用して新しいデータで予測を行うことができます。
バッチ ユース ケースの場合は、モデルが必要な特徴量を Feature Store から自動的に取得します。
リアルタイムに提供するユース ケースの場合は、オンライン ストアに特徴量を公開するか、オンライン テーブルを使います。
推論時に、モデルがオンライン ストアから事前計算された特徴量を読み取って、モデル提供エンドポイントに対するクライアント要求で提供されたデータと結合します。
Feature Store の使用を開始する
Feature Store の使用を開始するには、次の記事を参照してください。
- 特徴量ストアの機能を示すノートブックの例のいずれかを試してみてください。
- Feature Store Python API の参照資料を参照してください。
- Feature Store を使用したモデルのトレーニングについて学習します。
- Unity Catalog の特徴エンジニアリングについて説明します。
- ワークスペース特徴量ストア について説明します。
- 時系列特徴テーブルとポイントインタイム ルックアップを使用して、モデルのトレーニングまたはスコア付けのための特定の時点で最新の特徴値を取得します。
- リアルタイムのサービス提供と特徴量の自動検索については、オンライン ストアへの特徴量の公開とオンライン テーブルに関する記事を参照してください。
- Feature Serving について理解します。これを使うと、Databricks の外部にデプロイされているモデルやアプリケーションで、Databricks プラットフォーム内の特徴量を低遅延で利用できます。
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] BinaryType
、DecimalType
、MapType
は、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 に関する包括的なガイド)」をダウンロードしてください。