キーワードで検索

今日を知り、明日を変えるシステム運用メディア

MLOpsとは?AIシステムの構築におけるベストプラクティスを解説

MLOpsとは?AIシステムの構築におけるベストプラクティスを解説

AIを組み込んだサービスや製品などを開発・運用する場合に、必ず押さえておきたいのが「MLOps(エムエルオプス)」という考え方です。

DevOpsの機械学習モデル版ともいえるMLOpsですが、具体的にどのようなアプローチなのでしょうか。今回は、MLOpsについて、その概要やプロセス、実現方法を詳しくご紹介します。

MLOpsとは?

MLOpsとは?

MLOps(Machine Learning Operations)は、機械学習モデルの開発から運用までのライフサイクルを管理し、効率化するための手法です。開発と運用の連携を強化する「DevOps」と同じく、機械学習モデルにおける開発から運用までの一連のプロセスを一体化・最適化することを目指します。

MLOpsが注目される理由

近年、AI開発プロジェクトが増えるとともに、プロジェクトを効率化し、成果を挙げるためのアプローチとしてMLOpsという考え方が注目されるようになりました。

MLOpsには以下のような特徴があり、現代的なビジネスにおいて有用なアプローチといえます。

迅速なデプロイの実現

MLOpsにより、機械学習モデルの開発から本番環境へのデプロイまでのプロセスを自動化し、迅速に行うことができます。これにより、新しいモデルや更新されたモデルを迅速にリリースすることが可能となり、ビジネスの速度を高められます。

機械学習モデルの信頼性と精度の向上

MLOpsは、機械学習モデルの継続的な監視と自動的な再学習を行うことで、モデルの信頼性と精度を維持・向上させます。これにより、機械学習モデルの性能は長期的に維持され、予測や推論の品質が保たれます。

効率的なリソース管理

MLOpsにより、計算リソースやデータリソースを効率的に管理できます。各種リソースの最適化により、サービスの運用のために必要となるコストを削減しつつ、パフォーマンスも最適化されます。

このように、MLOpsは機械学習を組み込んだサービス・製品のプロジェクトにおいて有効なアプローチであり、GoogleやAWSなど、ビッグテック企業をはじめとして一般的に採用されているものです。

MLOpsとAIOpsの違い

MLOpsと似た言葉として、AIOps(Artificial Intelligence for IT Operations)という用語を聞かれたことがある方もいらっしゃるのではないでしょうか。両者は混同しやすいですが、機械学習モデルの開発プロジェクトに適用するMLOpsに対して、AIOpsは「システム運用業務においてAIを活用し、効率化を図るもの」です。両者は異なる概念なので注意しましょう。

AIOpsは、IT運用の効率化と自動化を目指すものです。AIOpsでは機械学習を活用して、IT環境の監視、イベント管理、問題の予測と検出、インシデントの解決などを行います。これにより、システム運用管理のパフォーマンスを向上させ、システム障害の予防や迅速な対応が可能になります。

MLOpsは機械学習モデルの管理に特化し、AIプロジェクトの品質と効率を向上させるための手法であるのに対し、AIOpsはIT運用全般の最適化と自動化を目指す手法であるという点に違いがあります。

機械学習モデル開発プロジェクトにおける一般的なプロセス

機械学習モデル開発プロジェクトにおける一般的なプロセス

MLOpsの具体的な流れをご紹介する前に、以下では機械学習モデルの開発プロジェクトにおける開発から運用までの一般的なプロセスを改めてご紹介します。

プロセス説明
データ抽出データソースより機械学習のために必要となるデータを抽出します。
データ分析モデルに必要なデータを分析し、スキーマの特徴を理解します。
データの準備データのクレンジングを行いつつ、トレーニング用データ、検証用データ、テスト用データに分け、データの変換と特徴量エンジニアリングを実施します。
モデルのトレーニング機械学習アルゴリズムを実装し、ハイパーパラメータの調整を通じてモデルを調整しつつ、トレーニングを行います。
モデルの評価テスト用データにてモデルの性能を評価します。
モデルの検証モデルがリリースに足るか、精度や品質を確認します。
モデルの提供検証したモデルをデプロイし、サービスとして提供します。
モデルのモニタリングモデルの性能をモニタリングし、必要に応じて改善を行います。

