MLOpsとは
「MLOps」とは、機械学習(ML)と、運用(Operations)を組み合わせた造語で、優れた機械学習システムを実現するために、それぞれのチームが協調し合う管理体制(機械学習基盤)を築くこと。またはその概念全体を指します
MLOpsの元になったのは、ソフトウェア開発において開発(Development)チームと運用(Operations)チームが連携する開発手法を指す「DevOps」となります。
MLOpsの特徴
MLOpsは、DevOpsをベースとしながらも、機械学習ならではの開発・運用における問題に対処する点が特徴になります。機械学習を取り入れたシステムは、ソースコード/学習/検証データ/モデル/パラメータなどの構成要素が多いため、管理や検証が難しいです。
この問題に対処するために、複雑な構成要素を効率的に管理するための仕組み(運用のパターン)を構築することがMLOpsの特徴の一つとなります。
また、従来のDevOpsにないMLOpsの特徴として、運用開始後も定期的にモデルの学習を行う継続的トレーニングがあります。これは、学習パイプラインを構築し、学習の自動化の仕組みを作ることで実現します。
MLOpsの必要性
機械学習プロジェクトにおいてMLOpsが必要な理由として、以下の2点が挙げられます。
①機械学習モデルは運用時の環境変化にともない求める品質を満たさなくなる可能性があるため、運用されている機械学習モデルは、開発時と同じ性能を示すとは限りません。運用開始当初は高いパフォーマンスを示したモデルでも、運用時に入力されるデータの分布が変化すること(データドリフト)で、時間の経過とともにパフォーマンスが落ちる可能性があります。そのため、運用時の環境変化を検知し、モデルの更新を自動的に行うまたは次世代モデルの構築を行う仕組みが必要です。したがって、機械学習プロジェクトにおいて機械学習チーム、開発チーム、運用チームが連携し、継続的にフィードバックや改善を行うことが重要となります。
②さまざまな役割の技術者がシステムの開発・運用に関わるため通常、自社で機械学習モデルを作るためには、多くの技術者がプロジェクトメンバーとして関わることになります。データの分析・加工やモデリングなどはデータサイエンティストが行います。学習したモデルを動かすためには、インフラやサーバサイド・フロントエンドのエンジニアが実行環境やアプリケーションを整備する必要があり、担当が異なる多数の技術者が共同作業するため、チーム間での連携が上手くいかなかったり対立が生じやすくなったりします。そのため、各チームの開発工程と運用工程をパイプライン化することで、データ処理やコミュニケーションを円滑化したり、デプロイなどの自動化により生産性向上を実現するという「MLOps」の考え方が重要になってきます。
MLOpsのメリット
MLOpsを実践することで、機械学習を取り入れたシステムを効率的に開発・運用できるというメリットがあります。モデルのパフォーマンス監視や更新(適切なタイミングでの再学習など)を自動化することで、多くのモデルを迅速にデプロイし、より短い時間で機械学習の品質を上げていくことが可能になります。また、人的コストの削減や、短い周期でシステムのアップデートが可能になるため、サービスレベルの向上にもつながります。
MLOpsの課題
MLOpsにはまだまだ課題も多くあります。下記で紹介する3つの課題を把握した上で、導入の検討を進めていきましょう。
①時間と人的コストがかかる
機械学習モデルの開発・運用には、データ分析、モデル開発、モデルのデプロイ、管理や監視など、複雑な作業が多いため、時間と人的コストがかかります。ツールを開発する際の高額な費用や多くの技術者のリソースが必要であったり、AIの運用知識をもつエンジニアを集める必要があるなど、運用するための環境を整えるだけでもかなりの時間とコストを要することになります。
②ツールの選定が難しい
機械学習基盤を整備するためには、さまざまなツールが必要になります。ビジネス上で実現したいことのために、各ツールでできること、その他のソフトウェアやプラットフォームとの互換性などを考慮して、プロジェクトに合ったツールを選ぶ必要があります。MLOpsは、機械学習モデルの開発・運用のサイクルを円滑に回すことを目的としています。開発側と運用側が縦割りになっていて連携が取りづらい場合、円滑なサイクルの妨げになります。そのため、開発側と運用側が密に連携を取れるような組織体制が必要になります。
MLOpsのプロセス
データ抽出から機械学習モデルの開発・運用までのプロセスは基本的に以下の通りで、
1から6が開発段階に、7と8が運用段階に相当します。
Googleが提示するMLOpsの3つのレベル
GoogleはMLOpsの成熟度として、上記プロセスの各手順がどれだけ自動化されているかを3つのレベルに分けています。
レベル0:手動プロセス
各手順が手動で実行され、手順間の移行も手動で行う状態
レベル1:MLパイプラインの自動化
開発環境、本番環境のMLパイプラインの自動化により、モデルの継続的トレーニング(CT)を実現した状態
レベル2:CI/CDパイプラインの自動化
レベル1のCTに加えて、パイプラインのビルド、テスト、デプロイを自動化すること(自動的なCI/CDの実現)で、より迅速にパイプラインを更新できる状態
※CI/CD…継続的インテグレーション(CI)と継続的デリバリー(CD)をまとめた表現
クラウドベンダが提供するサービス
データの収集からモデルの構築、モニタリングまでを統合されたプラットフォームで行える
サービスは下記になります。
サービス名 | 提供会社 |
Google Vertex AI | |
Amazon SageMaker | Amazon |
Azure Machine Learning | Microsoft |
MLOps | DataRobot |
OSSとして提供されているツール
以下のツールはOSS(オープンソースソフトウェア)として提供されているため、誰でも簡単に利用できます。
・MLflow
・Metaflow
・Tensorflow Extended(TFX)
Pythonの環境に導入する場合は、pip(Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システム)などを利用して無料でインストールできます。しかし、クラウドサービスと比較すると、書くべきコードの量が多くなるといったデメリットがあります。
MLflowを使うと、パラメータや評価指標をダッシュボードで確認するなど、実験管理を行えます。
Metaflowを使うと、機械学習のワークフローをパイプラインとしてまとめたり、パイプラインの途中の状態を確認したり、その状態から再実行したりできます。
Tensorflow ExtendedもMetaflowのようにパイプラインを作成できます。Tensorflowがベースになっているのが特徴です。
各ツールについてご紹介しましたが、とはいえツールを導入すれば終わりではなく、その後の運用などが大事になってきますので、MLエンジニアやOpsエンジニアが慎重に検討する必要があります。
現在MLOpsで悩まれている方、今後検討中の方!grasysにご相談ください!