MLOps
ソフトウェア開発工程MLOps とは、ディープラーニングなどの機械学習のライフサイクルを管理するための、データサイエンティスト、エンジニア、保守運用担当者のコラボレーションおよびコミュニケーションに関する実践手法。機械学習 Machine Learning (ML) と、ソフトウェア分野での継続的な開発手法である DevOps とを組み合わせた造語である。
ソフトウェア開発ライフサイクル全体におけるワークロードの管理は、従来からDevOpsの概念があった。機械学習プロジェクトにDevOpsを適用した場合、モデルトレーニング等を含むのCI/CDのプロセス管理やデータサイエンティストとデータエンジニアの職種の役割分担など多数の機械学習特有の課題を考慮する必要が生まれた。その結果DevOpsをベースに機械学習プロジェクトに合理化された手法がMLOpsとして概念化された。
主に実験的な機械学習モデルを本番システムに組み込むプロセスとして用いられる。機械学習モデルは、隔離された実験システムでテスト・開発され、アルゴリズムを起動する準備ができたら、データサイエンティスト、保守運用担当者、機械学習エンジニアの間で MLOps を実践し、アルゴリズムを本番システムに移行する。MLOps は、DevOps や DataOps のアプローチと同様に、自動化を進めて本番モデルの品質を向上させるとともに、ビジネスや規制の要件にも焦点を当てている。MLOps は、一連のベストプラクティスとしてスタートしたが、機械学習のライフサイクル管理のための独立したアプローチへと徐々に進化している。 MLOps は、モデルの生成(ソフトウェア開発ライフサイクル、継続的インテグレーション/継続的デリバリー)、編成、デプロイメントの統合から、健全性、診断、ガバナンス、ビジネス指標に至るまで、ライフサイクル全体に適用される。
MLOps は、ML システム開発(Dev)と ML システム オペレーション(Ops)の統合を目的とする ML エンジニアリングの文化と手法です。MLOps を実践すると、統合、テスト、リリース、デプロイ、インフラストラクチャ管理など、ML システム構築のすべてのステップで自動化とモニタリングを推進できます。
MLOps は、ワークフローの効率を向上させる DevOps の原則と実践に基づいています。 たとえば、継続的インテグレーション、配信、デプロイです。 MLOps では、次のことを目標に、これらの原則を機械学習プロセスに適用します。
MLOps は、機械学習ワークロードにDevOps プラクティスを適用することに基づいて構築された方法論を指します。DevOps は、ソフトウェア開発ライフサイクル (SDLC) 全体でソフトウェアの配信を合理化するために、開発と運用の分野の交差に焦点を当てています。MLOps は、データ サイエンス、データ エンジニアリング、既存の DevOps プラクティスと組み合わせて、機械学習開発ライフサイクル (MLDC) 全体にわたるモデルの提供を合理化することに重点を置いています。
MLOps は、ML ワークロードをリリース管理、CI/CD、および運用に統合する規律です。多くの企業では、ML プロジェクトは、他のチームから隔離された研究チーム内で動作するデータ サイエンティストから始まります。MLプロジェクトは、最初の概念実証の結果で価値を証明するので、企業は当然それらを生産に移したいと考えています。DevOps がソフトウェア開発と運用を統合するのと同様に、MLOps ではソフトウェア開発、運用、セキュリティ、データ エンジニアリング、データ サイエンスの統合が必要です。
機械学習をアプリケーションで継続的に使用する際の課題は、2015年の「機械学習システムにおける隠された技術的負債」と題された論文で取り上げられた。この論文では一般のソフトウェア開発と比較し機械学習システム特有の技術的負債に焦点を当て、エンジニアと研究者がチームとしてこの負債を意識しかつチーム文化の転換が必要であることを説いている。
2017年の調査においてはAI や機械学習を本番環境に導入した組織では、3〜15% の利益率の向上がみられたとの調査もあり、機械学習は市場で着実にシェアを伸ばしていた。2018年の成長予測では、2017年から2018年にかけて機械学習の実装が倍増し、2018年から 2020年にかけてさらに倍増するものと推定されていた。
2018年、GoogleからMLOpsに関するプレゼンテーションを行われた、その後、MLOpsとそれに対するアプローチは、企業における機械学習の複雑さと成長に対処できるソリューションとして、AI / MLの専門家、企業、テクノロジージャーナリストの間では概念の話だけではなく実践的な方法論やベストプラクティスとして注目を得始めた。
主要クラウドベンダーもMLOpsを支援するサービスなどを次々に公表を始めた。2018年、Kubernetes 上での MLOps を促進するため、Google の Jeremy Lewi 氏と David Aronchick 氏によってオープンソースプロジェクト Kubeflow が作られた。同年12月Microsoftは機械学習モデルの構築やデプロイのプロセスの簡略化と短縮化を目的として設計されたAzure Machine Learning Serviceを一般公開している。Amazon社は2017年11月公開の機械学習プラットフォームであるAmazon SageMakerに順次機能を追加し、MLワークロードの統合管理機能を提供している。
2020年には、25,000 以上の Github Star を持つ人気コース  が設立された。
2021年には、MLOps のライフサイクルの標準化や教育のために、シンクタンク  が設立された。
機械学習システムは、データ収集、データ処理、特徴量エンジニアリング、データラベリング、モデル設計、モデルトレーニングと最適化、エンドポイント展開、エンドポイントモニタリングの 8 つに分類される。機械学習のライフサイクルの各ステップは、それぞれ独自のシステムで構築されているが、相互接続が必要である。これらの「ビッグ 8 」は、企業が組織内で機械学習を拡張するために必要な最低限のシステムである。
MLOps のような標準的なプラクティスは、企業がワークフローを最適化し、導入時の問題を回避するのに役立つ。MLOps システムの一般的なアーキテクチャには、モデルが構築されるデータサイエンスプラットフォームと、計算が実行される分析エンジンが含まれ、MLOps ツールは機械学習モデル、データ、結果の移動をシステム間で編成する。
MLOpsの概念を導入する以前の機械学習プロジェクトの主な問題点を下記に挙げる。これらの課題は後述するMLOpsの#特性にて解決への内容を記載する。
機械学習モデルの精度は、利用の開始時点で最も精度がよい。その後、環境が変化を予測をするにつれて悪化する。この現象はコンセプトドリフトとして知られており、機械学習モデルが予測しようとしている目的変数の統計的特性が、予期せぬ方法で時間の経過とともに変化することが原因となる。この問題を解決するには機械学習モデルを固定のモデルではなく、継続的に再訓練することで環境の変化に適応する必要がある。
機械が自ら膨大なデータを学習し答えを導き出すという特性上、その「思考のプロセスが人間には分からない」という問題がある。この問題は特にニューラルネットワークを利用する深層学習で課題になることが多い。ニューラルネットワークはその特性上、隠れ層のノードにて複数の入力を処理し次の隠れ層のノードへ出力することを繰り返し、無限に複雑になる可能性がある。膨大なデータから機械が出力した回答はどのような判断基準でその回答が導き出されたのかが分からない。
CRISP-DMに代表されるような機械学習のモデル構築プロセスではビジネス理解、データ特性の理解、データの前処理、モデルの訓練、モデルの評価といったプロセスを繰り返して完成した精度の良いモデルを本番環境へ適用する。このプロセスはステップや反復が多く時間がかかるものであり、なおかつ収集されたデータが変わるたびにこのプロセスを繰り返すことは非常に手間と時間がかかる課題がある。
前述の機械学習のモデル構築プロセスにコストがかかる問題に付随し、複雑なプロセスを役割の異なるメンバーで推進していかなければならず、品質の低下を招きやすい。運用担当者、データサイエンティスト、データエンジニア間のコラボレーションができていないケースやシステムまたは運用ライフサイクル、ログの取得など、明確なルールが管理されていない場合は品質低下のリスクが高くなる。
MLOpsの特性にはDevOpsを踏襲する特性を含む。MLOpsをシステムに導入している民間企業は以下のような様々な目標を達成しようとする。
=== CI/CD ===
DevOpsの手法でも中核となっているコンセプト。ソフトウェア システム開発における開発サイクルの短縮、開発の迅速化、信頼性の高いリリースができる継続的インテグレーションおよび継続的デプロイを導入する。多くのツールではパイプラインと呼ばれる機能において、反復されるプロセスでなおかつ再利用可能な手順を定義できる。
精度の検証や同じデータ・条件におけるML実験の再現性が重要である。コード、学習データ、およびプラットフォーム全体を記録し、あるいは過去にさかのぼり再実行できる仕組みによって再現性を確立する。
=== ソフトウェアの安定性、品質の向上 ===
MLOpsは自動テスト実行、ソース管理、モデルバージョン管理、再現可能なモデル訓練などのソフトウェアの安定性と品質向上のための機能が包括的に備わる。なお、一般的なソフトウェア開発サイクルにおけるテストに加えて、機械学習プロセスではデータ検証、訓練されたモデル品質評価、モデル検証が必要とされる。また、それらに加えインシデント管理やチケットシステムへの通知と接続された、モデルのトレーニングやデプロイが再現可能な開発環境が統合される。
モデルのトレーニングには、一般的にサイズの大きなデータとモデルが含まれる。そのため、モデルアーキテクチャとパラメータの空間を探索するには、数日から、あるいは数ヶ月かかる場合がある。機械学習の中でも計算リソースを特に必要とされる深層学習やハイパーパラメータの自動チューニングなどにおいて、スケーラブルに管理できるアーキテクチャであることが求められる
=== チームによるコラボレーション ===
DevOpsでは開発者と運用保守担当者が焦点だが、MLOpsではデータサイエンティスト、エンジニア、保守運用担当者を主要なメンバーとする。機械学習の開発運用を実行する組織の成熟度モデルに応じて段階的な導入を実施して継続的な改善を目標とする。
機械学習のモデル構築には実験的性質があり、さまざまなアルゴリズム、モデリング技術、パラメータ構成を試して、課題への最適なモデルをできる限り特定する必要がある。コードの再利用性を最大化しつつ、定型的なプロセスは自動化することで高速なモデル訓練を実行する。また、モデルを利用するアプリケーションもデプロイへ統合することで機械学習サービスを継続的にロールアウトできる。
実験の完了、モデルの登録、モデルデプロイ完了、コンセプトドリフトの検出、パフォーマンス警告などの監視やアラート機能が統合される。また、内部プロセスを合理化することでガバナンスポリシーをサポートし、アクセス制御管理を導入することでセキュリティ機能を統合する。
作成されたモデルの判定根拠がブラックボックスになることを避けるため、説明可能なAIとして、データやモデルのトレーサビリティ確保、再現可能かつ検証可能なモデルや実験環境を作成する。