機械学習モデルの展開（デプロイ）とは？

学習した機械学習（ML）モデルを、実際のビジネスや運用のインパクトに変換するプロセス（運用化）は、モデルをデプロイした場合にのみ実現できるものです。これは、機械学習モデルを設計するための探索的な作業と、モデル自体の本番環境へのデプロイとプロセスへの組み込みに必要な（精度向上を含む）労力の間にある、大きなギャップを埋めることを意味します。このプロセスには、テスト、ITパフォーマンスのチューニング、データモニタリング戦略の設定、運用のモニタリングなどが含まれますが、これらに限定されるものではありません。

例えば、ウェブサイト上のレコメンデーションエンジン、顧客向けの詐欺検出システム、リアルタイム解約予測モデルなど、企業運営の中核となるモデルは、データサイエンティストのノートブックからAPIを公開するだけではダメで、初期モデル構築後に完全なる運用化が必要となり、モデルのデプロイがスムーズに行われることが重要です。

MLモデルがうまくデプロイされ、エンドユーザーがビジネス価値を実現するために使用するようになったとき、MLモデルは本番稼動されているとみなされます。本記事では、モデルデプロイの意味と、[Dataikuのエンドツーエンドプラットフォーム](https://www.dataiku.com/ja/製品/)がどのようにモデルデプロイメントプロセスをシームレスにするのかについて詳しく説明します。
![image1-Apr-10-2023-03-41-37-2911-PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/1b737a09-236b-c8e7-fe65-f460bb6a9abe.png)


## なぜモデルデプロイが重要なのか（そして難しいのか）？ 
モデルデプロイメントに至るまで、すべての作業を行ったとしましょう。ビジネスゴールを定義し、データの収集、クリーニング、探索を行い、（データ可視化を含む）分析を実施したとしましょう。プロジェクトのMLパートでは、チームは複数のモデルを構築、トレーニング、テストし、どのモデルが最も効率的で正確な予測を生成する可能性があるかを判断します。

テスト、モデル再構築、テスト、モデル再構築を繰り返し行い、本番に適したモデルが出来上がると、ここまでで終わりと思うかもしれません。しかし、そうではありません。モデルのデプロイはもっと複雑なのです。プロジェクトから[真のビジネス価値](https://pages.dataiku.com/2021-business-value-guide-ai)を引き出すためには、モデルをただ棚に置いておくだけでなく、組織全体で使用するためにはデプロイする必要があるのです。

モデルのデプロイメントに関して、組織が共通して直面する課題は、プロトタイプを作成した環境と本番環境のギャップをいかにしてタイムリーに埋めるかです。両者のインフラや技術要件は同一ではなく、作業する人の関心事やスキルセットも異なるため、これらの環境はしばしば乖離してしまいます。例えばよくあるのが、使用できるプログラミング言語、コードライブラリのバージョン、個人とシステムのアカウント、サンドボックスと本番用データベースの違いなどが該当します。

この乖離は、モデルを本番へ移行する際に、本番チーム（通常はIT部門のデータエンジニア）がパイプライン全体を別の言語、別の依存関係で再コード化する必要があることを意味します。この面倒なプロセスには数ヶ月から数年かかることもあります。多くの場合、この段階でプロジェクトは行き詰まり、それまでの作業が無駄になることが多いのです。

また、データエキスパートがモデルを本番稼動させる際に問題になるのが、再計算の問題です。静的ではなく、常に更新され、エンリッチ化されるデータを使って操作するため、データから得られる結果も頻繁に更新される必要があります。そのため、データサイエンティストがデータから生成された価値ある最新の洞察を得ようとするならば、データセットの再構築やモデルの再トレーニングなどを定期的に行う必要があります。

モデルを開発し、実際に本番環境にデプロイした後は、条件やデータが変化しても良好なパフォーマンスを維持できるよう、定期的に監視し、リフレッシュすることが課題となります（これを「MLOps」と呼びます）。何十、何百、何千もの本番稼働しているモデルを監視する際に、定期的に抜き打ちチェックを行わなければならないのは、データチームにとって大きな時間的負担となります。次のセクションでは、DataikuがどのようにMLOpsを効率化するのか、さらに深く掘り下げていきます。

## Dataikuでモデルのデプロイメントを容易にする
アナリティクスやAIプロジェクトのパッケージング、リリース、運用は、複雑で時間がかかり、エラーが発生しやすいものです。継続的に行う方法がなければ、人的リソースがコストとして縛られ、それだけではなく、本番環境にモデルが展開されず、本来得られるはずの収益やコスト削減が失われてしまいます。さらに、本番展開されているモデルがビジネス上重要である場合、ダウンタイムは非常に大きなコストになるため（運用リスクと評判リスクの両方が発生します）、いざという時の備えや、過去のバージョンのモデルへのロールバックの戦略は非常に重要です。

Dataikuを使って[プロジェクトとモデルをデプロイする](https://www.dataiku.com/ja/製品/の主要機能/mlops/)際に使用するデプロイヤーノードは、オペレーターが本番稼働されている個々のDataikuプロジェクトとAPIのライフサイクルのバージョンを一元管理できる場所として機能します。チームは、バッチとリアルタイムの両方のスコアリングのためのコード環境とインフラの依存関係を管理することができます。また、バンドルやAPIサービスを開発環境、テスト環境、本番環境とすることで、更新のための強固なアプローチを実現することができます。プロジェクトデプロイヤーの概要については、[こちらの動画](https://videos.dataiku.com/watch/6bMHsu3uTzmvMw8MPmJb4b?)をご覧ください。
[![Dataiku project deployer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/56e4539e-078e-07ad-c337-a70edc6b40de.png)](https://videos.dataiku.com/watch/6bMHsu3uTzmvMw8MPmJb4b?)


最後に、一度導入したモデルが有用かつ正確であり続けるためには、常に再評価・再トレーニングし、新しい特徴量を取り込む必要があります。そこで登場するのが[MLOps](https://qiita.com/Dataiku/items/5f3be6bf5c587fe2be63)です。プロジェクトが本番稼動すると、Dataikuはパイプラインを監視して、すべてのプロセスが計画通りに実行されることを確認し、問題があればオペレーターに警告を発します。

MLオペレーターがモデル展開の決定ができるようにするためのより多くのコンテキストを提供するために、Dataikuにはモデル評価ストア（Model Evaluation Store)があり、過去のパフォーマンススナップショットを自動的に1つの場所にすべて取得します。メトリクスの変化を可視化するチャートや、データまたは予測パターンの変化を調査する自動ドリフト分析があらかじめ組み込まれているため、オペレーターは新たな傾向を発見し、モデルの健全性を評価することがこれまで以上に容易になります。MLモデルは学習された条件を反映するため、すべてのモデルは稼働した瞬間から劣化し始めます。 つまりそれは、いつ、どの程度劣化するかの問題です。

結局のところ、モデルのデプロイ（そして最終的には運用）は、組織レベル、システムアーキテクチャー、デプロイメントの条件・ITレベルの両方で緊密な調整と協力が必要なため、企業にとって実行が非常に困難なものになります。データ分析で優れた成果を上げるには、データへのアクセス、探索、可視化のための堅牢なプラットフォームが必要です。しかし、そのプラットフォームが、MLモデリングや本番環境へのデプロイもできるものでなければ、データから得られる価値を最大化することはできません。このすべてを1つの屋根の下に置くことが、デプロイメントとデプロイメント後の環境を成功させるために重要です。


## モデルの本番活用を進める準備はできていますか？ 
データ準備からMLOpsまで単一のプラットフォームであること、スケールを考慮した設計（コラボレーション、ガバナンス、セキュリティー、アーキテクチャーなど）であることなど、Dataikuの12の主要機能をご覧ください。
<font color="Teal">[**→Dataikuの主要機能とは**](https://www.dataiku.com/ja/製品/の主要機能/)</font>


<br>
<br>

原文： [*What Is Machine Learning Model Deployment?*](https://blog.dataiku.com/what-is-machine-learning-model-deployment)