MLflow を使用した機械学習ライフサイクル管理

この記事では、機械学習ライフサイクル管理のために Databricks で MLflow がどのように使用されるかについて説明します。 また、各 MLflow コンポーネントを紹介する例と、これらのコンポーネントが Databricks 内でどのようにホストされているかを説明するコンテンツへのリンクも含まれています。

Databricks の機械学習ライフサイクル管理は、マネージド MLflow によって提供されます。 Databricks は、エンタープライズ セキュリティ機能、高可用性、その他の Databricks ワークスペース機能 (エクスペリメント、実行管理、ノートブック リビジョン キャプチャなど) と統合された MLflow のフルマネージドおよびホスト バージョンを提供します。

初めてのユーザーは、基本的な MLflow 追跡 を示す「 MLflow エクスペリメントの概要APIs 」から始める必要があります。

MLflow とは

MLflow は、エンドツーエンドの機械学習ライフサイクルを管理するためのオープンソース プラットフォームです。 これには、次の主要コンポーネントがあります。

  • 追跡: エクスペリメントを追跡して、パラメーターと結果を記録および比較できます。

  • モデル: さまざまな T機械学習ライブラリのモデルを管理およびデプロイして、さまざまなモデル提供および推論プラットフォームにデプロイできます。

  • プロジェクト: 機械学習コードを再利用可能で再現可能な形式でパッケージ化して、他のデータサイエンティストと共有したり、本番環境に転送したりできます。

  • モデルレジストリ: モデルのライフサイクル全体を管理するためのモデル ストアを一元化できます。 ステージの移行: ステージングから運用まで、バージョン管理と注釈付けの機能を備えています。 Databricks は、 Unity Catalogでモデルレジストリのマネージ バージョンを提供します。

  • モデルサービング: MLflow モデルを REST エンドポイントとしてホストできます。 Databricks には、提供された AI モデルをデプロイ、管理、クエリするための統合インターフェイスが用意されています。

MLflow は、 JavaPythonR、および REST APIsをサポートしています。

Databricks を使い始めたばかりの場合は、軽量の実験のためのシンプルなマネージド MLflow エクスペリエンスを提供する Databricks コミュニティ エディションで MLflow を使用することを検討してください。 MLflow プロジェクトのリモート実行は、Databricks コミュニティ エディションではサポートされていません。 エクスペリメントと実行の回数に適度な制限を課す予定です。 Databricks コミュニティ エディションでの MLflow の最初の起動では、制限は課されません。

コントロール プレーンに保存されている MLflow データ (エクスペリメントの実行、メトリクス、タグ、パラメーター) は、プラットフォームで管理されているキーを使用して暗号化されます。 マネージド サービスの顧客管理キーを使用した暗号化は、そのデータではサポートされていません。 一方、ルート (DBFS) ストレージに保存されている MLflow モデルとアーティファクトは、ワークスペース ストレージの顧客管理キーを構成することで、独自のキーを使用して暗号化できます。

MLflow の追跡

Databricks 上の MLflow は、機械学習モデルとディープラーニング モデルのトレーニング実行を追跡してセキュリティで保護するための統合されたエクスペリエンスを提供します。

モデルのライフサイクル管理

MLflow Model Registry集中化されたモデル リポジトリであり、MLflow モデルのライフサイクル全体を管理できるようにする UI およびAPIsセットです。 Databricks は、MLflow Model Registry でUnity Catalog のホストされたバージョンを提供します。Unity Catalog は、一元化されたモデル ガバナンス、クロスワークスペース アクセス、リネージ、およびデプロイメントを提供します。 Unity Catalogでのモデルのライフサイクル管理の詳細については、 Unity Catalogでのモデルのライフサイクルの管理」を参照してください。

ワークスペースでUnity Catalogが有効になっていない場合は、 Workspace Model Registryを使用できます。

Model Registry概念

  • Model : モデル フレーバーのmlflow.<model-flavor>.log_modelメソッドの 1 つを使用して記録されたエクスペリメントまたは実行から記録された MLflow モデル。 モデルが記録された後、 Model Registryを使用して登録することができます。

  • 登録済みモデル: Model Registryに登録されている MLflow モデル。 登録されたモデルには、一意の名前、バージョン、モデル リネージ、その他のメタデータがあります。

  • モデル バージョン: 登録済みのモデルのバージョン。 新しいモデルがModel Registryに追加されると、バージョン 1 として追加されます。 同じモデル名に登録された各モデルでは、バージョン番号がインクリメントされます。

  • モデル エイリアス: エイリアスは、登録済みモデルの特定のバージョンへの変更可能な名前付き参照です。 エイリアスの一般的な使用法は、モデル トレーニング ワークフローの特定の環境にデプロイされるモデル バージョンを指定すること、または特定のエイリアスを対象とする推論ワークロードを作成することです。 たとえば、「Fraud Detection」登録モデルの「Champion」エイリアスを、本番運用トラフィックの大部分を処理するモデル バージョンに割り当て、そのエイリアスを対象とする推論ワークロードを作成できます (つまり、 「チャンピオン」バージョン)。

  • モデルステージ(ワークスペースモデルレジストリのみ): モデルバージョンに 1 つ以上のステージを割り当てることができます。 MLflow は、一般的なユースケースに対して事前定義されたステージ ( NoneStaging本番運用、およびArchived )を提供します。 適切な権限があれば、ステージ間でモデル バージョンを移行したり、モデル ステージの移行をリクエストしたりできます。 モデル バージョン ステージはUnity Catalogでは使用されません。

  • 説明: アルゴリズムの説明、使用されるデータセット、方法論など、チームに役立つ説明や関連情報を含む、モデルの意図に注釈を付けることができます。

ノートブックの例

Model Registry使用して、風力発電所の毎日の発電量を予測する機械学習アプリケーションを構築する方法を示す例については、次を参照してください。

モデルのデプロイ

Databricks モデルサービング は、AI モデルをデプロイ、管理、クエリするための統一されたインターフェイスを提供します。 提供する各モデルは、Web アプリケーションまたはクライアント アプリケーションに統合できる REST API として使用できます。

モデルサービングは、次のサービスをサポートしています。

  • カスタムモデル。 これらは、MLflow 形式でパッケージ化された Python モデルです。 これらは、Unity Catalog またはワークスペース モデル レジストリに登録できます。 例としては、 Scikit-Learn、XGBoost、PyTorch、Hugging Face トランスフォーマー モデルなどがあります。

  • 基盤モデルAPIsが提供した最新鋭のオープンモデル。これらのモデルは、最適化された推論をサポートするキュレーションされた基盤モデル アーキテクチャです。 Llama-2-70B-chat、BGE-Large、Mistral-7B などの基本モデルは、 トークンごとの支払い 価格ですぐに使用でき、パフォーマンスの保証と微調整されたモデル バリアントを必要とするワークロードは、 プロビジョニングされたスループットでデプロイできます。

  • 外部モデル。 これらは、Databricks の外部でホストされているモデルです。 例としては、OpenAI の GPT-4、Anthropic の Claude などの基盤モデルが含まれます。 外部モデルを提供するエンドポイントは一元管理でき、顧客はそれらのレート制限とアクセス制御を確立できます。

また、オフライン推論用に MLflow モデルをデプロイすることもできます (「 バッチ推論用のモデルのデプロイ」を参照)。