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

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

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

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

MLflow とは

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

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

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

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

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

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

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

Databricks を使い始めたばかりの場合は、軽量の実験のためのシンプルなマネージド MLflow エクスペリエンスを提供する Databricks コミュニティ エディションで MLflow を使用することを検討してください。 MLflow プロジェクトのリモート実行は、Databricks コミュニティ エディションではサポートされていません。 エクスペリメントと実行の回数に適度な制限を課す予定です。 Databricks コミュニティ エディションでの 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 は、一般的なユースケースに対して事前定義されたステージ ( NoneStagingProduction、およびArchived )を提供します。 適切な権限があれば、ステージ間でモデル バージョンを移行したり、モデル ステージの移行をリクエストしたりできます。 モデル バージョン ステージはUnity Catalogでは使用されません。

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

ノートブックの例

Model Registryを使用してモデルのライフサイクルを管理する方法を示すノートブックの例については、以下を参照してください。

モデルのデプロイ

Mosaic AI Model Serving は、 AI モデルを展開、管理、クエリするための統合インターフェースを提供します。 提供する各モデルは、Web アプリケーションまたはクライアント アプリケーションに統合できる REST API として利用できます。

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

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

  • 基盤モデルAPIsが提供する最先端のオープンモデル。これらのモデルは、最適化された推論をサポートするキュレーションされた基盤モデル アーキテクチャです。 Meta-Llama-3.1-70B-Instructのような基本モデル、 BGE-Large と Mistral-7B は、 トークン単位の従量課金 価格ですぐに使用でき、パフォーマンス保証と微調整されたモデル バリアントが必要なワークロードは、 プロビジョニング スループットでデプロイできます。

  • 外部モデル。 これらは Databricks の外部でホストされるモデルです。 AI例としては、OpenAI の GPT-4、Anthropic の Claude などの生成 モデルが挙げられます。外部モデルを提供するエンドポイントは集中管理でき、顧客はエンドポイントに対してレート制限とアクセス制御を確立できます。

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