株式会社renue
AI導入・DXの悩みをプロに相談してみませんか?
AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。
MLOpsにおけるCI/CDパイプラインの役割
ソフトウェア開発のCI/CDが「コードの品質と配信速度」を担保するように、MLOpsのCI/CDは「モデルの品質と本番反映速度」を担保します。しかし機械学習特有の複雑さ — データの変動、学習の再現性、モデルサイズの大きさ — により、従来のDevOps手法をそのまま適用できません。
本記事では、GitHub Actions + MLflow + Dockerを軸に、実務で使えるMLOps CI/CDパイプラインの構築手順を解説します。
MLOps CI/CDの3つの柱: CI・CT・CD
CI(Continuous Integration)— コードとデータの検証
コード変更がプッシュされるたびに、リンティング・ユニットテスト・データスキーマ検証を自動実行します。データの分布変化(ドリフト)を検知するバリデーションもこのフェーズに含まれます。
CT(Continuous Training)— モデルの自動再学習
新しいデータが蓄積された際、またはスケジュールに従い、学習パイプラインを自動実行します。MLflowにパラメータ・メトリクス・アーティファクトを記録し、過去の実験と比較可能にします。
CD(Continuous Deployment)— モデルの本番配信
MLflowのModel Registryで「Staging→Production」にプロモートされたモデルを検知し、新しいDockerイメージをビルドしてサービングエンドポイントに配信します。
GitHub Actionsによるワークフロー設計
GitHub Actionsは、コードプッシュやPRマージをトリガーとしてCI/CTパイプラインを自動起動できます。MLOps固有のポイントは以下の通りです。
- ワークフロートリガー:
pushイベントに加え、schedule(cron)で定期再学習を設定 - セルフホストランナー: GPU学習が必要な場合、GPU付きのセルフホストランナーを利用
- シークレット管理: APIキー・クラウド認証情報はGitHub Encrypted Secretsに格納
- アーティファクト管理: 学習済みモデルはMLflow Artifact StoreまたはS3/GCSに保存(Actionsのアーティファクトはサイズ制限があるため非推奨)
MLflow連携の実装ポイント
実験追跡(Tracking)
学習スクリプト内でmlflow.log_params()・mlflow.log_metrics()を呼び出し、全実験をMLflow Tracking Serverに記録します。CI/CDパイプラインからも同じTracking URIを参照することで、手動実験と自動実験のメトリクスを統一管理できます。
Model Registry
学習完了後、モデルをMLflow Model Registryに登録します。新バージョンはまず「Staging」ステージに配置され、評価テストを通過した場合のみ「Production」にプロモートされます。このゲートキーピングにより、品質の低いモデルが本番に到達するリスクを排除します。
モデルサービング
Productionステージのモデルを動的に取得し、Dockerイメージをビルドしてデプロイする方式が一般的です。mlflow models serveコマンドでREST APIサーバーを起動するか、カスタムFastAPIサーバーでラップします。
データバリデーションの自動化
本番データの品質劣化はモデル精度低下の主因です。CI段階で以下を自動検証します。
- スキーマ検証: カラム名・データ型・NULL許容の一致を確認
- 分布検証: KL divergence / PSI(Population Stability Index)で学習データとの乖離を検出
- 異常値検出: IQR法やz-scoreで統計的外れ値をフラグ付け
Great Expectations等のツールを使えば、これらのルールをコードで定義し、パイプラインに組み込めます。
モデルモニタリングとフィードバックループ
デプロイ後も継続的なモニタリングが必要です。追跡すべきメトリクスは3カテゴリに分けられます。
- 推論パフォーマンス: レイテンシ、スループット、エラーレート
- モデル品質: 精度、F1スコア、AUC(ラベル付きフィードバックがある場合)
- データドリフト: 入力特徴量の分布変化を検知し、再学習トリガーとする
Grafana + Prometheus構成が最も汎用的で、Evidently AIやWhyLabsなどのML特化モニタリングツールとの併用も有効です。
実装時の落とし穴と対策
- 再現性の担保: ランダムシードの固定だけでは不十分。Dockerイメージで環境を固定し、データのバージョンもDVC等で管理する
- 学習時間とCI/CDの整合: 学習に数時間かかる場合、CIのタイムアウトを超過する。非同期ジョブ(AWS Batch等)に委譲し、完了をポーリングする設計にする
- モデルサイズとレジストリ: 数GBのモデルをGit管理するのは非現実的。MLflow Artifact Store + クラウドストレージで管理し、参照のみをコードに持つ
- A/Bテストとカナリアデプロイ: いきなり100%切り替えではなく、トラフィックの10%で新モデルを検証してから全量切り替え
まとめ
MLOps CI/CDパイプラインは「コード品質」「データ品質」「モデル品質」の3つを同時に保証する仕組みです。GitHub Actionsで自動トリガーを設定し、MLflowで実験・モデルを一元管理し、Dockerで環境を固定する — この3要素を組み合わせることで、再現性と配信速度を両立できます。
関連記事
- MLOpsとは?機械学習の本番運用・CI/CDパイプライン構築・ツール比較【総合ガイド】
- MLOpsツール比較2026 — MLflow・Kubeflow・SageMaker・Vertex AI選定ガイド
- MLOps入門 — データサイエンティストが最初にやるべき5ステップ
- MLOps成熟度モデル — レベル0から2への組織導入ロードマップ
よくある質問(FAQ)
Q. GitHub ActionsとJenkinsのどちらがMLOps CI/CDに適していますか?
A. クラウドネイティブで小〜中規模ならGitHub Actionsが手軽です。オンプレミスGPUクラスタがある大規模組織ではJenkinsの方が柔軟です。
Q. モデルの再学習頻度はどう決めるべきですか?
A. データドリフトの速度に依存します。ECのレコメンドなら日次、製造業の異常検知なら月次が目安です。まずは週次で始め、モニタリング結果に応じて調整します。
Q. CT(Continuous Training)とCDは同じワークフローに入れるべきですか?
A. 分離を推奨します。CTは学習完了→Model Registryへの登録まで、CDはRegistry上のステージ変更をトリガーとする別ワークフローにすることで、障害分離と監査性が向上します。
Q. パイプラインの失敗通知はどうすべきですか?
A. GitHub Actionsのステータス通知をSlack連携し、失敗時にチャンネルへアラートを飛ばすのが一般的です。加えてMLflowのメトリクス異常も監視対象にします。
Q. セキュリティ上の注意点は?
A. 学習データへのアクセス権限を最小化し、モデルアーティファクトの暗号化、推論APIの認証・レートリミットを設定します。特にLLMの場合、プロンプトインジェクション対策も必要です。
