MLflow と Azure Machine Learning

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

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 とは異なり、SDK v2 にログ機能はありません。 トレーニング ルーチンがクラウドに依存せず、移植できるように、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 で MLflow を使うと、次のような機能を利用できます。

サンプルの Notebook

R での MLflow を使用した追跡

R での MLflow のサポートには、次の制限があります。

  • MLflow の追跡は、Azure Machine Learning ジョブでの実験のメトリック、パラメーター、モデルの追跡に限定されます。
  • R カーネルを使用する RStudio、Posit (旧称 RStudio Workbench)、または Jupyter Notebook での対話型トレーニングは、"サポートされていません"。
  • MLflow R SDK を使用するモデルの管理と登録は、"サポートされていません"。 モデルの登録と管理には、代わりに、Azure Machine Learning CLI または Azure Machine Learning スタジオを使ってください。

Azure Machine Learning での MLflow 追跡クライアントの使用については、「Azure Machine Learning CLI (v2) を使用して R モデルをトレーニングする」の例をご覧ください。

Java での MLflow を使用した追跡

Java での MLflow のサポートには、次の制限があります。

  • MLflow の追跡は、Azure Machine Learning ジョブでの実験のメトリックとパラメーターの追跡に限定されます。
  • MLflow Java SDK を使用して成果物とモデルを追跡することはできません。 キャプチャするモデル (または成果物) を保存するには、代わりに、ジョブ内の Outputs フォルダーと mlflow.save_model メソッドを使ってください。

Azure Machine Learning での MLflow 追跡クライアントの使用については、Azure Machine Learning で MLflow 追跡クライアントを使う Java の例をご覧ください。

MLflow を使ったモデル レジストリ

Azure Machine Learning では、モデル管理用の MLflow がサポートされています。 このサポートは、MLflow クライアントを熟知しているユーザーにとって、モデルのライフサイクル全体をサポートする便利な方法になります。

Azure Machine Learning で MLflow API を使ってモデルを管理する方法の詳細については、「MLflow を使った Azure Machine Learning でのモデル レジストリの管理」を参照してください。

ノートブックの例

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 スタジオを使ってサポートされます。

リアルタイムとバッチ両方の推論での Azure Machine Learning への MLflow モデルのデプロイについて詳しくは、「MLflow モデルをデプロイするためのガイドライン」をご覧ください。

ノートブックの例

MLflow プロジェクトを使用したトレーニング (プレビュー)

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

MLflow プロジェクト (プレビュー) を使って、トレーニング ジョブを Azure Machine Learning に送信できます。 Azure Machine Learning 追跡を使ってローカルにジョブを送信することも、Azure Machine Learning コンピューティングを介してジョブをクラウドに移行することもできます。

追跡に Azure Machine Learning ワークスペースを使用する MLflow プロジェクトでトレーニング ジョブを送信する方法については、MLflow プロジェクトと Azure Machine Learning による機械学習モデルのトレーニングに関する記事をご覧ください。

ノートブックの例

MLflow SDK、Azure Machine Learning v2、Azure Machine Learning スタジオの機能

次の表は、機械学習ライフサイクルで利用できる各クライアント ツールを使って実行できる操作を示したものです。

機能 MLflow SDK Azure Machine Learning CLI/SDK Azure Machine Learning Studio
メトリック、パラメーター、モデルを追跡してログに記録する
メトリック、パラメーター、モデルを取得する 1
トレーニング ジョブを送信します 2
Azure Machine Learning データ資産を使用してトレーニング ジョブを送信する
機械学習パイプラインでトレーニング ジョブを送信する
実験と実行を管理する
MLflow モデルの管理 3
MLflow 以外のモデルの管理
Azure Machine Learning で MLflow モデルをデプロイ (オンラインおよびバッチ) 4
Azure Machine Learning で MLflow 以外のモデルをデプロイ

注意