MLflow と Azure Machine Learning
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
この記事では、機械学習のライフサイクル全体を管理するように設計されたオープンソース フレームワーク、MLflow の機能について説明します。 MLflow では、一貫したツール セットを使用して、さまざまなプラットフォームでモデルのトレーニングとサービス提供を行います。 MLflow は、実験の実行場所がローカル、リモート コンピューティング先、仮想マシン、Azure Machine Learning コンピューティング インスタンスのいずれでも使用できます。
Azure Machine Learning ワークスペースは MLflow と互換性があります。つまり、MLflow サーバーを使うのと同じ方法で Azure Machine Learning ワークスペースを使用できます。 この互換性には、次の利点があります。
- Azure Machine Learning は MLflow サーバー インスタンスをホストしませんが、MLflow API を直接使用できます。
- Azure Machine Learning ワークスペースは、MLflow コードが Azure Machine Learning で実行されるかどうかにかかわらず、そのコードの追跡サーバーとして使用できます。 追跡が行われるワークスペースを指すように MLflow を構成するだけで済みます。
- MLflow を使用する任意のトレーニング ルーチンを、変更することなく Azure Machine Learning で実行できます。
ヒント
Azure Machine Learning SDK v1 とは異なり、Azure Machine Learning v2 SDK にはログ機能がありません。 MLflow ログを使用して、トレーニング ルーチンがクラウドに依存せず、移植可能で、Azure Machine Learning に依存しないようにすることができます。
MLflow を使用した追跡
Azure Machine Learning は、MLflow の追跡機能を使って、実験のメトリックをログし、成果物を格納します。 Azure Machine Learning に接続されていると、MLflow でのすべての追跡が、作業中のワークスペースで具体化されます。
実験とトレーニング ルーチンを追跡するよう実験をセットアップする方法については、「MLflow を使ったメトリック、パラメーター、ファイルのログ」を参照してください。 MLflow で実験と実行に対してクエリを実行して比較することもできます。
Azure Machine Learning の MLflow では、追跡を一元化する方法が提供されます。 ローカル環境または別のクラウドで作業している場合でも、MLflow を Azure Machine Learning ワークスペースに接続できます。 Azure Machine Learning ワークスペースでは、トレーニングのメトリックとモデルを保存するための一元化された安全でスケーラブルな場所が用意されています。
Azure Machine Learning の MLflow では、以下のことができます。
- ローカルまたはクラウドで実行されている機械学習の実験とモデルを追跡します。
- Azure Databricks の機械学習の実験を追跡します。
- Azure Synapse Analytics の機械学習の実験を追跡します。
R での MLflow を使用した追跡
R での MLflow のサポートには、次の制限があります。
- MLflow の追跡は、Azure Machine Learning ジョブでの実験のメトリック、パラメーター、モデルの追跡に限定されます。
- R カーネルを使用する RStudio、Posit (旧称 RStudio Workbench)、または Jupyter Notebook での対話型トレーニングは、サポートされていません。
- モデルの管理と登録は、サポートされていません。 モデルの登録と管理には、Azure Machine Learning CLI または Azure Machine Learning スタジオを使用してください。
Azure Machine Learning での R モデルを含む MLflow 追跡クライアントの使用例については、「Azure Machine Learning CLI (v2) を使用して R モデルをトレーニングする」を参照してください。
Java での MLflow を使用した追跡
Java での MLflow のサポートには、次の制限があります。
- MLflow の追跡は、Azure Machine Learning ジョブでの実験のメトリックとパラメーターの追跡に限定されます。
- 成果物とモデルを追跡することはできません。 キャプチャするモデルまたは成果物を保存するには、代わりに、ジョブ内の
outputs
フォルダーとmlflow.save_model
メソッドを使ってください。
Azure Machine Learning 追跡サーバーで MLflow 追跡クライアントを使用する Java の例については、「azuremlflow-java 」を参照してください。
MLflow 追跡に関するノートブックの例
- MLflow を使った XGBoost 分類子のトレーニングと追跡: MLflow を使って実験を追跡し、モデルをログし、複数のフレーバーをパイプラインに結合する方法を示します。
- サービス プリンシパル認証を使用した MLflow での XGBoost 分類器のトレーニングと追跡: Azure Machine Learning の外部で実行されているコンピューティングから MLflow を使って実験を追跡する方法を示します。 この例では、サービス プリンシパルを使って Azure Machine Learning service に対する認証を行う方法が示されています。
- Hyperopt と MLflow 内の入れ子になった実行を使用したハイパーパラメーターの最適化: 一般的な Hyperopt ライブラリを使い、子実行を使ってモデルに対するハイパーパラメーターの最適化を行う方法を示します。 この例では、子実行から親実行にメトリック、パラメーター、成果物を転送する方法が示されています。
- MLflow を使用したモデルのログ: MLflow で成果物の代わりにモデルの概念を使う方法を示します。 この例では、カスタム モデルを構築する方法も示されています。
- MLflow を使った実行と実験を管理する: MLflow を使って Azure Machine Learning の実験、実行、メトリック、パラメーター、成果物のクエリを実行する方法を示します。
MLflow を使ったモデルの登録
Azure Machine Learning では、モデル管理用の MLflow がサポートされています。 このサポートは、MLflow クライアントを使ってモデル ライフサイクル全体を管理することに慣れているユーザーに役立つ方法です。 Azure Machine Learning で MLflow API を使ってモデルを管理する方法の詳細については、「MLflow を使用して Azure Machine Learning でモデル レジストリを管理する」を参照してください。
MLflow モデル登録に関するノートブックの例
MLflow を使ったモデル管理: レジストリ内のモデルを管理する方法を示します。
MLflow を使用したモデル デプロイ
MLflow のモデルを Azure Machine Learning にデプロイして、向上したエクスペリエンスを利用できます。 Azure Machine Learning では、環境やスコアリング スクリプトを指定しなくても、リアルタイム エンドポイントとバッチ エンドポイントの両方に、MLflow モデルをデプロイできます。
MLflow SDK、Azure Machine Learning CLI、Azure Machine Learning SDK for Python、Azure Machine Learning スタジオはどれも、MLflow のモデル デプロイをサポートします。 リアルタイムとバッチ両方の推論での Azure Machine Learning への MLflow モデルのデプロイについて詳しくは、「MLflow モデルをデプロイするためのガイドライン」を参照してください。
MLflow モデル デプロイに関するノートブックの例
- MLflow をオンライン エンドポイントにデプロイする: MLflow SDK を使って MLflow のモデルをオンライン エンドポイントにデプロイする方法を示します。
- MLflow デプロイの段階的ロールアウト: MLflow SDK とモデルの段階的なロールアウトを使って、MLflow のモデルをオンライン エンドポイントにデプロイする方法を示します。 この例では、モデルの複数のバージョンを同じエンドポイントにデプロイする方法も示されています。
- MLflow モデルを従来の Web サービスにデプロイする: MLflow SDK を使って従来の Web サービス (Azure Container Instances または Azure Kubernetes Service v1) に MLflow モデルをデプロイする方法を示します。
- Azure Databricks でのモデルのトレーニングと Azure Machine Learning へのデプロイ: Azure Databricks でモデルをトレーニングし、Azure Machine Learning にデプロイする方法を示します。 この例では、Azure Databricks の MLflow インスタンスを使用した実験の追跡についても説明しています。
MLflow プロジェクトを使用したトレーニング (プレビュー)
警告
Azure Machine Learning での MLproject
ファイル (MLflow プロジェクト) のサポートは、2026 年 9 月に完全に廃止される予定です。 MLflow は引き続き完全にサポートされており、Azure Machine Learning で機械学習ワークロードを追跡するために推奨される方法です。
MLflow を引き続きお使いになる場合は、Azure CLI または Azure Machine Learning SDK for Python (v2) のいずれかを使用して、MLproject
ファイルから Azure Machine Learning ジョブに移行することをお勧めします。 Azure Machine Learning ジョブの詳細については、「MLflow を使用して ML の実験とモデルを追跡する」を参照してください。
重要
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
MLflow プロジェクトを使って、トレーニング ジョブを Azure Machine Learning に送信できます。 Azure Machine Learning 追跡を使ってローカルにジョブを送信することも、Azure Machine Learning コンピューティングを介してジョブをクラウドに移行することもできます。
追跡に Azure Machine Learning ワークスペースを使用する MLflow プロジェクトでトレーニング ジョブを送信する方法については、「Azure Machine Learning で MLflow プロジェクトを使用してトレーニングする (プレビュー)」を参照してください。
MLflow プロジェクトに関するノートブックの例
MLflow と Azure Machine Learning のクライアント ツール機能の比較
次の表は、MLflow SDK と Azure Machine Learning クライアント ツールで可能な機械学習ライフサイクル操作を示しています。
機能 | MLflow SDK | Azure Machine Learning CLI と SDK v2 | Azure Machine Learning Studio |
---|---|---|---|
メトリック、パラメーター、モデルを追跡してログに記録する | ✓ | ||
メトリック、パラメーター、モデルを取得する | ✓ | 成果物とモデルのみをダウンロードできます。 | ✓ |
トレーニング ジョブを送信します | MLflow プロジェクトを使ってできます (プレビュー)。 | ✓ | ✓ |
Azure Machine Learning データ資産を使用してトレーニング ジョブを送信する | ✓ | ✓ | |
機械学習パイプラインでトレーニング ジョブを送信する | ✓ | ✓ | |
実験と実行を管理する | ✓ | ✓ | ✓ |
MLflow モデルの管理 | 一部の操作がサポートされない場合があります。1 | ✓ | ✓ |
MLflow 以外のモデルの管理 | ✓ | ✓ | |
Azure Machine Learning で MLflow モデルをデプロイする (オンラインおよびバッチ) | バッチ推論用の MLflow モデルのデプロイは現在サポートされていません。2 | ✓ | ✓ |
Azure Machine Learning で MLflow 以外のモデルをデプロイ | ✓ | ✓ |
1 詳細については、「MLflow を使用して Azure Machine Learning でモデル レジストリを管理する」を参照してください。
2 別の方法として、「Spark ジョブでの MLflow モデルのデプロイと実行」を参照してください。