# シャドウデプロイ
## 定義
シャドウデプロイ(shadow deployment)とは、実環境でのテスト(test in production)の一手法であり、現行モデルと並行して候補モデルもデプロイし、リクエストが来るたびに両方のモデルへ送って予測させるが、ユーザーには現行モデルの予測のみを提供し、候補モデルの予測はログとして蓄積して分析に使う手法である。候補モデルの予測が十分によいことが明らかになった場合にのみ、現行モデルを候補モデルへ置き換える。候補モデルの予測をユーザーに一切提供しないため、モデルやソフトウェアのアップデートを最も安全にデプロイできる手法とされるが、システムが生成しなければならない予測の数が2倍に増えるため、一般的には推論を計算するコストも2倍に増える。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2.1)
## 横断的知見
- (この概念ページは現時点で単一ソース([[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]])からのみ構成されている。複数ソースの突き合わせが可能になり次第、この節に知見を追記する。)
## 未解決の問い
- シャドウデプロイのコスト増(推論コストが2倍)を許容できない場合、[[カナリアテスト]]のような一部トラフィックのみへの限定展開とどう使い分けるべきか。9章はシャドウデプロイを「最も安全な手法」と位置づけるのみで、他の実環境でのテスト手法との定量的な比較(コスト対リスク低減効果)までは踏み込んでいない。
- 候補モデルの予測をログとして蓄積したあと、「十分によい」と判定する具体的な基準・閾値はどう設計すべきか。9章はこの判定プロセスの詳細を示していない。
- ユーザーへの予測提供を伴わないシャドウデプロイでは、ユーザーの実際のフィードバック(クリック等の天然のラベル)が候補モデルの予測に対して得られない。このため候補モデルの評価は現行モデルとの予測差分の分析にとどまるはずだが、9章はこの評価方法の限界について明示していない。
## 関連
- 概念: [[A-Bテスト|A/Bテスト]](候補モデルをユーザーに公開して評価する対照的な手法) / [[カナリアテスト]](一部トラフィックへの限定公開という近い発想を持つ別手法) / [[継続的トレーニング]](継続学習が生成した挑戦者モデルを検証する手段)
- ソース: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]]
## 出典
- [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] — Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 9章, §9.2.1.