MLflow を使用してモデルを登録して提供する

完了

モデルの登録により、MLflow と Azure Databricks はモデルを追跡できます。これは、次の 2 つの理由で重要です。

  • モデルを登録すると、リアルタイム、ストリーミング、またはバッチ推論のためにモデルを提供できます。 データ サイエンティストはアプリケーション コードを開発する必要がないように、登録を行うと、トレーニング済みのモデルを使用するプロセスが簡単になります。サービス プロセスは、そのラッパーをビルドし、バッチ スコアリング用の REST API またはメソッドを自動的に公開します。
  • モデルを登録すると、時間の経過に伴ってそのモデルの新しいバージョンを作成できます。モデルの変更を追跡し、さまざまな履歴バージョンのモデル間で比較を実行する機会を提供します。

モデルの登録

実験を実行してモデルをトレーニングする場合は、次に示すように、実験の実行の一部としてモデル自体をログに記録できます。

with mlflow.start_run():
    # code to train model goes here

    # log the model itself (and the environment it needs to be used)
    unique_model_name = "my_model-" + str(time.time())
    mlflow.spark.log_model(spark_model = model,
                           artifact_path=unique_model_name,
                           conda_env=mlflow.spark.get_default_conda_env())

モデルがどの程度予測されているかを示すログに記録されたメトリックを含め、実験の実行を確認すると、モデルは実行成果物に含まれます。 その後、実験ビューアーのユーザー インターフェイスを使用してモデルを 登録 するオプションを選択できます。

または、実行中のメトリックを確認せずにモデルを登録する場合は、log_model メソッドにregistered_model_name パラメーターを含めることができます。その場合、モデルは実験の実行中に自動的に登録されます。

with mlflow.start_run():
    # code to train model goes here

    # log the model itself (and the environment it needs to be used)
    unique_model_name = "my_model-" + str(time.time())
    mlflow.spark.log_model(spark_model=model,
                           artifact_path=unique_model_name
                           conda_env=mlflow.spark.get_default_conda_env(),
                           registered_model_name="my_model")

モデルの複数のバージョンを登録できるため、すべてのクライアント アプリケーションを最もパフォーマンスの高いバージョンに移行する前に、一定期間のモデル バージョンのパフォーマンスを比較できます。

推論にモデルを使用する

モデルを使用して新しい特徴データからラベルを予測するプロセスは 、推論と呼ばれます。 Azure Databricks の MLflow を使用して、モデルを次の方法で推論できるようにします。

  • クライアント アプリケーションが REST 要求を行うことができる HTTP エンドポイントを使用して、モデルをリアルタイム サービスとしてホストします。
  • モデルを使用して、特徴の差分テーブルに基づいてラベルの永続的ストリーミング推論を実行し、結果を出力テーブルに書き込みます。
  • デルタ テーブルに基づくバッチ推論のモデルを使用し、各バッチ操作の結果を特定のフォルダーに書き込みます。

次に示すように、Azure Databricks ポータルの [モデル ] セクションのページから推論用のモデルをデプロイできます。

Azure Databricks ポータルの [モデル推論の設定] ダイアログ ボックスのスクリーンショット。