【学習記録】Googleのドキュメントを読んでMLOpsについて調べた

業務で機械学習エンジニアの方と連携を取ることが増えてきそうなので、MLOpsについて調べました。
機械学習そのものの基礎も別で勉強する予定です。

以下の記事の内容を読みます。

cloud.google.com

このドキュメントでは、機械学習(ML)システムの継続的インテグレーション(CI)、継続的デリバリー(CD)、継続的トレーニング(CT)の実装と自動化について説明します。

CI/CDは馴染みがありましたが、継続的トレーニングをCTと呼ぶのは初めて知りました。

次の図に示すように、実際の ML システムの中で ML コードで構成されているものはごく一部です。必要となる周辺要素は膨大で複雑です。
この図> では、システムの残りの部分は、構成、自動化、データ収集、データ検証、テストとデバッグ、リソース管理、モデル解析、プロセス管理とメタデータ管理、サービス インフラストラクチャ、モニタリングから構成されます。

上記の中で言えば、自動化、テストとデバッグ、サービス インフラストラクチャ、モニタリングあたりはバックエンドエンジニアの文脈でも理解しやすい気がします。

DevOps は、大規模なソフトウェア システムの開発と運用における一般的な手法です。この手法では、開発サイクルの短縮、開発の迅速化、信頼性の高いリリースが可能です。これらの利点を享受するには、ソフトウェア システム開発における 2 つのコンセプトを導入します。

継続的インテグレーション(CI) 継続的デリバリー(CD) ML システムはソフトウェア システムであるため、同様の手法を適用して、大規模な ML システムを確実にビルドして運用できます。

CI/CDの概念はWeb開発におけるDevOpsと同じように重要な概念になりそう。

ただし、ML システムは次の点で他のソフトウェア システムと異なります。

チームのスキル: ML プロジェクトのチームには通常、探索的データ分析、モデル開発、テストに注力するデータ サイエンティストや ML 研究者が含まれます。これらのメンバーが、本番環境クラスのサービスをビルドできる経験豊富なソフトウェア エンジニアではない場合があります。

機械学習エンジニアとは専門性が異なるので、本番環境へのデプロイを行うCI/CDパイプラインの構築や本番環境の安定稼働などはMLOpsエンジニアの対応範囲になると思われます。

開発: ML には実験的性質があります。さまざまな機能、アルゴリズムモデリング技術、パラメータ構成を試して、問題に最適な方法をできるだけ早く見つける必要があります。何が機能し、何が機能しなかったかを追跡して、コードの再利用性を最大化しながら再現性を維持することが課題となります。

開発: ML には実験的性質があります。さまざまな機能、アルゴリズムモデリング技術、パラメータ構成を試して、問題に最適な方法をできるだけ早く見つける必要があります。何が機能し、何が機能しなかったかを追跡して、コードの再利用性を最大化しながら再現性を維持することが課題となります。

テスト: ML システムのテストは、その他のソフトウェア システムのテストよりも複雑です。一般的な単体テストと統合テストに加えて、データ検証、トレーニングされたモデル品質評価、モデル検証が必要です。

開発とテストに関しては、実験的な性質がある点で複雑度が増す印象。
モデルの品質評価は何を基準に評価するのかまだ自分ではわからないのですが、このあたりを機械学習の基礎を学んで現場で要件を確認することで対応できるようになると良さそう。

デプロイ: ML システムでのデプロイは、予測サービスとしてオフラインでトレーニングした ML モデルのデプロイのようにシンプルではありません。ML システムでは、マルチステップ パイプラインをデプロイして、デプロイモデルを自動的に再トレーニングする必要があります。このパイプラインにより複雑さが増し、データ サイエンティストによるデプロイの前に手動で行われる手順を自動化して、新しいモデルのトレーニングと検証をする必要があります。

本番環境: ML モデルは、最適化されていないコーディングだけでなく、絶えず変化するデータ プロファイルのためにパフォーマンスが低下する可能性があります。つまり、従来のソフトウェア システムよりも多くの方法でモデルが劣化する可能性があるため、このような性能低下を考慮する必要があります。そのため、データの概要統計を追跡し、モデルのオンライン パフォーマンスをモニタリングして、値が想定と異なる場合に通知を送信またはロールバックする必要があります。

本番にデプロイする方法やデプロイ後の本番環境でもパフォーマンスの維持もWebシステムとMLシステムではかなり違いそうです。

ソース管理、単体テスト、統合テストの継続的インテグレーション(CI)、およびソフトウェア モジュールまたはパッケージの継続的デリバリー(CD)において、ML とその他のソフトウェア システムは類似しています。ただし、ML には次のような大きな違いがあります。

CI では、コードとコンポーネントのテストと検証だけでなく、データ、データスキーマ、モデルのテストと検証も行います。 CD は、単一のソフトウェア パッケージやサービスについではなく、別のサービス(モデル予測サービス)を自動的にデプロイするシステム(ML トレーニング パイプライン)です。 CT は、ML システムに固有の新しいプロパティであり、自動的にモデルを再トレーニングして提供します。

CI/CDともにWebシステムより考慮することが増えそうで、CTに関してはWeb周りではあまり見かけない概念な印象です。