セクション6 応用 — AI ソリューションのモニタリング
🔧 対象:中堅エンジニア。Model Armor、Gen AI Evaluation、責任ある AI、アラート設計の実務観点を押さえる。
1. Model Monitoring の応用設計
1.1 Skew / Drift の閾値
- L-infinity distance:カテゴリ特徴向け(最大差)
- KL divergence / JS divergence:分布の距離
- PSI (Population Stability Index):実務でよく使われる指標
- 閾値は 過去のベースライン上で再現性のある値 に設定(経験的に 0.1〜0.3)
1.2 サンプリング戦略
- 高 QPS なら 5〜10% で十分
- 低 QPS なら 100% 取って統計信頼性確保
- 偏りなくサンプリング(決定論的サンプリングが安全)
1.3 アラート設計
| 警報レベル |
対応 |
| Warning(軽微なドリフト) |
Slack 通知のみ、調査 |
| Critical(閾値超え) |
PagerDuty + 自動再訓練パイプライン起動 |
| Emergency(精度劣化が SLO 割れ) |
カナリアロールバック + 全アラート |
1.4 ラベル取得が遅延する場合
- 真値(実際の解約・実際のクリック)が後日判明する場合は Concept Drift 検知が遅れる
- 代替:Proxy メトリクス(CTR / 推論信頼度の分布)を併用
2. Explainable AI の応用
2.1 適切な手法の選択
入力タイプは?
├─ 表形式(テーブル)
│ └─ Sampled Shapley(精度・解釈性バランス)
├─ 画像
│ ├─ クラス全体の重要領域 → XRAI
│ └─ ピクセル単位の重要度 → Integrated Gradients
├─ テキスト
│ └─ Integrated Gradients
└─ 系列データ(時系列)
└─ Integrated Gradients
2.2 グローバル説明 vs ローカル説明
- ローカル:個別予測の説明(「この顧客が解約と予測された理由は X が高いから」)
- グローバル:モデル全体の説明(「全体として最も重要な特徴量は X, Y, Z」)
2.3 Feature Attribution Drift 検知への活用
- 個別予測の 属性スコアを継続収集
- ベースラインと比較して分布変化を検知
- 例:「以前は age が支配的だったが、最近は region が支配的」→ ドリフト発生
3. Model Armor の応用
3.1 主要な脅威カテゴリ
| 脅威 |
例 |
Model Armor の対応 |
| プロンプトインジェクション |
「これまでの指示を無視して...」 |
パターン検知 + LLM 分析 |
| ジェイルブレイク |
DAN プロンプト等 |
LLM 判定 |
| PII 漏洩(入力) |
クレカ番号を含む |
DLP + Model Armor |
| PII 漏洩(出力) |
LLM が学習データの PII を吐く |
出力スキャン |
| 有害コンテンツ |
暴力・差別・自殺示唆 |
Safety Filters + Model Armor |
| データ漏洩 |
システムプロンプトの暴露 |
出力パターン検知 |
| URL 注入 |
悪意あるリンク |
URL リスト判定 |
3.2 デプロイパターン
- Inline mode:リクエスト/レスポンスを Model Armor が中継
- Async mode:ログを後追いでスキャン(リアルタイム性犠牲)
3.3 既存スタックとの統合
[App] → [API Gateway] → [Model Armor (入力)] → [Gemini] → [Model Armor (出力)] → [App]
↑
[Sensitive Data Protection]
↑
[Safety Filters (Gemini 標準)]
3.4 失敗時のフォールバック
- Model Armor が「拒否」した場合の UX
- 「申し訳ありませんが、その質問にはお答えできません」
- 代替アクション提示
- 誤検知 (False Positive) のレビュー・チューニング体制
4. Gen AI 評価の応用
4.1 評価データセットの設計
- 代表性:本番リクエストの分布を反映
- エッジケース:境界・難しい例を含める
- 公平性:属性別バランス
- 継続更新:本番ログからゴールデンセットを追加
4.2 LLM-as-a-judge の実装パターン
- Pairwise comparison:2つの出力を並べて優劣判定(バイアスを減らす)
- Pointwise scoring:1つの出力を絶対評価
- Reference-free:参照なしで判定(コスト低)
- Reference-based:参照と比較(精度高)
4.3 評価メトリクスの組合せ
[出力サンプル]
├─ 自動メトリクス (BLEU/ROUGE/Perplexity) → 即時
├─ LLM-as-a-judge (品質/有害性/指示遵守) → 数秒
└─ 人手評価 (重要意思決定) → 日次サンプリング
4.4 継続評価の運用
- 本番リクエストの 5〜10% をサンプリング
- 定期的に評価ジョブを Pipeline で実行
- 品質が閾値割れ → アラート → 再訓練 or プロンプト見直し
- 結果は ML Metadata + BigQuery にストア
5. 責任ある AI の運用
5.1 公平性監視の実装
- スライス別メトリクス:性別 / 年齢層 / 地域 別の Precision/Recall
- Disparate Impact:陽性予測率の比 (≤ 0.8 で注意)
- Equalized Odds:FPR / FNR の属性間差
- TFMA / Model Evaluation のスライス設定で実装
5.2 バイアス源
- データ収集の偏り:歴史的に偏ったデータ
- ラベリングの偏り:アノテーターの主観
- 特徴量選択の偏り:プロキシ変数(郵便番号 → 人種代理)
- モデルアーキテクチャの偏り
5.3 緩和策
- 再サンプリング / 重み付け
- 公平性制約付き訓練(fairness constraint optimization)
- 後処理(閾値を属性別に調整)
- データ追加(過小代表グループのデータを増やす)
5.4 Model Cards / Data Cards
- Model Card: モデルの目的、訓練データ概要、性能(公平性含む)、限界、想定外利用
- Data Card: データソース、収集方法、偏り、前処理、ライセンス
- 公開 / 内部閲覧で透明性向上
6. プライバシー保護の応用
6.1 差分プライバシー (DP)
- 訓練データへの 数学的に保証されたノイズ追加
- TensorFlow Privacy で実装可能
- 個人特定リスクを定量化(ε, δ)
- トレードオフ:プライバシー保証 ↔ モデル精度
6.2 連合学習 (Federated Learning)
- 端末側で訓練、中央には 勾配のみ 送信(生データ不要)
- モバイル ML(Gboard、Android Keyboard)で実用
- 通信コスト・実装複雑性は高い
6.3 機密計算 (Confidential Computing)
- メモリ内データも暗号化された TEE (Trusted Execution Environment) で処理
- Confidential VM / Confidential GKE Nodes
- 機密データ × ML での選択肢
7. オブザーバビリティの統合
7.1 メトリクス・ログ・トレース
- Cloud Monitoring:メトリクス(カスタムメトリクス API でアプリ指標も)
- Cloud Logging:ログ(推論ログ・エラーログ)
- Cloud Trace:分散トレース(API → モデル → DB の遅延分析)
7.2 アラートと SLO
- SLI (Service Level Indicator):例「推論レイテンシ p95 < 200ms」
- SLO (Service Level Objective):「月間 99% で SLI を満たす」
- Error Budget:1% の余裕分。使い切ったら新機能停止
7.3 ML 特有の可観測性指標
- 入力分布の統計
- 予測値の分布
- 特徴量重要度
- ドリフトスコア
- リクエストの推論時間(前処理 / 推論 / 後処理 別)
8. 試験での頻出ひっかけ
| シナリオ |
不正解になりがち |
正解の方向 |
| 「入力分布が変わって精度低下」 |
Concept Drift |
Data Drift |
| 「入力と出力の関係が変化」 |
Data Drift |
Concept Drift |
| 「訓練と推論の前処理ズレ」 |
Drift |
Training-Serving Skew |
| 「特徴量の重要度が変化」 |
Data Drift |
Feature Attribution Drift 🆕 |
| 「LLM が PII を吐く」 |
DLP のみ |
Model Armor + DLP + Safety Filters |
| 「LLM プロンプトインジェクション対策」 |
プロンプト工夫 |
Model Armor |
| 「生成 AI の品質を継続評価」 |
全件人手 |
Gen AI Evaluation Service + LLM-as-a-judge |
| 「テーブルモデルの予測理由を説明」 |
Feature importance を手計算 |
Sampled Shapley (Explainable AI) |
| 「画像分類の判断根拠を可視化」 |
Saliency map 自作 |
Integrated Gradients / XRAI |
| 「属性別の精度差をチェック」 |
全体精度のみ |
TFMA / Model Evaluation のスライス評価 |
| 「ドリフト検知で自動再訓練」 |
スケジュールのみ |
Model Monitoring → Pub/Sub → Pipelines |
| 「サンプリングは 100% 必須」 |
そのまま |
高 QPS なら 5〜10% で十分 |
| 「Concept Drift をラベルなしで検知」 |
簡単 |
真値が必要、プロキシメトリクスで近似 |
| 「公平性は全体精度を見れば OK」 |
そのまま |
スライス別 / Equalized Odds で属性差を確認 |
9. 設計パターン例
9.1 LLM アプリの監視スタック
[Application Logs] → Cloud Logging
[Latency / Errors] → Cloud Monitoring (SLO ダッシュボード)
[Prompt/Response sample] → BigQuery (5% サンプリング)
↓ 日次バッチ
[Gen AI Evaluation Service] (LLM-as-a-judge)
↓ 品質スコア
[Cloud Monitoring custom metric]
↓ 閾値割れ
[Alert → Slack + 再評価パイプライン]
9.2 表形式モデルの監視スタック
[Endpoint requests] → Model Monitoring (5% sampling)
├─ Skew check (vs training data) → Slack alert
├─ Drift check (vs baseline window) → Pub/Sub → CT pipeline
├─ Feature Attribution Drift → Explainable AI → Slack alert
└─ Latency / Error rate → Cloud Monitoring → PagerDuty
9.3 セキュア LLM パイプライン
[User] → [API Gateway (IAM)] → [Model Armor 入力] → [Gemini]
↓
[Safety Filters]
↓
[Model Armor 出力]
↓
[DLP 最終スキャン]
↓
[User]
[Audit log → Cloud Logging]
次は 03_要点と暗記.md で意思決定ツリー・対比表・暗記カードを集めます。