1. はじめに
- 昨今、AI・機械学習関連技術が基礎研究のフェーズを抜け、製品開発のフェーズにて本番稼働システムに投入・運用されることが多くなるに連れて聞くことが多くなった「MLOps」という概念について、簡単に書きます。
- 本記事ではMLOpsの概要と関連ツールの紹介を記載し、実践的な取り組みについては別途記載します。
2. MLOpsとは
- MLOpsとは 「機械学習プロジェクトを円滑に進めるための取り組みと思想」 だと思っています。(個人的見解)
- = 機械学習の社会実装・実運用化を加速させることを目的に、各機械学習プロジェクトごとに発生する一連のタスクに対して、様々な前提条件(組織、要員、データの特性、環境、コスト等)を考慮し、ベストな手法を模索して実践していくことだと思っています。
- MLOpsの語源としては、「DevOps」からの派生です。従来のシステムに対して適用していたDevOpsという概念を、機械学習システムに対して拡張した概念だと理解しています。(MLOps = ML + Dev + Ops)
- (参考)MicrosoftのDevOpsの定義は下記です。(一部抜粋)開発 (Dev) と運用 (Ops) を組み合わせたものであるDevOpsは、人、プロセス、テクノロジを統合したもので、お客様に継続的に価値を届けます。
DevOpsでは、以前はサイロ化されていた役割 (開発、IT 運用、品質管理、セキュリティ) を連携させて共同作業することで、より優れた信頼性の高い製品を作成することができます。DevOpsカルチャとDevOpsのプラクティスとツールを一緒に導入することで、チームは顧客のニーズに適切に応え、作成したアプリケーションの信頼度を高め、ビジネス目標をよりすばやく達成することができます。
- (参考)MicrosoftのDevOpsの定義は下記です。(一部抜粋)開発 (Dev) と運用 (Ops) を組み合わせたものであるDevOpsは、人、プロセス、テクノロジを統合したもので、お客様に継続的に価値を届けます。
- MicrosoftのMLOpsの定義は下記です。(一部抜粋)Machine Learning操作(MLOps)は、ワークフローの効率を向上させる DevOpsの原則と実践に基づいています。 たとえば、継続的インテグレーション、配信、デプロイです。MLOpsでは、次のことを目標に、これらの原則を機械学習プロセスに適用します。
・ モデルのより迅速な実験と開発
・ 実稼働環境へのモデルのより迅速なデプロイ
・ 品質保証 - その他の定義
- 「機械学習またはディープラーニングのライフサイクルを管理するための、データサイエンティスト、エンジニア、保守運用担当者のコラボレーションおよびコミュニケーションに関する実践手法」(Wikipedia)
- 「データ前処理、モデル開発、デプロイ、運用などを含む機械学習のライフサイクルを管理する技術/知見。」(MLopsコミュニティ)
- 「MLとITの橋渡し」「MLOps は ML システム開発(Dev)と ML システム オペレーション(Ops)の統合を目的とする ML エンジニアリングの文化と手法です。」(Google)
- 「MLOps is the art and science of bringing machine learning to production, and it means many things to many people. 」(ZDNet)
3. 機械学習プロジェクトにおけるワークフロー
- 機械学習プロジェクトにおける一般的なワークフロー

- (参考)Googleが定義する機械学習プロジェクトにおけるワークフロー
- Googleは、自動化のレベル別に3ステップでワークフローを定義しているようです。(リンク先参照)
- MLOps level 0: Manual process
- 自動化を含まない
- MLOps level 1: ML pipeline automation
- MLパイプラインを自動化
- MLOps level 2: CI/CD pipeline automation
- MLパイプラインおよびCI/CDパイプラインを自動化
- MLOps level 0: Manual process
- Googleは、自動化のレベル別に3ステップでワークフローを定義しているようです。(リンク先参照)
4. 機械学習プロジェクトにおける課題
上記ワークフローの各タスクを円滑に遂行していくことを阻害する課題として、例えば下記があります。
- 学習リソースが枯渇して、迅速な実験ができない
- 学習環境のスピーディなスケール
- ex. 並列で実験を回したいが、個別所有のGPUマシンだと1並列しか回せず、共同利用のGPUマシンは混んでいて使えない。(昨日までデータ分析していて、GPUマシンを遊ばせていたのだが。。。)
- ローカルで良い実験結果が出る->本番環境への適用、に時間がかかる
- ローカルで良い実験結果が出る->本番環境への適用、までに発生する様々なタスクの自動化
- (参考)Using MLOps to Bring ML to Production/The Promise of MLOps
- ex. ソフトウェアエンジニア: データサイエンティストさん、実験が再現できないんですが。。。というかノートブック(分析、前処理、学習、評価がオールインワン)ですか。。。
- 実験が再現できず、品質保証ができない
- コード・ハイパーパラメータ・モデル・データ・実験結果の整合性が取れたバージョン管理と再現性の担保
- ex. (PoCからしばらく経って)このモデルが精度は一番良かったはずだけど、処理速度面で課題があるから、やっぱりあの二番目に精度が良かったパターンに差し替えよう。どのくらい精度に差があったっけ?そのときの学習再現できるよね?
5. 機械学習プロジェクトにおける課題を解決するツール
上記課題を解決することを助けてくれるツールとして、例えば下記があります。
基本的には、自動化のメリットが、データサイエンティスト/データエンジニアの作業コスト増というデメリットと比較して上回るケースで採用することになると思います。
機械学習プラットフォーム
- 概要
- 機械学習ワークフローを全体的にカバーするプラットフォーム
- 主なスコープ
- モデル学習、モデル評価、モデルデプロイ
- メリット
- 学習リソースのスピーディなスケールができる
- 本番環境へのデプロイ含め、エンドツーエンドで管理ができる(関連サービスを組み合わせつつ実現する)
- ツール例
実験管理ツール
- 概要
- 実験結果を自動で管理するツール
- 手動ならExcel(スプレッドシート)でやりがちなところ
- 主なスコープ
- モデル学習、モデル評価
- メリット
- コード・ハイパーパラメータ・モデル・データ・実験結果の整合性が取れたバージョン管理と再現性の担保ができる
- 実験結果の一覧化・可視化により、考察を得ることができる
- ツール例
- 参考
パイプライン管理ツール
- 概要
- データパイプライン(データがどこから来てどの処理を経てどこに行くのか)を管理するツール
- 多くはDAG(有向非循環グラフ)で一連の処理を記述する
- 主なスコープ
- データ前処理、モデル学習、モデル評価
- メリット
- 依存関係が複雑になりがちな処理フローを管理できる(コードで管理することができる。Infrastructure as Code)
- 各処理を疎結合することで、デバッグが容易になる+実装を共通化できる
- 実験環境から本番環境への移行がしやすい
- 処理に応じたリソース割り当て(メモリ、GPU有無など)が可能になる(ライブラリによる)
- ツール例
- 参考
6. おわりに
- MLOpsとは「機械学習プロジェクトを円滑に進めるための取り組みと思想」であり、円滑に進めることを阻害する課題を解決すべく、様々なツールが活発に開発・公開されています。