Skip to content
Latchkey

MLOpsとは?機械学習オペレーションの解説

MLOpsはCI/CDとDevOpsの規律を機械学習に適用し、データ、トレーニング、モデルのdeployが自動化され、バージョン管理され、再現可能になるようにします。

MLOps(Machine Learning Operations)は、機械学習システムを本番環境で信頼性高く運用する実践です。CI/CDの背後にある考え方 - 自動化、バージョン管理、テスト、モニタリング - を、データとモデルというより複雑な世界へと拡張します。この世界では、システムはコードの変更だけでなく、入力データの変化によっても壊れることがあります。

MLOpsとは何か

MLOpsは、モデルをラップトップ上のノートブックから、本番環境で稼働し改善するサービスへと導く、ワークフロー、ツール、文化の集合体です。データ、コード、トレーニング済みモデルを、すべてバージョン管理とテストが必要なファーストクラスのartifactとして扱います。目標はDevOpsと同じです。変更を迅速かつ安全に届け、何かが壊れたときに素早く復旧することです。

なぜMLにはCI/CD以上のものが必要なのか

従来のアプリはそのコードによって定義されます。MLシステムはコード、データ、トレーニング済みモデルによって定義され、その3つはそれぞれ独立して変化しえます。同じトレーニングコードでも、データがドリフトすればより悪いモデルを生み出す可能性があります。そのためMLOpsは通常の継続的インテグレーションの上に、データ検証、実験のトラッキング、モデルのモニタリングを追加します。

MLOpsのライフサイクル

典型的なループは、データの取り込み、データ検証、特徴量エンジニアリング、モデルのトレーニング、評価、勝ち残ったモデルの登録、deploy、モニタリングを実行します。モニタリングがドリフトや劣化を検知すると、ループは再トレーニングをトリガーします。各ステージはpipeline内のjobになりえます。だからこそCI/CDプラットフォームはMLOpsにとって自然な居場所なのです。

CI/CDでMLOpsを実行する

ほとんどのMLOpsのステージはCIのjobにきれいにマッピングされます。変更のたびにデータを検証し、スケジュールに従って再トレーニングし、評価を品質ゲートとして実行し、メトリクスが改善した場合のみモデルを昇格させます。トレーニングjobはしばしばGPUと大容量メモリを必要とし、大きなデータセットを取得するため、cacheと適切なサイズのrunnerがコストと速度に大きく影響します。

A training stage as a CI job
# A training job in GitHub Actions
jobs:
  train:
    runs-on: gpu-large
    steps:
      - uses: actions/checkout@v4
      - run: dvc pull            # fetch versioned data
      - run: python train.py     # produces model.pkl
      - run: python evaluate.py  # quality gate

Latchkeyについて

トレーニングと評価のjobは重く、バースト的です。Latchkeyのマネージドrunnerでは、トレーニングをGPUや大きなrunnerへルーティングし、数ギガバイトのデータセットやベースモデルを実行間でcacheして毎回ダウンロードし直さずに済ませ、object storageからの不安定なデータ取得をpipeline全体を失敗させる代わりに自動リトライできます。

重要なポイント

  • MLOpsはCI/CDの規律 - 自動化、バージョン管理、テスト、モニタリング - を機械学習システムに適用します。
  • MLシステムはデータ、コード、トレーニング済みモデルに依存するため、通常のCIを超えてデータ検証とドリフトのモニタリングが必要です。
  • ほとんどのMLOpsのステージはCIのjobにマッピングされますが、トレーニングは高速かつ低コストを保つためにGPUや大きなrunner、そしてデータセットのcacheを必要とします。

関連ガイド