後述のとおり、これらの各プロセスを、MLOpsのプラクティスに沿って自動化・効率化していきます。

成熟度別のMLOpsの適用方法

成熟度別のMLOpsの適用方法

Google社では、MLOpsの成熟度をレベル0~2の3段階で評価しています※1。以下では、この定義も参照しつつ、機械学習モデルの開発・運用プロジェクトにおいて、どのようにMLOpsが効率化を果たすのかを解説します。

※1参考:Google Cloud Architecture Center「MLOps: ML における継続的デリバリーと自動化のパイプライン

MLOps レベル0

MLOps レベル0の段階とは、全てのプロセスが手動で行われている状態です。データの抽出や準備、機械学習モデルのビルドは手動で行われ、リリース作業も手作業で行います。機械学習モデルの開発を開始した多くの企業においては、まずはこの段階からスタートするはずです。

MLOps レベル0の段階は、モデルの調整や再トレーニングなどをほとんど行わない場合や、モデルのリリース頻度が低い場合には、十分に機能しますが、継続的な改善を行うためには不向きです。各プロセスの作業に時間が掛かり、機能のアップデートやモデル再学習後のリリースには時間もコストも必要となります。

MLOps レベル1

MLOps レベル1の段階では、機械学習モデルの開発プロジェクトにおける一連のプロセスを自動化し、モデルのトレーニングを継続的に行えるようにします。

新たに収集したデータを用いて、本番環境のモデルを自動で再トレーニングするためには、データの収集から分析、モデルの再トレーニング、検証といった各手順を自動化する必要があります。具体的には以下の取り組みが必要です。

テストの自動化

トレーニングしたモデルに対してテストが自動で行われるようにします。これにより、機械学習モデルを本番環境に移行する作業が効率化されます。

継続的トレーニング(CT)

機械学習モデルを運用する中で得られた新しいデータを使用し、本番環境にデプロイしたモデルが自動的に再トレーニングされるように構成します。

開発環境と運用環境の共通化

開発環境やテスト環境と、本番環境の環境や構成、作業手順を同一のものとします。

コンポーネントのモジュール化

システムを構成するコンポーネントはコンテナなどを利用してモジュール化し、迅速なデプロイと運用を実現できるようにします。

モデルの継続的デリバリー

本番環境の機械学習モデルを再トレーニングした後、サービスに継続的に組み込めるようにデプロイ手順を自動化します。

これらの自動化の取り組みを行うことで、機械学習モデルの再トレーニングからデプロイまでを高速化できます。一方で、特徴量エンジニアリングによる調整や、モデルアーキテクチャの変更など、継続的なモデルの改善を行うためには、MLOps レベル2への移行が必要です。

MLOps レベル2

MLOps レベル2では、DevOpsにおいても導入される継続的インテグレーション(CI)と継続的デリバリー(CD)までを一連のプロセスに組み込みます。

具体的には、それぞれ以下の自動化を行います。

継続的インテグレーション(CI)

継続的インテグレーションは、新しいコードがソースコードリポジトリにcommitまたはpushされると、自動的にビルドからテスト、パッケージ化までが行われるように自動化するものです。以下の各プロセスを自動化することで、実現できます。

  • 特徴量エンジニアリングにおけるロジックの単体テスト
  • モデルに実装された処理の単体テスト
  • モデルトレーニングが収束することのテスト
  • NaN値が生成されないことのテスト
  • コンポーネント間の結合テスト

継続的デリバリー(CD)

