MLflow Saved Modelsのご紹介

先日のDataiku Product Daysのセッションで、DataikuにSaved ModelsとしてMLflowモデルをインポートする例を紹介しました。その概要をさっと把握したい方のために、このブログで、当該セッションで取り上げたMLflow Saved Modelsの概要について紹介します。
<font color="LightSeaGreen">→ [*Dataiku Product Days セッションの全文をご覧ください*](https://content.dataiku.com/introducing-mlflow-product?hsCtaTracking=e6cda521-b9b2-4176-8aa0-5592095f7ba3%7C14676da4-fdd2-4d8f-9831-b46eaeb807e1)</font>

まず、DataikuのSaved Modelsについてお話しします。モデルを構築するためにDataikuにデータセットを準備し、視覚的な分析をするためにラボに移動します。このラボでは、さまざまな特徴量処理やプロセスをデータに適用したり、利用しようとする特定のアルゴリズムのためにさまざまなハイパーパラメーターを選択したりできます。そして、そのパフォーマンスからモデルを評価できます。モデルの中から最適な候補を選択したら、フローにデプロイするために、モデルのバージョンを選択します。これで完了です。これがSaved Modelと呼ばれるものです。保存されたモデルは、緑の菱形で表示されます。
![Screen Shot 2022-08-18 at 10.37.35 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/d882805f-b3b7-d4db-edac-45ac9f4fd2f4.png)


## なぜSaved Modelがヒットなのか
はじめのデータセットの操作からSaved Modelのひとつをフローに展開する操作まで、とても簡単であることがお客様に好評です。モデルのバージョン管理、解釈性ツールによる重要な特徴量の理解、公平性の評価、What-Ifシナリオの実行などによるメリットを享受いただけます。

また、Dataikuは、さまざまなデプロイメントアーキテクチャーにおいて、バッチおよびリアルタイム推論のためのシームレスなデプロイメントを提供します。もちろん、これらすべてがガバナンス可能で、透明性が高く、監査可能であることは言うまでもありません。そのため、モデルのライフサイクル全体を通じて、モデルがどのように開発され、展開され、継続して実行されているかを明確に理解することができます。新しいデータやラベルが入力されると、データとパフォーマンスのドリフトを監視し、既存のモデルと比較するためにモデルを再トレーニングすることも可能です。

コードに強い上級データサイエンティストにとって大きな魅力なもう一つの重要な機能は、Dataikuがビジュアル機械学習（ML）で提供するものを拡張できることです。機械学習パイプラインの特徴量処理に取り組む際、カスタムの前処理を指定する機能があります。すなわち、変数を正確に準備するための独自の関数を書くことができます。さらに、カスタムメトリクスやカスタムアルゴリズムも指定できるので、ビジュアル機械学習にあるものに縛られたり制限されたりすることはありません。機械学習パイプラインのプラットフォームがいかにオープンでカスタマイズ可能であっても、提供されるフレームワークに完全に縛られたくないという欲求があるのが常です。

これまで、ビジュアル機械学習のカスタマイズ可能な機能ではなくノートブックで作業していた場合、バージョン管理、解釈性、リアルタイムアーキテクチャーのシームレスなモデル展開、ガバナンス機能、作業を簡単に比較し継続的に改善する機能など、Dataikuに搭載された、作業の高速化に役立つ機能の一部について、その利用をあきらめなければならなかったかもしれません。そこでDataikuは、ビジュアル機械学習以外のモデルのトレーニング体験をシンプルにするために何ができるかをじっくりと考え、（ノートブックで作業する）ユーザーが利用できていないこれらのベネフィットのいくつかを、どうすれば提供できるかを検討しました。
![KITCHEN.00_00_33_14.Still011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/6bc3e5ee-c3f2-0a63-8b0f-876e33dba73e.jpeg)

## MLflowの紹介
データサイエンティストと話す中で、ツールやフレームワークのトレーニングには非常に多くの選択肢があり、デプロイにも同様に多くの選択肢があるということを耳にしました。ある環境やフレームワークから別の環境に移行するために必要なグルーコードをすべて書くことは、あまりにも大変で、（つまらない上に）複雑です。幸運なことに、MLflowはこのような大きな課題を軽減してくれます。

MLflowは、機械学習ライフサイクルを管理するためのオープンソースのプラットフォームです。多くの興味深い機能を備えていますが、ここで注目するのはMLflowモデルの考え方です。MLflowモデルの背後にある考え方は、学習したモデルをパッケージ化して保存する方法を標準化することによって、異種混合学習とサービス・インフラストラクチャーで生じる爆発を簡素化することです。

一つのファネルで、さまざまなフレームワークで開発されたモデルを、さまざまな異なる提供インフラにおいて理解可能な一貫した方法で保存することができます。これにより、どのフレームワークでモデルを学習させたとしても、シームレスな予測およびスコアリング機能を利用することができます。
![Screen Shot 2022-08-19 at 10.49.22 AM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/414d4881-866e-7a70-8666-f2cf155e189a.png)

## 実際、どのようなものでしょうか？
MLflowの方法で保存されたモデルは、実際には単なるディレクトリです。モデルの背後にあるブレーン、つまりモデルのロジックを含む成果物や、モデルオブジェクトから予測を生成するために必要な設定を記述したメタデータが含まれています。ここで重要なことは、これらは適合したモデル、つまり学習させたものに関連する成果物にすぎないということです。とてもシンプルです。

このディレクトリでできることは、保存されたモデルとしてDataikuに持ち込むだけでなく、MLflowモデル形式を認識するすべてのインフラストラクチャーオプションにこれを使用することです。DataikuのMLflow Saved Modelから得られる豊かで、解釈可能で、インタラクティブな評価は、もしユーザーがノートブックだけで作業していたならば、これらを生成するにはもっと多くの作業と相当量のグルーコードを必要とするでしょう。

Dataikuでは、実際に評価レシピを使用し、評価を直接保存し、比較のためにすぐに利用できるようにすることができます。また、このモデルをフローから直接取り出し、使い慣れたデプロイとガバナンスの機能を利用することができます。Dataiku Govern機能では、APIを作成したり、モデルのインサイトをビジネスイニシアチブに取り入れたりすることが簡単にできます。

以上より、PythonのカスタムモデルをDataikuのMLflow Saved Modelsとしてインポートするメリットのいくつかについて、ご理解いただけたかと思います。

## Dataiku 11をチェックする
Dataiku 11の主要な機能と企業にもたらす多くのメリットについて、ご覧いただけます。
**<font color="LightSeaGreen">→Dataiku 11について詳細は[こちら](https://discover.dataiku.com/dataiku-11/)</font>**


原文：[*Introducing MLflow Saved Models*](https://blog.dataiku.com/introducing-mlflow-saved-models)