MLflow を使用した ML ライフサイクル管理

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

Databricks での ML ライフサイクル管理は、マネージド MLflow によって提供されます。 Azure Databricks で提供される MLflow は、フル マネージドかつホスト型のバージョンであり、エンタープライズ セキュリティ機能や高可用性に加えて、実験と実行の管理やノートブック リビジョン キャプチャなど、その他の Azure Databricks ワークスペース機能が統合されています。

初めてのユーザーは、基本的な MLflow 追跡 API のことがわかる「MLflow 実験の概要」から始めてください。

MLflow とは?

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

  • 追跡:実験を追跡し、パラメーターと結果を記録および比較します。
  • モデル:各種 ML ライブラリのモデルから、モデル提供および推論のプラットフォームまでさまざまなものを管理し、展開できます。
  • プロジェクト:再利用と再現が可能な形式で ML コードをパッケージ化して、他のデータ サイエンティストと共有したり、運用環境に転送したりします。
  • モデル レジストリ:バージョン管理と注釈の機能を使用して、ステージングから運用まで、モデルのライフサイクル ステージの遷移全体を管理するためにモデル ストアを一元化することができます。 Databricks には、Unity Catalog のモデル レジストリのマネージド バージョンが用意されています。
  • モデルの提供: MLflow モデルを REST エンドポイントとしてホストできます。 Databricks には、提供される AI モデルをデプロイ、管理、クエリするための統合インターフェイスが用意されています。

MLflow は JavaPythonRREST の各 API をサポートします。

MLflow データは、プラットフォーム マネージド キーを使用して Azure Databricks により暗号化されます。 「マネージド サービス用カスタマー マネージド キー」を使用した暗号化はサポートされていません。

MLflow 追跡

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

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

MLflow モデル レジストリは、一元化されたモデル リポジトリ、および MLflow モデルのライフサイクル全体を管理できる UI と一連の API です。 Databricks は、Unity Catalog 内でホステッド バージョンの MLflow モデル レジストリを提供しています。 Unity Catalog を使用すると、モデルのガバナンス、クロスワークスペース アクセス、系列、デプロイを一元的に行うことができます。 Unity Catalog でモデルのライフサイクルを管理する方法の詳細については、「Unity Catalog 内でモデルのライフサイクルを管理する」を参照してください。

ワークスペースが Unity Catalog に対して有効になっていない場合は、ワークスペース モデル レジストリを使用できます。

モデル レジストリの概念

  • モデル: モデル フレーバーの mlflow.<model-flavor>.log_model メソッドのいずれかを使用して記録された実験や実行の MLflow モデル。 モデルがログされたら、それをモデル レジストリに登録できます。
  • 登録済みモデル: モデル レジストリに登録されている Mlflow モデル。 登録済みモデルには、一意の名前、バージョン、モデル系列、およびその他のメタデータがあります。
  • モデル バージョン: 登録されているモデルのバージョン。 新しいモデルがモデル レジストリに追加されると、バージョン 1 として追加されます。 同じモデル名に登録されている各モデルは、バージョン番号を増分します。
  • モデル別名: 別名は、登録済みモデルの特定のバージョンへの変更可能な名前付き参照です。 別名の一般的な用途は、モデル トレーニング ワークフロー内の特定の環境にデプロイされるモデル バージョンを指定したり、特定の別名を対象とする推論ワークロードを記述したりすることです。 たとえば、"不正検出" 登録済みモデルの "チャンピオン" の別名を、運用トラフィックの大部分に対応するモデル バージョンに割り当ててから、その別名を対象とする推論ワークロードを記述できます (つまり、"チャンピオン" バージョンを使用して予測を行います)。
  • モデル ステージ (ワークスペース モデル レジストリのみ): モデル バージョンには、1 つまたは複数のステージを割り当てることができます。 MLflow には、一般的なユース ケースに対して定義済みのステージ (なしステージング運用アーカイブ) が用意されています。 適切な権限を使用して、モデルのバージョンをステージ間で切り替えたり、モデル ステージの遷移を要求したりすることができます。 モデル バージョン ステージは Unity Catalog では使用されません。
  • 説明: モデルの意図に注釈を付けることができます。これには、説明のほか、アルゴリズムの説明、使用するデータセット、手法など、チームに役立つ関連情報が含まれます。

ノートブックの例

モデル レジストリを使用して、風力発電所の毎日の電源出力を予測する機械学習アプリケーションを作成する方法を示す例については、次を参照してください。

モデル デプロイ

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

モデル提供は以下の提供をサポートします。

  • カスタム モデル。 これらは、MLflow 形式でパッケージ化された Python モデルです。 これらは、Unity Catalog またはワークスペース モデル レジストリに登録できます。 たとえば、scikit-learn、XGBoost、PyTorch、Hugging Face トランスフォーマー モデルなどがあります。
  • Foundation Model API で利用できる最先端のオープン モデル。 これらのモデルは、最適化された推論をサポートするキュレーションされた基盤モデル アーキテクチャです。 Llama-2-70B-chat、BGE-Large、Mistral-7B などの基本モデルは、トークン単位の支払い価格ですぐに使用でき、パフォーマンスの保証と微調整されたモデル バリアントを必要とするワークロードは、プロビジョニングされたスループットでデプロイできます。
  • 外部モデル。 これらは、Databricks の外部でホストされているモデルです。 たとえば、OpenAI の GPT-4 や Anthropic の Claude などの基盤モデルがあります。 外部モデルを提供するエンドポイントは一元的に管理でき、顧客はレート制限とアクセスの制御を確立できます。

オフライン推論のための MLflow モデルをデプロイすることもできます。バッチ推論用のモデルのデプロイに関する記事をご覧ください。