本記事では、MLOpsの基本的な概念やMLOpsのプロセスについて解説します。
近年では、機械学習を活用したシステムが一般的となり、サービスとして広く公開されるようになりました。そして、機械学習システムの開発と運用について考える際に、MLOpsという仕組みが重要になってきます。
MLOpsとは、機械学習(Machine Learning)と運用(Operations)の二つを組み合わせた言葉です。機械学習担当者・システム開発担当者・運用担当者が密接に連携することを目的とした取り組みを指します。MLOpsは、機械学習モデル用のデータの収集や前処理、モデルの開発とテスト、そして機械学習システムのデプロイや運用といった一連のライフサイクルを管理する技術です。
MLOpsという用語は、DevOpsという概念から派生しており、DevOpsの手法に機械学習システムを追加したものといえます。DevOpsは開発(Development)と運用(Operations)を組み合わせた言葉で、ソフトウエア開発担当者と運用担当者が連携する取り組みを指します。新機能の開発と安定したシステム運用を両立させるための開発手法です。
DevOpsでは、開発担当者と運用担当者の意見の食い違いを解消し、ソフトウエア開発とリリースを迅速に行うことを目指します。そのため、CI/CD(継続的インテグレーション/継続的デリバリー)と呼ばれる、ソースコードの変更を自動でテストし、自動でデプロイする仕組みを採用します。そしてMLOpsは、DevOpsの考え方を拡張して、機械学習の開発や運用に関する問題を組み込んだ手法といえます。
機械学習を用いたシステムに起こりうる課題に対して、MLOpsはその解決策として活用されます。
MLOpsの元となるDevOpsは、ソフトウエアの開発担当者と運用担当者の連携を重視しています。そしてMLOpsはDevOpsに機械学習システムの開発担当者が加わる形で連携を強化します。MLOpsでは、DevOpsでの開発に加えて、機械学習特有のデータ収集や学習モデルの設計といった要素が含まれています。
MLOpsなどでの機械学習モデルを設計するエンジニアは、データサイエンティストやAIエンジニアと呼ばれています。彼らがシステムの開発担当者や運用担当者と連携することにより、プロジェクトの円滑な進行を期待できるでしょう。
収集したデータを用いて機械学習モデルを開発し、テストを通過したシステムをデプロイするというのが一般的な機械学習のシステム開発手順です。しかし、時間が経つにつれてデータの内容が古くなるため、最新のデータを用いた機械学習モデルの再調整が必要になることもあるでしょう。
そこでMLOpsの仕組みを導入しておくと、データの収集から機械学習モデルの再調整、デプロイまでの一連の流れを迅速に完了し、結果としてモデルの精度を強化しやすくなります。また、開発サイクルが短縮されるため、一連の業務の効率化と品質維持も期待できます。
Googleが提唱するMLOpsのプロセスについて、その三つのレベルをご紹介します。プロセスのレベルが高くなるほど、より自動化が実現できるようになります。なお、必ずしもプロセスをすぐに高いレベルへ移行する必要はなく、できる範囲で段階的に実装していけばよいでしょう。
レベル0は、データの収集や前処理、モデルの開発、テスト、デプロイといった各手順を手動で行います。機械学習モデルの変更頻度は低く、デプロイは年に数回程度を想定しています。CI/CDという、システムの変更内容のテストやデプロイを自動化する仕組みは含まれていません。機械学習を活用する大半の会社は、このレベル0の段階に留まっていると言われています。
レベル1は、ML(機械学習)パイプラインの自動化が進んだレベルです。データの収集や前処理、モデルの開発、テストまでの手順が自動化され、機械学習モデルの継続的なトレーニングが可能となります。
ただし、MLパイプラインを構築するためには、機能を実現する各コンポーネントが再利用および構成可能で、MLパイプライン間で共有できることが必要です。パイプラインのデプロイは自動化されていないため、パイプラインやコンポーネントのテストは手動で行う必要があり、デプロイには時間がかかります。
レベル2ではCI/CDパイプラインが自動化され、本番環境においてシステムを迅速、確実に更新できるようになります。新しい機械学習のアイデアを実装したら、それが自動的にビルドやテスト、デプロイまで完了します。こうした自動化により、データやビジネス環境が急速に変化することがあっても、迅速な対応が期待できるでしょう。
MLOpsは、機械学習システムの開発担当者と運用担当者が連携する取り組みであり、DevOpsの拡張ともいえます。これにより、機械学習モデルの設計およびソフトウエアの開発と運用のサイクルがスムーズに進行すると期待できるでしょう。
MLOpsの仕組みを自動化すると、最新データを用いた機械学習モデルの再調整が容易になります。MLOpsのレベルは、すべて手動のレベル0からCI/CDパイプラインまで自動化されたレベル2まで存在します。すぐにレベル2を目指すのは困難なため、できる範囲で段階的に自動化を実現していくとよいでしょう。