機械学習モデルの開発から運用化までの一連のライフサイクル管理において、重要な役割を果たす「MLOps」。機械学習が数多くのプロダクトに利用されはじめた今、今まで機械学習と縁の遠かった業界からも注目を集めはじめています。
ここでは、MLOpsとは何か、なぜ注目を集めているのかを解説すると共に、DevOpsやAIOpsとの違いや、MLOpsを実現するために使われる代表的なプラットフォームの紹介をしていきます。
まず、MLOpsがどのようなものなのか、なぜ注目を集めているのかをみていきます。
MLOpsは「Machine Learning(マシンラーニング=機械学習)」と「Operations(オペレーション)」を組み合わせた造語です。MLOpsの元になったのは、ソフトウェア開発において開発(Development)チームと運用(Operations)チームが連携する開発手法を指す「DevOps」です。
機械学習の開発から実装、運用までを円滑に行うには、開発チームと運用チームの円滑なコミュニケーションが必要です。しかし、「開発」が目的の開発チームと、「維持・保守」が目的の運用チームでは、それぞれが個別に扱われがちでした。
しかし、機械学習においてリリースしたプロダクトが完璧であることは基本的になく、運用チームが実際の運用で得たデータを、開発チームにフィードバックし、改善を続けることが大切です。MLOpsは、そのためのベストプラクティスとしてDevOpsをベースに生まれました。
多くの企業が機械学習技術の検証を繰り返すなか、近年、機械学習がどのような領域で活用できるのか、ある程度見えてきました。そして、機械学習を用いたシステムやプロダクトを本格的に運用するにあたり、従来のDevOpsの方法論では難しいことがわかってきました。
従来のソフトウェア開発では、ユーザーの操作に対するソフト側の動作はある程度決まっているため、ソフト側の動作が正しいかを判断することも比較的容易でした。しかし、機械学習の場合はシステム側が学習するため、入力するデータ形式が同じでも出力されるデータは徐々に変化していきます。そのため、システムが出力したデータが正しいかを判断することが、従来に比べ格段に難しくなっています。
また、機械学習の領域は、従来のソフトウェアやインフラ運用とは基盤のアーキテクチャ、利用するライブラリ構成など、さまざまな点で異なっており、その他の各プロセスも独特です。そのため、機械学習基盤を作るためのベストプラクティスが求められており、それがMLOpsに注目が集まる理由となっています。
MLOpsは、まだ新しい概念ということもあり、捉え方がまちまちなのが現状です。組織によっても定義はバラバラで、「機械学習基盤を作ること」を指すこともありますし、「エンジニアの知見をプロダクトとしてリリースする仕組み」と捉えることもあります。そのため、今後も定義が変化していく可能性があります。
参考として、「Google」と「Microsoft」、そして「Amazon」におけるMLOpsの定義を以下に掲載します。世界をリードするビッグ・テックの考えは、今現在におけるMLOpsの定義を捉えるための手助けになるはずです。
MLOps は、MLシステム開発(Dev)と MLシステム オペレーション(Ops)の統合を目的とする MLエンジニアリングの文化と手法です。MLOps を実践すると、統合、テスト、リリース、デプロイ、インフラストラクチャー管理など、MLシステム構築のすべてのステップで自動化とモニタリングを推進できます。
出典:MLOps: 機械学習における継続的デリバリーと自動化のパイプライン|Google Cloud
MLOps は、ワークフローの効率を高める DevOps の原則と実践に基づいています。 たとえば、継続的なインテグレーション、デリバリー、デプロイなどです。 MLOps では、次のことを目標に、これらの原則を機械学習プロセスに適用します。
・モデルの実験および開発速度を上げる。
・モデルをより迅速に本番環境にデプロイする。
・品質保証とエンドツーエンドの系列追跡。
出典:MLOps: Azure Machine Learning を使用したモデルの管理、デプロイ、系列追跡、監視|Microsoft Docs
MLOpsは、DevOpsプラクティスを機械学習ワークロードに適用することに基づいて構築された方法論を指す。
(中略)
DevOpsがソフトウェア開発とオペレーションを統合するのと同様に、MLOpsはソフトウェア開発、オペレーション、セキュリティ、データエンジニアリング、データサイエンスを統合する必要があります。
MLOpsと似た言葉に、DevOpsやAIOpsといったものがあります。しかし、実際に内容が似ているものもあれば、まったく違うものもあります。
先述の通り、DevOpsは開発(Development)チームと運用(Operations)チームが互いに協力することで、システムやソフトウェアのビジネス的な価値を高めることを目的とした一連の概念のことを指します。
MLOpsは、DevOpsの考え方を、機械学習の開発・運用、そこで取り扱われるデータの扱いにまで拡張させたものです。基本的な概念は同じですが、その中身は異なります。
例えば、MLOpsにしかないものに、機械学習モデルの劣化を監視する「モデルモニタニング」があります。機械学習モデルは、時間の経過とともに、予期しない理由で精度が低下していくことがあります(コンセプトドリフト・モデルドリフト)。こうした状態に陥った機械学習モデルは作り直す必要があり、それを自動で検知するのが「モデルモニタニング」です。
モデルモニタリングはDevOpsにはない概念で、MLOpsにおいても実用されているケースは多くありません。今後に期待がかけられているもののひとつです。
AIOpsは、米国の調査会社であるガートナーが2016年に提唱した概念で、「Artificial Intelligence for IT Operations」、すなわち「IT運用のための人工知能」という意味を持ちます。
AIOpsの目的は、今まで人の手で対処していたシステム運用などの作業を、データや分析を通して自動化していくことです。そのための手段として、各種ビッグデータやAI、また機械学習を利用しますが、目的はあくまで、システム運用の問題を自動で早期発見したり、トラブルの原因を素早く究明し対処したりといったことにあります。
DevOpsとMLOpsは近しい関係にあり、どちらも手法及び概念を指していますが、AIOpsは「AI(人工知能)」の使い方に関する定義となっており、意味合いが異なります。
こちらの記事では、AIOpsについてより詳しく掘り下げて紹介しています。AIOpsに期待されていることや、導入のメリットなどを解説しているので、ぜひ、合わせてご覧ください。
MLOpsを実際に行う場合、多くのケースでGoogleやMicrosoft、Amazonが提供しているツールが利用されますが、それはなぜでしょうか。
MLOpsを実際に行う場合、自社でそのシステムを開発できる組織は多くありません。技術力や工数の問題、コストの問題などさまざまですが、これらの問題は一般に提供されているツール(プラットフォーム)を利用することで大幅に軽減できます。
これらのプラットフォームの中にはオープンソース化されたものもあり、そういったものを利用すれば他の開発者やサードパーティの参加も期待できます。また、ここで紹介する大規模なプラットフォームは実際に利用している人からの情報も多く、また、カスタマイズ性も極めて高くなっています。
ここからは、MLOpsに利用される代表的なツールを紹介しましょう。
GoogleによるMLOpsのためのワークフロー「Vertex AI」は、Googleが提供するGCP(Google Cloud Platform)の1サービスとして提供されています。
GCPには、AIや機械学習に関するサービスがいくつも存在していますが、2021年5月にそれら複数のサービスをまとめ、統合されたUIおよびAPIで機械学習を構築できるようになりました。
他のツールに比べ、サービスの粒度が揃っていること、機能を把握しやすいことがアドバンテージと評価されています。
Azure Machine Learningも、Microsoftが提供するクラウドコンピューティングサービス「Azure」のサービスとして提供されます。
機械学習やAIに関するサービスが充実しており、画像やテキストの解析などの基本的なものだけでなく、個別の課題を解決する機能が充実しており、例えば感情とトピックの理解などの高度な処理にも対応します。
他のツールに比べると、機械学習及びAIサービスに関する機能が細かく深いことが特徴といえそうです。
SageMakerは、世界でもっとも有名なクラウドコンピューティングサービス「AWS」のサービスのひとつとして提供されています。
その内容は、「AIに関するサービス」「ML/MLOpsに関するサービス」「インフラストラクチャー」の3つに分かれており、また、他のサービスに比べてよく使われるサービスを優先して充実させている傾向があるとされています。
なお、Vertex AIやAzureがノーコードのインターフェースに対応しているのに対し、これまでSageMakerは対応していませんでした。しかし、2021年11月にAmazon SageMaker Canvasが追加されたことで、ノーコードでの機械学習開発にも対応しました。
機械学習を用いたプロダクトの大半は、リリースして終わりではなく、リリース後も進化をし続けることになるでしょう。そのとき、開発チームと運用チームの協働は必須であり、スムーズなサイクルの確立には、MLOpsの存在が欠かせません。
機械学習やAIは急速に進化する分野であり、1年後、2年後に急激なブレイクスルーがあり状況が一変する可能性もあります。しかし、そういったことがなければ、MLOpsは今後しばらくの間、注目を集める存在であり続けることでしょう。