課題28: CreditAI MLOpsパイプライン - モデル開発から本番運用までの自動化
難易度: 🟡 中級
1. 分類情報
| 項目 | 内容 |
|---|---|
| 難易度 | 中級 |
| カテゴリ | MLOps / 機械学習パイプライン |
| 処理タイプ | バッチ |
| 使用IaC | Terraform |
| 想定所要時間 | 6-8時間 |
2. ビジネスシナリオ
企業プロファイル: 〇〇株式会社
| 項目 | 内容 |
|---|---|
| 企業名 | 〇〇株式会社 |
| 業種 | 与信審査AIプラットフォーム |
| 設立 | 2020年 |
| 従業員数 | 50名 |
| 本社 | 東京 |
| 事業 | 金融機関向け与信審査AI SaaS |
| 顧客 | 銀行・クレジットカード会社30社 |
| 年間審査件数 | 500万件 |
| API呼び出し | 1日20万件 |
現在のML開発プロセスの問題点
- 開発から本番デプロイまで2週間
- 手動作業によるミス発生
- モデルのバージョン管理が不十分
- 再現性の欠如(どの学習データで訓練したか不明)
- モデル監視が手動
- 規制対応(説明可能性)の工数大
目指す姿(MLOpsパイプライン)
Data Prep → Train → Eval → Register → Deploy → Monitor を自動化
- コードプッシュから本番デプロイまで4時間
- 完全自動化されたパイプライン
- 全モデルのバージョン管理と追跡
- 自動モデル監視とドリフト検出
規制要件(金融規制対応)
モデルガバナンス要件
1. モデルの追跡可能性(Traceability)
- どのデータで学習したか
- どのハイパーパラメータを使用したか
- いつ、誰が承認したか
2. 説明可能性(Explainability)
- 審査結果の理由を説明できること
- SHAP値やFeature Importanceの記録
3. 公平性(Fairness)
- 差別的バイアスがないことの検証
- 定期的な公平性監査
4. 監査証跡(Audit Trail)
- 全ての判断の記録
- 7年間の保存義務
ビジネス要件と KPI
開発効率目標
| 指標 | 現状 | 目標 | 改善 |
|---|---|---|---|
| デプロイリードタイム | 2週間 | 4時間 | 98%↓ |
| デプロイ頻度 | 月1回 | 週2回 | 8倍↑ |
| 手動作業時間 | 40時間/回 | 2時間/回 | 95%↓ |
| ロールバック時間 | 4時間 | 15分 | 94%↓ |
品質目標
| 指標 | 現状 | 目標 | 基準 |
|---|---|---|---|
| モデル精度(AUC) | 0.82 | > 0.85 | 本番必須 |
| 推論レイテンシ | 500ms | < 200ms | P99 |
| エンドポイント可用性 | 99.5% | 99.95% | SLO |
| ドリフト検出時間 | 7日 | < 1日 | 自動 |
3. 学習目標
習得スキル
主要スキル
1. SageMaker Pipelines
- パイプライン定義(Python SDK)
- ステップの種類と使い分け
- 条件分岐とパラメータ化
- パイプラインの実行と監視
2. モデルレジストリとバージョン管理
- Model Package Group
- モデルの承認ワークフロー
- メタデータ管理
- リネージュ追跡
3. モデル監視
- SageMaker Model Monitor
- データ品質監視
- モデル品質監視
- バイアスドリフト検出
4. CI/CD for ML
- CodePipeline / CodeBuild
- GitOps ワークフロー
- 自動テスト戦略
- ブルー/グリーンデプロイ
副次スキル
- Terraform によるMLOps基盤構築
- EventBridge によるイベント駆動
- 説明可能AI(SageMaker Clarify)
- コスト最適化
4. 使用するAWSサービス
MLOpsコア
| サービス | 用途 | 重要度 |
|---|---|---|
| SageMaker Pipelines | MLパイプライン | ★★★★★ |
| SageMaker Model Registry | モデル管理 | ★★★★★ |
| SageMaker Model Monitor | モデル監視 | ★★★★☆ |
| SageMaker Clarify | 説明可能性・公平性 | ★★★★☆ |
| SageMaker Experiments | 実験管理 | ★★★☆☆ |
CI/CD
| サービス | 用途 | 重要度 |
|---|---|---|
| CodeCommit / GitHub | ソースコード管理 | ★★★★☆ |
| CodePipeline | CI/CDオーケストレーション | ★★★★★ |
| CodeBuild | ビルド・テスト | ★★★★☆ |
| EventBridge | イベント駆動 | ★★★☆☆ |
インフラ
| サービス | 用途 | 重要度 |
|---|---|---|
| Terraform | IaC | ★★★★★ |
| S3 | データ・アーティファクト | ★★★★★ |
| IAM | アクセス制御 | ★★★★☆ |
| CloudWatch | ログ・監視 | ★★★★☆ |
| SNS | 通知 | ★★★☆☆ |
5. 前提条件と事前準備
必要な環境
bash
# Terraform バージョン確認
terraform --version
# Terraform v1.5.0 以上
# AWS CLI バージョン確認
aws --version
# aws-cli/2.x.x 以上
# Python環境
python3 --version
# Python 3.9以上
# 必要なPythonパッケージ
pip install sagemaker boto3 pandas scikit-learnAWS環境の準備
bash
# 環境変数設定
export AWS_REGION=ap-northeast-1
export PROJECT_NAME=mlops
export ENVIRONMENT=dev
# 作業ディレクトリ作成
mkdir -p ~/mlops-mlops/{terraform,pipelines,scripts,tests}
cd ~/mlops-mlops6. アーキテクチャ設計
MLOpsパイプライン全体像
| コンポーネント | 役割 |
|---|---|
| GitHub Code | ソースコード管理 |
| CodeBuild | Lint・テスト実行 |
| S3 Artifact | ビルドパッケージ保存 |
| Data Prep | データ前処理 |
| Train | モデル学習 |
| Eval | モデル評価 |
| Clarify Bias | バイアスチェック |
| Condition | AUC・バイアス条件判定 |
| Register Model | モデル登録 |
| Model Registry | モデルバージョン管理 |
| Manual/Auto Approval | 承認プロセス |
| Deploy to Staging/Production | 各環境へのデプロイ |
| Data/Model/Bias Quality | モニタリング |
| CloudWatch Alarm | アラート発報 |
| SNS/PagerDuty | 通知配信 |
7. トラブルシューティング演習
演習7-1: パイプライン失敗
状況: SageMaker Pipelineの実行が「TrainModel」ステップで失敗している。
エラーログ:
ClientError: Data download failed for channel 'train'.
Please ensure that the role has s3:GetObject permission
for the following resources:
s3://mlops-ml-artifacts-dev-xxx/processing/train/課題:
- エラーの原因を特定してください
- IAMポリシーを修正してください
- パイプラインを再実行して成功を確認してください
演習7-2: モデルドリフト検出
状況: Model Monitorからデータドリフトアラートが発生した。推論精度の低下が懸念される。
モニタリングレポート:
| Feature | 項目 | 値 |
|---|---|---|
| annual_income | Baseline mean | 450,000 |
| annual_income | Current mean | 520,000 |
| annual_income | Drift score | 0.35 (threshold: 0.2) |
| employment_years | Baseline distribution | Normal |
| employment_years | Current distribution | Bimodal |
| employment_years | Drift score | 0.42 (threshold: 0.2) |
課題:
- ドリフトの原因を分析してください
- 対応方針(再学習 or モデル調整)を決定してください
- 自動再学習トリガーの設計を検討してください
8. 設計課題
設計課題8-1: Feature Store統合
課題: SageMaker Feature Storeを導入し、特徴量の管理と再利用を効率化してください。
要件:
- オンラインストア(推論時のリアルタイム取得)
- オフラインストア(学習時のバッチ取得)
- 特徴量のバージョン管理とリネージュ
- 複数モデル間での特徴量共有
成果物:
- Feature Group設計
- 特徴量取り込みパイプライン
- Terraformテンプレート
9. 発展課題
発展課題9-1: マルチモデルA/Bテスト
シナリオ: 新しいアルゴリズム(LightGBM)のモデルを本番環境で段階的に検証したい。
技術要件:
- トラフィックの10%を新モデルに振り分け
- リアルタイムの精度比較
- 統計的有意性の自動判定
- 勝者モデルへの自動切り替え
成果物:
- A/Bテストアーキテクチャ
- Production Variantの設定
- 自動判定Lambdaの実装
10. 学習のまとめ
学習チェックリスト
SageMaker Pipelines
- パイプラインをPython SDKで定義できる
- 各種ステップ(Processing, Training等)を使い分けられる
- 条件分岐とパラメータ化ができる
- パイプラインのデバッグができる
Model Registry
- Model Package Groupを作成できる
- モデルのバージョン管理ができる
- 承認ワークフローを設定できる
- モデルメタデータを管理できる
Model Monitor
- Data Quality監視を設定できる
- Model Quality監視を設定できる
- ベースラインを作成できる
- アラートを設定できる
CI/CD
- CodePipelineでMLパイプラインを統合できる
- 自動テスト戦略を設計できる
- Blue/Greenデプロイを実装できる
- ロールバック戦略を設計できる
11. コスト見積もり
想定コスト(月額)
開発環境
| 項目 | 数量 | 月額(USD) |
|---|---|---|
| SageMaker Pipelines | 10実行/月 | $5 |
| Training Jobs | 20時間/月 | $5 |
| Processing Jobs | 10時間/月 | $2 |
| CodePipeline | 1パイプライン | $1 |
| CodeBuild | 100分/月 | $0.50 |
| S3 Storage | 50GB | $1.15 |
| 小計 | 約 $15 |
本番環境想定
| 項目 | 数量 | 月額(USD) |
|---|---|---|
| Endpoint (ml.m5.large) | 2台 × 24h | $210 |
| Model Monitor | 720時間 | $72 |
| SageMaker Pipelines | 8実行/月 | $40 |
| Training Jobs (週次) | 16時間/月 | $4 |
| CodePipeline | 1パイプライン | $1 |
| S3 Storage | 500GB | $11.50 |
| CloudWatch | ログ・メトリクス | $20 |
| 小計 | 約 $359(約 ¥54,000) |
リソースのクリーンアップ
bash
# Terraformリソース削除
cd ~/mlops-mlops/terraform
terraform destroy -auto-approve
# SageMakerリソースの手動削除(エンドポイント等)
aws sagemaker delete-endpoint --endpoint-name mlops-production-endpoint
aws sagemaker delete-endpoint-config --endpoint-config-name mlops-endpoint-config-dev
# S3バケット削除
aws s3 rb s3://mlops-ml-data-dev-${ACCOUNT_ID} --force
aws s3 rb s3://mlops-ml-artifacts-dev-${ACCOUNT_ID} --force
echo "Cleanup completed!"次の課題: 課題29
前の課題: 課題27