継続的デリバリーは、修正されたモデルを本番環境へ継続的に提供できるように、デプロイプロセスを自動化するものです。継続的デリバリーを実現するためには、以下がポイントとなります。

  • モデルに必要なパッケージが本番環境に導入されていることや、動作のために必要となるメモリ、コンピューティングリソースが使用可能であることなどを確認する。
  • 機械学習モデルのAPIを呼び出し、期待するレスポンスが得られることを確認する
  • 提供するサービスのパフォーマンスをテストする
  • データを検証し、モデルに求められる性能目標を満たしていることを確認する
  • 自動または半自動で試験環境にデプロイし、最終的に本番環境に手動でデプロイする形でテストを行う

MLOpsで利用できるツール

MLOpsで利用できるツール

MLOpsのプラクティスに沿って自動化を進めるためには、各種ツールの利用が有効です。以下では、MLOpsの実現に利用できるツールの例をご紹介します。

商用ツール

主要なクラウドベンダーが提供する機械学習サービスにおいては、MLOpsの考え方に沿った機能が用意されています。以下の各ツールを利用することで、自然とMLOpsの手法を採用できます。

Amazon SageMaker

Amazon SageMakerは、AWS上で利用できるマネージド型の機械学習サービスです。データの準備、モデルのトレーニング、チューニング、デプロイ、監視まで、機械学習のワークフロー全体の機能が用意されています。

Amazon SageMakerには、「Amazon SageMaker MLOps※2」として機械学習モデルのプロセスを自動化する機能が用意されており、これを利用することで機械学習モデルを簡単にトレーニングし、テスト、デプロイまで実施できるようになります。

※2参考:AWS「MLOps 用 Amazon SageMaker

Azure Machine Learning

Azure Machine Learningは、Microsoft Azureのクラウドプラットフォーム上で利用できる機械学習サービスです。モデルのトレーニングからデプロイ、監視まで、エンドツーエンドの機械学習プロセスをサポートします。

Azure Machine Learningには、機械学習パイプラインの構築やデプロイ、監視までMLOpsのための一連の機能が用意されており、これらを利用することでMLOpsを実現できます※3。

※3参考:Microsoft「Azure Machine Learning を使用した MLOps

Google Vertex AI

Google Vertex AIは、Google Cloudが提供するAIプラットフォームで、機械学習モデルの構築、トレーニング、デプロイを簡単に行うためのツールセットです。Google Vertex AIのAutoML機能を活用することで、専門知識がなくても高性能なモデルを作成できます。

Google Vertex AIでは、Vertex AI MLOpsツールとして、モデルのモニタリング、アラート、診断などの機能が用意されています※4。

※4参考:Google Cloud「Vertex AI での MLOpsvv」

OSS

ここまでご紹介したサービス以外に、MLOpsを実現するためのオープンソースソフトウェアも存在します。以下では、代表的なツールとしてMLflowとTensorFlow Extendedをご紹介します。

MLflow

MLflowは、機械学習のライフサイクルを管理するためのオープンソースプラットフォームです。データの準備、モデルのトレーニング、デプロイ、トラッキング、共有など、多岐にわたる機能が提供されます、

MLflowはPythonベースで構築されており、他の言語やライブラリと容易に統合できる点が特徴です。

TensorFlow Extended

TensorFlow Extended(TFX)は、Googleが開発した機械学習パイプラインを構築するためのオープンソースライブラリです。TensorFlowをベースにしており、データの前処理、モデルのトレーニング、評価、デプロイ、監視まで対応します。

TensorFlow Extendedは、コンポーネントの再利用性とスケーラビリティを重視して設計されており、大規模な機械学習プロジェクトに適しているという特徴があります。

まとめ

今回は、機械学習モデルの開発プロジェクトにおいて押さえておきたいMLOpsについて詳しくご紹介しました。

DevOpsという考え方は日本においても根付きつつあります。一方で、MLOpsについてはまだまだ浸透していないのが現状といえるでしょう。

機械学習モデルの開発プロジェクトにおいては、データの収集・蓄積やリリース後に収集されたデータを利用した再学習など、通常のアプリケーション開発プロジェクトとは異なる要素が含まれます。

機械学習モデルを利用したサービス・製品を効率的に開発・運用するためには、MLOpsという考え方を押さえておくべきです。ぜひご参考ください。

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録