適用対象:
Azure CLI ml 拡張機能 v2 (現行)
Python SDK azure-ai-ml v2 (現行)
この記事では、機械学習のライフサイクル全体を管理するオープンソース フレームワークである MLflow の機能について説明します。 MLflow では、一貫したツール セットを使用して、さまざまなプラットフォームでモデルのトレーニングとサービス提供を行います。 実験をローカルで実行するか、リモート コンピューティング ターゲット、仮想マシン、または Azure Machine Learning コンピューティング インスタンスで実行するかに関係なく、MLflow を使用します。
Azure Machine Learning ワークスペースは MLflow と互換性があるため、MLflow サーバーを使用するのと同じ方法で Azure Machine Learning ワークスペースを使用します。 この互換性には、次の利点があります。
- Azure Machine Learning は MLflow サーバー インスタンスをホストしませんが、MLflow API を直接使用します。
- Azure Machine Learning で実行されるかどうかにかかわらず、MLflow コードの追跡サーバーとして Azure Machine Learning ワークスペースを使用します。 追跡が行われるワークスペースを指し示す MLflow を構成するだけです。
- 変更を加えずに、Azure Machine Learning で MLflow を使用するトレーニング ルーチンを実行します。
ヒント
Azure Machine Learning SDK v1 とは異なり、Azure Machine Learning v2 SDK にはログ機能は含まれていません。 MLflow ログを使用して、トレーニング ルーチンをクラウドに依存せず、移植性があり、Azure Machine Learning から独立した状態に保ちます。
追跡とは
ジョブを操作すると、Azure Machine Learning は、コード、環境、入力データや出力データなどの実験に関する情報を自動的に追跡します。 ただし、モデル、パラメーター、メトリックは各シナリオに固有であるため、モデル ビルダーは追跡を設定する必要があります。
保存された追跡メタデータは実験によって異なり、次のものが含まれます。
- Code
- OS バージョンや Python パッケージなどの環境の詳細
- 入力データ
- パラメーターの構成
- モデル
- 評価メトリック
- 混同行列や重要度プロットなどの評価視覚化
- 評価結果 (一部の評価予測を含む)
実験を追跡する利点
モデルのトレーニングを、Azure Machine Learning でジョブを使って行うか、ノートブックを使って対話形式で行うかに関係なく、実験の追跡は次のことに役立ちます。
- すべての機械学習実験を 1 か所にまとめる。 次に、実験を検索してフィルター処理し、ドリルダウンして以前の実験に関する詳細を確認します。
- 実験の比較、結果の分析、モデルトレーニングのデバッグを行います。
- 実験を再現または再実行して結果を検証できます。
- 他のチームメイトの作業内容を確認し、実験結果を共有し、プログラムで実験データにアクセスできるため、共同作業がより簡単になります。
MLflow を使用した追跡
Azure Machine Learning ワークスペースは MLflow と互換性があります。 この互換性は、トレーニング ルーチンを変更したり、クラウド固有の構文を追加したりすることなく、MLflow を使用してワークスペース内の実行、メトリック、パラメーター、成果物を追跡することを意味します。 MLflow を使って Azure Machine Learning ワークスペース内の実験と実行を追跡する方法については、「MLflow を使用して実験とモデルを追跡する」をご覧ください。
Azure Machine Learning は、MLflow の追跡機能を使って、実験のメトリックをログし、成果物を格納します。 Azure Machine Learning に接続すると、使用するワークスペースにすべての MLflow 追跡が表示されます。
ログを有効にして 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 分類子をトレーニングおよび追跡 する方法は、MLflow を使用して、Azure Machine Learning の外部で実行されているコンピューティングから実験を追跡する方法を示しています。 この例では、サービス プリンシパルを使って 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 のモデル デプロイをサポートします。 リアルタイム推論とバッチ推論の両方で MLflow モデルを Azure Machine Learning にデプロイする方法の詳細については、「 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 コンピューティングを使用してジョブをクラウドに移行します。
MLflow プロジェクトを使用するトレーニング ジョブを Azure Machine Learning ワークスペースに送信して、 Azure Machine Learning の MLflow プロジェクトを使用したトレーニング (プレビュー) で追跡する方法について説明します。
MLflow プロジェクトのノートブックの例
- ローカル コンピューティングで MLflow プロジェクトを使用してトレーニングする
- Azure Machine Learning コンピューティングで MLflow プロジェクトを使用してトレーニングする
MLflow と Azure Machine Learning のクライアント ツール機能の比較
次の表に、MLflow SDK と Azure Machine Learning クライアント ツールで実行できる機械学習ライフサイクル操作を示します。
| 特徴量 | MLflow SDK | Azure Machine Learning CLI と SDK v2 | Azure Machine Learning スタジオ |
|---|---|---|---|
| メトリック、パラメーター、モデルを追跡してログに記録する | ✓ | ||
| メトリック、パラメーター、モデルを取得する | ✓ | 成果物とモデルのみをダウンロードできます。 | ✓ |
| トレーニング ジョブを送信します | 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 モデルのデプロイと実行」を参照してください。