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 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 gateLatchkeyについて
トレーニングと評価のjobは重く、バースト的です。Latchkeyのマネージドrunnerでは、トレーニングをGPUや大きなrunnerへルーティングし、数ギガバイトのデータセットやベースモデルを実行間でcacheして毎回ダウンロードし直さずに済ませ、object storageからの不安定なデータ取得をpipeline全体を失敗させる代わりに自動リトライできます。
重要なポイント
- MLOpsはCI/CDの規律 - 自動化、バージョン管理、テスト、モニタリング - を機械学習システムに適用します。
- MLシステムはデータ、コード、トレーニング済みモデルに依存するため、通常のCIを超えてデータ検証とドリフトのモニタリングが必要です。
- ほとんどのMLOpsのステージはCIのjobにマッピングされますが、トレーニングは高速かつ低コストを保つためにGPUや大きなrunner、そしてデータセットのcacheを必要とします。