ストーリー
田
田中VPoE
Step 2ではモデルデプロイとサービング基盤を構築する。まずはデプロイ戦略だ。LLMアプリケーションのデプロイは従来のWebアプリとは異なるリスクがある
あなた
プロンプトを変更しただけで応答品質が激変することがありますよね。先週のCS-AIでも、プロンプト修正後に「敬語が崩れた」とクレームが入りました
あ
田
田中VPoE
そうだ。コードの変更とプロンプトの変更では影響範囲の予測が難しい。だからこそ、段階的なデプロイ戦略が重要になる
デプロイ戦略の概要
LLMアプリケーション固有のデプロイリスク
| リスク | 説明 | 従来のWebアプリとの違い |
|---|
| 品質の非決定性 | 同じプロンプトでも出力が毎回異なる | テストで100%の品質保証ができない |
| プロバイダ依存 | モデルバージョンの変更が外部起因で発生 | 自社コントロール外の変更リスク |
| 評価の遅延 | 品質劣化が統計的に有意になるまで時間がかかる | 即座にバグを検出できない |
| コスト変動 | デプロイ変更がトークン使用量に影響 | 性能以外のコスト影響がある |
主要なデプロイ戦略
カナリアリリース
一部のトラフィックだけを新バージョンに振り分け、品質を確認してから全体に展開します。
カナリアリリースの流れ:
Phase 1: 5%のトラフィックを新バージョンに
┌────────────────────────────────────┐
│ 旧バージョン (95%) ████████████████ │
│ 新バージョン (5%) █ │
└────────────────────────────────────┘
→ 品質メトリクスを監視(1-2時間)
Phase 2: 問題なければ25%に拡大
┌────────────────────────────────────┐
│ 旧バージョン (75%) ████████████████ │
│ 新バージョン (25%) ████ │
└────────────────────────────────────┘
→ 品質メトリクスを監視(2-4時間)
Phase 3: 問題なければ100%に展開
┌────────────────────────────────────┐
│ 新バージョン (100%) ███████████████ │
└────────────────────────────────────┘
| 項目 | 内容 |
|---|
| 適した場面 | プロンプトの大幅変更、新機能追加 |
| メリット | リスクを最小化しながら段階的に展開できる |
| デメリット | 展開完了まで時間がかかる |
| 自動ロールバック条件 | 品質スコアが閾値以下、エラー率が基準超過 |
ブルーグリーンデプロイ
新旧2つの環境を用意し、トラフィックを瞬時に切り替えます。
ブルーグリーンデプロイ:
トラフィック
│
▼
┌─────────┐
│ Router │
└────┬────┘
│
┌────┼────────────┐
│ │ │
▼ │ ▼
Blue │ Green
(現行) │ (新版)
│
切替時にRouterの
向き先を変更
| 項目 | 内容 |
|---|
| 適した場面 | モデルバージョンの切替、インフラ更新 |
| メリット | 即時ロールバック可能、ダウンタイムなし |
| デメリット | 2倍のインフラコストが必要 |
| 注意点 | 切替前にGreen環境で十分な品質テストを実施 |
シャドウデプロイ
新バージョンを並行実行するが、ユーザーには旧バージョンの結果を返します。
シャドウデプロイ:
リクエスト ──→ Router ──→ 旧バージョン ──→ ユーザーに返却
│
└──→ 新バージョン ──→ 結果をログに記録
(ユーザーには返さない)
│
▼
品質比較分析
| 項目 | 内容 |
|---|
| 適した場面 | リスクの高い変更、新モデルの評価 |
| メリット | ユーザー影響ゼロで新バージョンを評価できる |
| デメリット | 2倍のAPIコストが発生、リアルタイム性の評価は不可 |
| 注意点 | コスト増加を許容できる期間を事前に決める |
フィーチャーフラグ
ユーザー属性や条件に応じてバージョンを切り替えます。
| 項目 | 内容 |
|---|
| 適した場面 | A/Bテスト、段階的ロールアウト、ベータテスト |
| メリット | きめ細かい制御が可能 |
| デメリット | フラグの管理が複雑化する |
| ツール例 | LaunchDarkly, Unleash, 自前実装 |
デプロイ戦略の選択基準
| 変更の種類 | 推奨戦略 | 理由 |
|---|
| プロンプトの軽微な修正 | カナリア(5%→100%) | 影響が小さいため短時間で展開 |
| プロンプトの大幅変更 | カナリア(5%→25%→50%→100%) | 段階的に品質を確認 |
| モデルバージョン変更 | ブルーグリーン | 即時ロールバックが必要 |
| 新モデルプロバイダの導入 | シャドウ→カナリア | まずシャドウで品質比較、確認後にカナリア展開 |
| A/Bテスト | フィーチャーフラグ | ユーザーセグメント単位の制御が必要 |
ロールバック設計
自動ロールバックの条件
# ロールバック設定例
rollback:
automatic:
conditions:
- metric: "error_rate"
threshold: 5 # エラー率5%超過
window: "5m"
- metric: "quality_score"
threshold: 0.7 # 品質スコア0.7未満
window: "15m"
- metric: "latency_p95"
threshold: 5000 # P95レイテンシ5秒超過
window: "5m"
action: "rollback_to_previous"
notification:
- channel: "slack"
target: "#llmops-alerts"
| ロールバックの種類 | 説明 | 所要時間 |
|---|
| プロンプトロールバック | プロンプトのバージョンを戻す | 数秒〜数分 |
| モデルロールバック | フォールバックモデルに切替 | 数秒 |
| 環境ロールバック | ブルーグリーンの切戻し | 数秒 |
| コードロールバック | アプリケーションコードの前バージョンデプロイ | 数分〜数十分 |
まとめ
| ポイント | 内容 |
|---|
| LLM固有のリスク | 非決定性・プロバイダ依存・評価遅延・コスト変動の4つのリスクを考慮する |
| 戦略の使い分け | 変更の種類とリスクに応じてカナリア・ブルーグリーン・シャドウ・フィーチャーフラグを選択 |
| 段階的展開 | プロンプト変更は必ず段階的に展開し、品質メトリクスで確認してから拡大する |
| ロールバック | 自動ロールバック条件を事前に定義し、問題発生時に即座に戻せる設計にする |
チェックリスト
推定読了時間: 30分