このブログ記事は、Feathr チームのシニア スタッフ ソフトウェア エンジニア David Stein 氏、スタッフ ソフトウェア エンジニア Jinghui Mo 氏、スタッフ ソフトウェア エンジニア Hangfei Lin の共同執筆です。
特徴量ストアの動機
AI や機械学習の進化に伴い、企業はレコメンデーション システムや不正検知など、さまざまな用途で複雑な機械学習パイプラインを利用するようになります。これらの複雑なシステムでは通常、時間的制約のあるビジネス アプリケーションをサポートするために数百から数千の特徴量が必要とされ、特徴量パイプラインは、さまざまなビジネス グループをまたいだ異なるチーム メンバーによって管理されています。
このような機械学習システムでは、機械学習エンジニアやデータ サイエンティストが多くのエネルギーを費やす多くの問題が見られます。特に、重複する特徴エンジニアリング、オンラインやオフラインのスキュー、低待機時間での特徴量の提供などが挙げられます。
図 1:特徴量ストアが解決する問題の図
重複する特徴エンジニアリング
- 組織内では、何千もの特徴量が異なるスクリプトや異なる形式に埋もれており、それらはキャプチャ、整理、保存されていないため、それを生成したチーム以外では再利用したり活用したりすることができません。
- 機械学習モデルにとって特徴エンジニアリングは非常に重要であり、特徴量は共有することができないため、データ サイエンティストはチーム間で特徴エンジニアリングを重複して行う必要があります。
オンラインおよびオフラインのスキュー
- 特徴量の場合、オフライン トレーニングとオンライン推論では通常、異なるデータ処理パイプラインが必要となり、異なる環境間で一貫した特徴量を確保するためにはコストがかかります。
- チームは、適切なデータを提供することが困難なため、推論にリアルタイム データを使用することを躊躇します。
- データのポイントインタイムの正確性を保証する便利な方法を提供することは、ラベルの漏洩を避けるための鍵です。
低待機時間で特徴量を提供する
- リアルタイム アプリケーションでは、リアルタイム推論を行うためにデータベースから特徴量を検索する際、応答の待機時間を犠牲にすることなく、かつ高いスループットを得ることは簡単ではありません。
- 多くの機械学習シナリオでは、非常に低い待機時間で簡単に特徴量にアクセスすることが重要であり、特徴量への異なる REST API コールを組み合わせるために最適化を行う必要があります。
これらの問題を解決するために、特徴量ストアと呼ばれる概念を開発しました。
- 特徴量は組織内で集中管理され、再利用できます
- オフラインおよびオンライン環境の間で同期的な方法で特徴量を提供できます
- 特徴量は、低待機時間かつリアルタイムで提供できます
実戦的な特徴量ストア「Feathr」の概要
ゼロから特徴量ストアを開発するには時間がかかり、安定性、拡張性、ユーザー フレンドリを実現するにはさらに多くの時間が必要です。Feathr は、LinkedIn で 6 年以上にわたって運用でかつ実戦的に使用されている特徴量ストアで、運用で数千の特徴量を持つあらゆる LinkedIn 機械学習特徴量プラットフォームにサービスを提供してきました。
Microsoft では、LinkedIn チームと Azure チームが非常に密接に連携して、Feathr のオープンソース化、拡張性の確保、Azure とのネイティブな統合の構築を行ってきました。こちらの GitHub リポジトリで提供されています。また、LinkedIn エンジニアリング ブログで Feathr の詳細を読むことができます。
以下に Feathr のハイライトをいくつか紹介します。
- 組み込みの最適化によるスケーラビリティ。たとえば、Feathr は、ブルーム フィルターや Salted Join などの組み込み最適化機能により、数十億行や PB 規模のデータを処理することができます。
- ポイントインタイムの結合と集計への豊富なサポート: Feathr には、特徴量ストア向けに設計されたハイパフォーマンスの組み込み演算子があり、時間ベースの集約、スライディング ウィンドウ結合、ルックアップ機能などがあり、すべてポイントインタイムの正確性が備わっています。
- 高度にカスタマイズ可能なユーザー定義関数 (UDF): PySpark と Spark SQL のネイティブ サポートにより、データ サイエンティストの学習曲線を低くすることができます。
- Pythonic API により、あらゆるものに低い学習曲線でアクセスできます。モデル構築と統合されているため、データ サイエンティストは初日から生産性を高めることができます。
- 高度な機械学習/深層学習シナリオのための埋め込みサポートを含む豊富な型システム。一般的なユース ケースの 1 つは、顧客プロファイルの埋め込みを構築し、それらの埋め込みを組織全体のすべての機械学習アプリケーションで再利用できるようにすることです。
- 簡素化されたスケーラブルなアーキテクチャによるネイティブなクラウド統合 (次のセクションで説明します)。
- 特徴量の共有と再利用が容易: Feathr には特徴量レジストリが組み込まれており、異なるチーム間で簡単に特徴量を共有することができるため、チームの生産性を向上させることができます。
Azure 上の Feathr アーキテクチャ
下の図は、Azure 上の Feathr をユーザーがどのように操作するかについての概要を示したものです。
図 2:Azure 上の Feathr アーキテクチャ。
- データおよび機械学習のエンジニアは、好みのツール (pandas、Azure Machine Learning、Azure Databricks など) を使って特徴量を作成します。これらの特徴量は、以下のいずれかのオフライン ストアに取り込まれます。
- Azure SQL Database (サーバーレスを含む)、Azure Synapse Dedicated SQL Pool (旧 SQL DW)。
- Azure BLOB ストレージ、Azure Data Lake Store などのオブジェクト ストレージ。形式は、Parquet、Avro、Delta Lake のいずれでも可能です。
- データおよび機械学習エンジニアは、Azure Purview で構築された中央レジストリに特徴量の定義を永続化することができます。
- データおよび機械学習エンジニアは、Feathr Python SDK や Azure Synapse や Databricks のような Spark エンジンを使って、ポイントインタイムの正しい方法ですべての特徴量データセットに結合することができます。
- データおよび機械学習エンジニアは、Azure Cache for Redis with Active-Active のようなオンライン ストアに特徴量を実体化し、クラスター間の最終的な一貫性を保証するマルチプライマリ、マルチ書き込みアーキテクチャを実現することができます。
- データ サイエンティストや機械学習エンジニアは、scikit-learn、PyTorch、TensorFlow などのお気に入りの機械学習ライブラリでオフラインの特徴量を利用し、Azure Machine Learning などのお気に入りの機械学習プラットフォームでモデルをトレーニングし、Azure Machine Learning エンドポイントなどのサービスを使ってお気に入りの環境にモデルをデプロイすることができます。
- バックエンド システムはデプロイされたモデルに対してリクエストを行います。これは、Azure Cache for Redis に対してリクエストを行い、Feathr Python SDK でオンラインの特徴量を取得します。
上記のフローをすべて含んだサンプル ノートブックが Feathr リポジトリにありますので、参考にしてください。
Feathr は、Azure をはじめとするクラウド サービスとネイティブに統合されています。次の表は、これらの統合を示しています。
Feathr コンポーネント |
クラウド統合 |
オフライン ストア – オブジェクト ストア |
Azure Blob Storage
|
オフライン ストア - SQL |
Azure SQL DB |
オンライン ストア |
Azure Cache for Redis |
特徴量レジストリ |
Azure Purview |
コンピューティング エンジン |
Azure Synapse Spark プール |
機械学習プラットフォーム |
Azure Machine Learning |
ファイル形式 |
Parquet |
表 1:Azure 上の Feathr と Azure サービスとのネイティブ統合。
インストールと概要
Feathr には、特徴量の定義やクラウド操作を含む Feathr の全コンポーネントにアクセスするための Python に似たシンプルなインターフェイスがあり、こちらでオープンソース化されています。Feathr の python クライアントは pip で簡単にインストールすることができます。
pip install -U feathr
作業開始の詳細については、Feathr クイック スタート ガイドをご覧ください。また、Feathr チームには、Feathr コミュニティで連絡を取ることができます。
今後の予定
本ブログでは、Azure とのネイティブな統合を可能にするスケーラブルでエンタープライズな Feathr と呼ばれる特徴量ストアを紹介しました。Microsoft は今後も Feathr と Feathr on Azure の機能統合を進めていきます。Feathr の GitHub リポジトリに問題を提起して、ぜひフィードバックをお送りください。
- Feathr の GitHub リポジトリを確認する。
- Feathr コミュニティに連絡する。
- LinkedIn の同僚による Feathr のオープンソース ブログ記事を読む。