DatabricksにおけるMLflowモデルレジストリとCI/CD機能によるMLOpsの簡素化

[How Databricks’ MLflow Model Registry Simplifies MLOps With CI/CD Features \- The Databricks Blog](https://databricks.com/blog/2020/11/19/mlflow-model-registry-on-databricks-simplifies-mlops-with-ci-cd-features.html)の翻訳です。

[MLflow](https://databricks.com/product/managed-mlflow)は、エクスペリメント(モデルトレーニングの管理単位)のメトリクス、パラメーター、アーティファクトを追跡し、モデルのバッチサービング、リアルタイミングサービングシステムを提供することで、企業における機械学習(ML)ライフサイクル管理を支援します。[MLflowのモデルレジストリ](https://databricks.com/product/mlflow-model-registry)は、実験段階からデプロイメントへのハブとして動作することで、モデルデプロイメントのライフサイクルを管理する中央リポジトリを提供します。

MLOpsやMLライフサイクル管理において重要なパートは、継続的インテグレーションおよびデプロイメント(CI/CD)です。この記事では、全てのDatabricksユーザーが利用できるタグやコメント、間も無くサポートされるwebhook機能などCI/CDプロセスを円滑にする、DatabricksのMLflowモデルレジストリ[[AWS](https://docs.databricks.com/applications/mlflow/model-registry.html)][[Azure](https://docs.microsoft.com/azure/databricks/applications/mlflow/model-registry)]の新機能を紹介します。

Data + AIサミットにおいて、DatabricksにおけるマネージドMLflowモデルレジストリのGAを発表し、本記事では新機能をご説明します。マネージドソリューションで提供されるエンタープライズ向けの機能に関しては、以前の[記事](https://qiita.com/taka_yayoi/items/3038da9cc8d57922982d)をご覧ください。

# タグによるモデルとモデルのバージョンに対する注釈付け

登録されたモデルとモデルバージョンはキーバリューのタグをサポートしており、様々な情報を埋め込むことができます。例えば、ユーザーはモデルのデプロイメントモード(バッチ、リアルタイム)を書き込めますし、デプロイメントパイプラインで、モデルがどのリージョンにデプロイされるのかに関してタグを追加することができます。そして、タグを用いた検索機能によって、あなたのタスクにおいて重要なモデルを特定するために、これらの属性を用いて容易にモデルを特定できるようになります。

タグは、モデルおよびモデルバージョンのページから追加、変更、削除を行うことができます。これらは[MLflow API](https://www.mlflow.org/docs/latest/python_api/mlflow.tracking.html#mlflow.tracking.MlflowClient.set_model_version_tag)経由でも可能です。

> タグの入力手順を示す動画は[原文](https://databricks.com/blog/2020/11/19/mlflow-model-registry-on-databricks-simplifies-mlops-with-ci-cd-features.html)で参照できます。

# モデルのバージョンに対するコメントの追記

モデルレジストリの最新リリースでは、モデルバージョンに対してフリーフォームでコメントを記述することができます。デプロイメントプロセスは多くのケースで、MLエンジニア間の深い議論からスタートします。モデルをプロダクションに移行するかどうか、失敗原因の検証、モデル精度の確認、メトリクス、パラメーター、スキーマの再検証など。コメントを通じて、モデルデプロイメントプロセスの過程で生じた議論を、中央管理される場所に記録しておくことができます。

さらに、企業は自身のデプロイメントプロセスを自動化しようとするので、デプロイされたモデルに関する情報を様々なプラットフォームに展開できます。コメントを用いることで、外部のCI/CDパイプラインは、テスト結果に関する情報、エラーメッセージ、他の通知をモデルレジストリに直接ポストできます。また、webhookと組み合わせることで、特定のコメントによってCI/CDパイプラインを起動するように設定することもできます。

> コメントの入力手順を示す動画は[原文](https://databricks.com/blog/2020/11/19/mlflow-model-registry-on-databricks-simplifies-mlops-with-ci-cd-features.html)で参照できます。

コメントはUIあるいはREST APIインタフェース(まもなく公開予定)経由で作成、編集できます。

# Webhookによる通知

Webhooksはイベントの発生に対して、HTTPリクエスト経由でアクションを行うための一般的なメカニズムです。モデルレジストリのwebhookを用いることで、お使いのプラットフォームにおけるテストやデプロイメントパイプラインを実行したり、通知を送信するためのプッシュ機構を提供することで、CI/CDプロセスを円滑にします。モデルレジストリのwebhookは、新たなモデルバージョンの作成、新規コメントの追加、モデルバージョンのステージ遷移などによって起動されます。

例えば、企業において新規モデルバージョンが作成された際に自動でテストを実行し、結果をレポートするためにwebhookを利用することができます。ユーザーがモデルをプロダクションへの移行をリクエストをした際、[Slack](https://api.slack.com/messaging/webhooks)のようなメッセージングサービスと関連づけられたwebhookが、自動的にMLOpsチームのメンバーに通知を送信します。ステージ遷移が承認された際には、他のwebhookが自動でデプロイメントパイプラインを起動することもできます。

この機能は、現状プライベートプレビューです。CI/CDインテグレーションにおけるコアパーツとしてwebhookの利用法の詳細に関しては近日公開予定です。

# 監査ログによるイベントのモニタリング

MLOpsの重要なパーツは、プロダクションにおける問題をモニタリングし、監査することです。Databricksにおける監査ログ(診断ログ)[[AWS](https://docs.databricks.com/administration-guide/account-settings/audit-logs.html)][[Azure](https://docs.microsoft.com/en-us/azure/databricks/administration-guide/account-settings/azure-diagnostic-logs)]は、管理者にプラットフォームにおけるアクティビティを理解し、管理するための中央管理の手段を提供します。お使いのワークスペースで監査ログが有効化されると、コメントやwebhookのようなモデルレジストリのイベント[[AWS](https://docs.databricks.com/administration-guide/account-settings/audit-logs.html#audit-events)][[Azure](https://docs.microsoft.com/en-us/azure/databricks/administration-guide/account-settings/azure-diagnostic-logs#events)]が自動でロギングされます。

# モデルレジストリを使い始めてみる

これらの機能がどのように動作するのかを知るためには、キーノート[Taking Machine Learning to Production with New Features in MLflow](https://databricks.com/dataaisummit/europe-2020/keynotes#thursday-morning-1)をご覧いただけます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/IuvoDwacyb4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

MLflowモデルレジストリの詳細や、どのように使うのかを理解したいのであればドキュメント[[AWS](https://docs.databricks.com/applications/mlflow/model-registry.html)][[Azure](https://docs.microsoft.com/en-us/azure/databricks/applications/mlflow/model-registry)]を参照ください。あるいはサンプルノートブック[[AWS](https://docs.databricks.com/_static/notebooks/mlflow/mlflow-model-registry-example.html)][[Azure](https://docs.microsoft.com/en-us/azure/databricks/_static/notebooks/mlflow/mlflow-model-registry-example.html)]を試すこともできます。

MLflowを使ったことがない場合には、オープンソース[MLflowのクイックスタート](https://docs.databricks.com/applications/mlflow/quick-start.html)をご覧ください。プロダクションのユースケースにおいては、[DatabricksマネージドのMLflow](https://databricks.com/product/managed-mlflow)をご一読いただき、MLflowモデルレジストリを使ってみてください。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)