🚀 ニフティ’s Notion

MLOps

概要

MLOpsとは?
簡単に説明
  • 機械学習モデルの開発から運用までを効率化するプラクティス
  • データの管理、モデルのデプロイメント、モニタリングなどを自動化し、信頼性とスケーラビリティを向上させる
  • 機械学習モデルの開発・運用を円滑に行い、ユーザーへ迅速に機械学習プロダクトを提供することが目的
  • 機械学習版DevOps
DevOpsとは?
  • Development(開発)とOperation(運用)を組み合わせたDevelopment and Operationsの略語
  • 開発と運用がお互いに強調しあうことで、スムーズに開発や運用を進め、システムの価値を継続的に向上させる方法論や概念
  • メリット
    • テスト・ビルド・リリースなどの手動で行われていたプロセスをツールを活用し、自動化することでヒューマンエラーの発生を防ぎ、システムの信頼性向上
    • 開発と運用が連携することにより情報共有や手続きがスムーズになり、生産性向上
    • プロセスのシンプル化、自動化をしていくことによる、開発スピード向上
  • CI/CD
    • 継続的インテグレーション/継続的デリバリーの略語
    • DevOpsを実現するための方法
    • CI: ビルドやテストといったプロセスを自動化
    • CD: 本番環境へのデプロイを自動化
      • CIの自動化の範囲に加えてステージング環境へのデプロイを行い、人間による承認を実施後、本番環境へデプロイする
DevOpsとMLOpsの違い
  • MLOpsはDevOpsの原則を取り入れた機械学習プロジェクトに特化した方法論のこと
    • 機械学習プロジェクトに特化したDevOps的なイメージ
    • DevOpsの原則を採用して、機械学習モデルを本番環境に反映させる
  • CI/CD/CT
    • CI: コードやコンポーネントのテストや検証だけでなく、データやモデルのテストや検証も行う
    • CD: 単一のソフトウェアやサービスについてではなく、モデルを予測するサービスを自動的にデプロイする
    • CT (継続的トレーニング): 自動的にモデルを再トレーニングする
  • ソースコードや環境だけでなく、学習に使用したデータやハイパーパラメータ、モデルなどについても同様に管理が必要となる

MLOpsが取り組むこと

機械学習基盤の構築
  • 機械学習では、継続的なデータの収集・蓄積・整備が必要
  • サービスへの適用や学習の他に、データの加工や前処理、プログラムを実行しながらの再学習など様々なタスクやそれに対応した基盤が必要となる
  • MLOpsでは、そのような実行環境として利用する機械学習基盤のアーキテクチャを設計し、インフラ環境やプラットフォームを整備する
機械学習サイクルの円滑化
  • 機械学習サイクルをスムーズに実行するうえで、必要なプロセスの自動化、効率化を行う
    • 学習
    • デプロイ
    • システムの監視
  • 機械学習モデルを作ったら終わりではなく、運用が必要となる。コードを変更した場合のバージョン管理やモデルのチューニングなど繰り返し行われる

なぜMLOpsを導入するのか

モデルを作って終わりではないから
image block
引用:

  • コードは非常に小さく描かれている
    • コードよりもそれを取り巻く周辺の構成の方が重要
  • 機械学習プロジェクトにおけるタスクはコードだけではない。さまざまな複雑な要素で構成されているため、機械学習プロジェクトの製品化は容易ではない。
    • システム監視
      • ログデータの取得
      • パフォーマンスの変化、低下を検知できるようにする
    • モデルやソースコードの管理
      • バージョン管理などを実施し、再現性を担保する
    • 本番環境へのデプロイ
      • 本番環境のシステムから呼び出せるようにする
    • などなど
機械学習モデルは時間の経過とともに劣化するから
  • 時間の変化によってデータの質が変化し、モデルがその変化に追随できずに予測が外れていく
    • 2020年4月消毒液がめっちゃ売れた! → 今年の春は消毒液が大ヒットするか?
      • 最新のデータを使って再学習
    • 大人の声を学習した音声認識モデルをリリース!子供に大ヒットし、予測精度劣化
      • 若者の声を使って再学習
    • 犬猫の分類器に新しくウサギを入れたい
      • ウサギのデータを追加して再学習
  • 定期的なタイミングで再学習が必要
  • モデルを作った後の運用・保守も大事!

