注
この記事では、従来の機械学習モデルとディープ ラーニング モデルの MLflow 3 機能に焦点を当てています。 MLflow 3 には、トレース、評価、人間のフィードバック収集など、GenAI アプリケーション開発のための包括的な機能も用意されています。 詳細については、 GenAI の MLflow 3 を参照してください。
この記事では、機械学習モデルを開発するための MLflow 3 の使用を開始します。 モデル用に MLflow 3 をインストールする方法について説明し、作業を開始するためのいくつかのデモ ノートブックが含まれています。 また、モデルの MLflow 3 の新機能について詳しく説明するページへのリンクも含まれています。
モデルの MLflow 3 とは
Azure Databricks 上のモデルの MLflow 3 は、機械学習モデルの最先端の実験追跡、パフォーマンス評価、運用管理を提供します。 MLflow 3 では、主要な追跡の概念を維持しながら、重要な新機能が導入され、MLflow 2.x からの移行が迅速かつ簡単になります。
GenAI の MLflow 3 とは
MLflow 3 for Models 以外にも、GenAI 用 MLflow 3 には、エージェントおよび GenAI アプリケーション開発のためのさまざまな新機能と機能強化が導入されています。 包括的な概要については、 GenAI の MLflow 3 を参照してください。
GenAI 用 MLflow 3 のコア機能は次のとおりです。
- トレースと可観測性 - OpenAI、LangChain、LlamaIndex、Anthropic を含む 20 以上のフレームワーク用の自動インストルメンテーションを使用した GenAI アプリケーションのエンドツーエンドの監視
- 評価と監視 - 開発から生産までの品質を測定および改善するための包括的な GenAI 評価機能。 組み込みの LLM ジャッジ、カスタマイズ可能なジャッジ、評価データセット管理、リアルタイム監視が含まれます。
- ヒューマン フィードバック収集 - ドメインエキスパートのフィードバックを収集し、エージェントを対話形式でテストするためのカスタマイズ可能なレビュー UI と、レビューの進行状況を整理および追跡するための構造化されたラベル付けセッション
- Prompt Registry - Unity カタログ統合による一元的なプロンプトのバージョン管理、管理、および A/B テスト
- アプリケーションとエージェントのバージョン管理 - GenAI アプリケーションとエージェントのバージョン管理 (コード リビジョン、パラメーター、品質評価、パフォーマンス メトリック、アプリケーションまたはエージェントに関連付けられているトレースの追跡を含む)。
モデルにおけるMLflow 3とMLflow 2の違いは何ですか。
Azure Databricks 上のモデルの MLflow 3 を使用すると、次のことが可能になります。
- 開発ノートブック内の対話型クエリから実稼働バッチまたはリアルタイム サービスデプロイまで、すべての環境でモデルのパフォーマンスを一元的に追跡および分析します。
- Unity カタログのモデル バージョン ページと REST API から、すべてのワークスペースと実験にわたって、モデルのメトリックとパラメーターを表示およびアクセスします。
- Unity カタログを使用して評価とデプロイのワークフローを調整し、モデルの各バージョンの包括的な状態ログにアクセスします。
これらの機能により、機械学習モデルの開発、評価、運用のデプロイが簡素化され、合理化されます。
ログに記録されたモデル
MLflow 3 の新機能の多くは、 LoggedModelの新しい概念から派生しています。 ディープ ラーニングモデルと従来の機械学習モデルの場合、 LoggedModels はトレーニング実行によって生成されるモデルの概念を昇格させ、さまざまなトレーニングと評価の実行にわたってモデルのライフサイクルを追跡するための専用オブジェクトとして確立します。
LoggedModels は、開発のフェーズ (トレーニングと評価) と環境 (開発、ステージング、運用) 全体のメトリック、パラメーター、トレースをキャプチャします。
LoggedModelがモデル バージョンとして Unity カタログに昇格されると、元のLoggedModelのすべてのパフォーマンス データが UC モデル バージョン ページに表示され、すべてのワークスペースと実験の可視性が提供されます。 詳細については、「 MLflow ログに記録されたモデルを使用してモデルを追跡および比較する」を参照してください。
展開作業
MLflow 3 には、デプロイ ジョブの概念も導入されています。 デプロイ ジョブでは、評価、承認、デプロイなどの手順を含め、Lakeflow ジョブを使用してモデルのライフサイクルを管理します。 これらのモデル ワークフローは Unity カタログによって管理され、すべてのイベントは Unity カタログのモデル バージョン ページで使用可能なアクティビティ ログに保存されます。
MLflow 2.x からの移行
MLflow 3 には多くの新機能がありますが、実験と実行の主要な概念と、パラメーター、タグ、メトリックなどのメタデータはすべて同じままです。 MLflow 2.x から 3.0 への移行は非常に簡単であり、ほとんどの場合、最小限のコード変更が必要です。 このセクションでは、MLflow 2.x との主な違いと、シームレスな移行に注意する必要がある点について説明します。
ロギングモデル
2.x でモデルをログ記録する場合は、 artifact_path パラメーターが使用されます。
with mlflow.start_run():
mlflow.pyfunc.log_model(
artifact_path="model",
python_model=python_model,
...
)
MLflow 3 では、代わりに name を使用します。これにより、モデルを後で名前で検索できます。
artifact_path パラメーターは引き続きサポートされていますが、非推奨になりました。 さらに、モデルが MLflow 3 で一流の市民になったため、モデルのログ記録時に MLflow で実行をアクティブにする必要がなくなりました。 最初に実行を開始しなくても、モデルを直接ログに記録できます。
mlflow.pyfunc.log_model(
name="model",
python_model=python_model,
...
)
モデルアーティファクト
MLflow 2.x では、モデル成果物は実行の成果物パスの下に実行成果物として格納されます。 MLflow 3 では、モデル成果物は、代わりにモデルの成果物パスの下の別の場所に格納されるようになりました。
# MLflow 2.x
experiments/
└── <experiment_id>/
└── <run_id>/
└── artifacts/
└── ... # model artifacts are stored here
# MLflow 3
experiments/
└── <experiment_id>/
└── models/
└── <model_id>/
└── artifacts/
└── ... # model artifacts are stored here
問題を回避するために、mlflow.<model-flavor>.load_modelによって返されたモデル URI を使用して、mlflow.<model-flavor>.log_modelでモデルを読み込むことをお勧めします。 このモデル URI は 、(MLflow 2.x のようにmodels:/<model_id>ではなく) runs:/<run_id>/<artifact_path>形式であり、モデル ID のみが使用可能な場合は手動で構築することもできます。
モデル レジストリ
MLflow 3 では、既定のレジストリ URI が databricks-ucになりました。つまり、Unity カタログの MLflow モデル レジストリが使用されます (詳細については、 Unity カタログでのモデル ライフサイクルの管理 を参照してください)。 Unity カタログに登録されているモデルの名前は、 <catalog>.<schema>.<model>形式です。
mlflow.register_modelなどの登録済みモデル名を必要とする API を呼び出す場合は、この完全な 3 レベルの名前が使用されます。
Unity カタログが有効で、 その既定のカタログ が Unity カタログにあるワークスペースの場合は、名前として <model> を使用することもできます。また、既定のカタログとスキーマが推論されます (MLflow 2.x からの動作は変更されません)。 ワークスペースで Unity カタログが有効になっていても、 その既定のカタログ が Unity カタログに含まれるよう構成されていない場合は、完全な 3 レベルの名前を指定する必要があります。
Databricks では、モデルのライフサイクルを管理するために、Unity カタログで MLflow モデル レジストリを使用することをお勧めします。
ワークスペース モデル レジストリ (レガシ) を引き続き使用する場合は、次のいずれかの方法を使用して、レジストリ URI をdatabricksに設定します。
-
mlflow.set_registry_uri("databricks")を使用してください。 - 環境変数を MLFLOW_REGISTRY_URI設定します。
- レジストリ URI の環境変数を大規模に設定するには、 init スクリプトを使用できます。 これには 、万能コンピューティングが必要です。
その他の重要な変更
- MLflow 3 クライアントは、MLflow 2.x クライアントでログに記録されたすべての実行、モデル、トレースを読み込むことができます。 ただし、その逆は必ずしも正しいとは限らないため、MLflow 3 クライアントでログに記録されたモデルとトレースを、古い 2.x クライアント バージョンで読み込むことができない場合があります。
-
mlflow.evaluateAPI は非推奨になりました。 従来の ML またはディープ ラーニング モデルでは、元のmlflow.models.evaluateAPI との完全な互換性を維持するmlflow.evaluateを使用します。 LLM または GenAI アプリケーションの場合は、代わりにmlflow.genai.evaluateAPI を使用してください。 -
run_uuidオブジェクトからRunInfo属性が削除されました。 代わりにコードでrun_idを使用してください。
MLflow 3 のインストール
MLflow 3 を使用するには、正しい (>= 3.0) バージョンを使用するようにパッケージを更新する必要があります。 ノートブックを実行するたびに、次のコード行を実行する必要があります。
%pip install mlflow>=3.0 --upgrade
dbutils.library.restartPython()
ノートブックの例
次のページでは、従来の ML とディープ ラーニングの MLflow 3 モデル追跡ワークフローを示します。 各ページにはノートブックの例が含まれています。
次のステップ
MLflow 3 の新機能の詳細については、次の記事を参照してください。