MLOpsの成熟度レベル

MLOpsはAIや機械学習のような「ソフトウェア+データ」のシステムを運用する際の独特な課題に対応するために、注目されるようになった

MLOpsでは、自動化されたモデル訓練、ホスティング、パイプライン監視のためのエンドツーエンドのアーキテクチャを開発する

MLOpsの成熟度レベルに沿って戦略をたてて導入していくことで徐々に、専門知識の蓄積、ヒューマンエラーの排除、リスクの軽減をすることができ、データサイエンスの課題に集中することができるようになる

Level 0: 手動
image block
引用:
特徴
  • モデルの構築、訓練、チューニング、デプロイはすべて手動
  • モデルの変更が頻繁に発生しないことを前提としている
  • CI/CDがない
  • 機械学習パイプラインと運用が分離されている
  • モデルのパフォーマンスモニタリングがない
課題
  • モデルのパフォーマンスをモニタリングする
  • モデルの再トレーニングを頻繁に実施する
  • 新しい実相を継続的にテストし、モデルを生成する
Level 1: MLパイプラインの自動化
image block
引用:
特徴
  • 機械学習の実験が自動化されている
  • 本番環境でのモデルの継続的トレーニング(CT)
  • IaCでパイプラインを管理
    • 開発環境と本番環境の間でソースコードの再現を可能にする
    • 各コンポーネントが分離されている
  • モデルの継続的デリバリー(CD)
追加されたコンポーネント
  • Feature Store
    • 特徴量を定義、保存、アクセスを標準化することができる。
    • 特徴量の再利用や共有を実現することができ、CTや予測時でも保存した特徴量を使用することができるようになる
  • メタデータ管理
    • パイプラインやコンポーネントの管理や、パラメータの引数、過去のモデルやモデルの評価指標などを保存する
  • MLパイプライントリガー
    • トリガーに応じてモデルを再トレーニングする
      • オンデマンド: 手動実行
      • スケジューリング
      • 新しいトレーニングデータが利用可能になったとき
      • モデルのパフォーマンスが低下したとき
      • などなど
課題
  • 手動でのテスト、デプロイ
    • パイプラインの更新が頻繁でないかつ少数という想定
Level 2: CI / CD パイプラインの自動化
image block
引用:
特徴
image block
引用:
  1. 開発と実験
    • 新しいMLアルゴリズムとモデリングを繰り返し試行する
  2. パイプラインのCI
    • ソースコードをビルドし、テストを実行する
  3. パイプラインのCD
    • 本番環境にデプロイする
  4. トリガー
    • スケジュールなどのトリガーに応じてパイプラインが自動的に実行される
  5. モデルのCD
    • トレーニング済みモデルをデプロイする
  6. モニタリング
    1. モデルのパフォーマンスに関する統計情報を収集する

MLOps導入を進める上でのベストプラクティス

運用上の優秀性
  • データ品質をチェックする
  • シンプルに始め、既存のソリューションを利用する
  • 全てをバージョン管理する
  • 適切なリソースを選択する
  • デプロイしたモデルを継続的に監視する
  • ワークフローを自動化する
セキュリティ
  • 安全なクラウドサービスを利用しよう!
  • データの暗号化を徹底しよう!
信頼性
  • 障害が発生した場合でも、モデルの正しいバージョンを復元できるように、訓練データのバージョン管理や変更追跡は自動化する
パフォーマンス効率
💡
要件を満たすためにコンピューティングリソースを効率的に使用し、需要の変化や技術の進化に応じてその効率性を維持する方法のこと
  • GPUインスタンスを使うなど、効率の良いリソースの選択をする
  • レイテンシーなどの要件を把握し、ユーザーに近い場所にモデルを配置する
    • ユーザーのデバイスでモデルを走らせるなど
コスト最適化
  • Savings Plan、スポットインスタンスなどを組み合わせる
  • 必要最低限なパフォーマンスのインスタンスを利用する
  • 使用するときだけインスタンスをたちあげる

MLOpsを支える技術

クラウドベンダー
オープンソース

MLOpsの事例紹介

参考資料

次のページ

SageMaker JumpStartを使って学習済みモデルを爆速でデプロイする