FDE 面試準備指南(二十四):RKK 實戰——混合模型路由與語意路由器設計

為什麼用 Gemini Pro 回答「你好!」?
用 Gemma-2b 回答「你好!」,品質幾乎一樣,成本低 20 倍。
問題不是「要不要用小模型」,而是「如何設計一個系統,讓正確的問題找到正確的模型」。


面試情境

面試官: 「客戶希望設計一個 Hybrid Model Routing 系統:70% 的簡單日常問候和格式轉換自動路由到 GKE 部署的 Gemma-7b;複雜推理和多步驟 Tool-calling 才路由到 Gemini 1.5 Pro。你如何設計這個路由器?如何用統計評估確保路由器不會因為誤判讓整體品質下滑?」


一、核心問題:路由器要解決什麼問題

不路由的世界(所有請求 → Gemini Pro):
  成本:$1.25/1M input tokens(Gemini 1.5 Pro)
  延遲:平均 2~5 秒

路由後的世界:
  70% 簡單請求 → Gemma-7b(自托管 GKE)
    成本:近乎零(只有 GKE 運算成本,約 $0.05/1M tokens 等效)
    延遲:0.2~0.5 秒(本地推理)
  30% 複雜請求 → Gemini Pro
    成本:$1.25/1M tokens
    延遲:2~5 秒

整體節省:70% × 95% cost reduction = ~66% 成本降低

代價(路由器的風險):
  如果路由器誤判,把複雜問題送給 Gemma-7b
  → Gemma-7b 無法回答 → 錯誤答案 → 業務影響
  → 品質下滑的代價 > 成本節省的收益

結論:路由器的設計核心是「確保誤判率在可接受範圍內」

二、路由器設計的三種方案

方案比較:

                Embedding-based          LLM-based Router      Rule-based
                Semantic Router          (Gemini Flash)
──────────────────────────────────────────────────────────────────────────
決策速度         ~50ms                    ~300ms                 < 1ms
準確性           中等(依賴相似度)         高(LLM 理解語意)     低(規則有限)
維護成本         中(需要更新範例向量)     低(Few-shot 更新)    高(規則越來越多)
對新場景適應     差(未見過的範例命中率低)  好(LLM 泛化能力強)   差
成本             Embedding 費用(低)       Gemini Flash 費用(低) 零
可解釋性         中(相似度分數)           高(可要求 LLM 解釋)   高(規則清楚)
適用場景         路由決策需要極快速度       品質優先               非常簡單的場景

推薦:雙層架構
  Layer 1: Rule-based(極快速,處理明顯的情況)
  Layer 2: Semantic Router(處理 Layer 1 通過的請求)

三、完整路由架構設計

┌──────────────────────────────────────────────────────────────┐
│                   用戶請求                                    │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           ▼
┌──────────────────────────────────────────────────────────────┐
│         Layer 1:Rule-based 快速路由(< 1ms)                 │
│                                                              │
│  明確路由到小模型(Gemma):                                   │
│  ├── 請求長度 < 50 tokens AND 無 Tool-calling 歷史            │
│  ├── 純問候語(pattern match)                               │
│  └── 格式轉換任務(JSON → CSV 等)                           │
│                                                              │
│  明確路由到大模型(Gemini Pro):                              │
│  ├── 請求含 tool_calls 欄位(需要工具能力)                   │
│  ├── 請求長度 > 5,000 tokens(複雜上下文)                    │
│  └── 用戶明確標記為「高精度模式」                             │
│                                                              │
│  不確定 → 進入 Layer 2                                        │
└──────────────────────────┬───────────────────────────────────┘
                           │ 不確定的請求
                           ▼
┌──────────────────────────────────────────────────────────────┐
│         Layer 2:Semantic Router(~50ms)                     │
│                                                              │
│  ┌──────────────────────────────────────────────────────┐    │
│  │  Embedding Model(text-embedding-004,輕量)          │    │
│  │  → 將當前 Query 轉為向量                             │    │
│  └─────────────────────────┬────────────────────────────┘    │
│                            │                                 │
│                            ▼                                 │
│  ┌──────────────────────────────────────────────────────┐    │
│  │  In-memory Vector Index(FAISS 或小型向量快取)        │    │
│  │                                                      │    │
│  │  「簡單任務」黃金範例:                               │    │
│  │  ├── "今天天氣怎樣?"                                │    │
│  │  ├── "幫我把這段文字翻譯成英文"                      │    │
│  │  └── "這個 JSON 格式對嗎?"                          │    │
│  │                                                      │    │
│  │  「複雜任務」黃金範例:                               │    │
│  │  ├── "分析這份合約的法律風險並給出建議"              │    │
│  │  ├── "根據這些數據建立一個財務預測模型"              │    │
│  │  └── "找出這段程式碼的 bug 並修復"                   │    │
│  └─────────────────────────┬────────────────────────────┘    │
│                            │                                 │
│                            ▼                                 │
│  相似度分數:                                                  │
│  ├── 與「簡單任務」相似度 > 0.88 → Gemma-7b                  │
│  ├── 與「複雜任務」相似度 > 0.88 → Gemini Pro                │
│  └── 不確定(兩者都 < 0.88)→ 保守策略 → Gemini Pro          │
└──────────────────────────┬───────────────────────────────────┘
                           │
               ┌───────────┴───────────┐
               ▼                       ▼
┌──────────────────────┐   ┌──────────────────────────────┐
│  Gemma-7b on GKE     │   │  Gemini 1.5 Pro (Vertex AI) │
│  低延遲、低成本      │   │  高品質、有 Tool-calling      │
│  ~0.3s / ~$0.05/1Mtp │   │  ~3s / ~$1.25/1M input tp   │
└──────────────────────┘   └──────────────────────────────┘

四、黃金範例的設計:路由器的核心資產

黃金範例設計原則:

原則 1:覆蓋真實用戶查詢的分布
  不要只放教科書式的例子
  「幫我總結一下」可以很簡單,也可以很複雜(總結什麼?多長?)
  需要覆蓋邊界情況

原則 2:難以確定的案例放到「複雜」類別(保守偏誤)
  誤判方向的不對稱性:
  ├── 把複雜問題送給 Gemma(假負例)→ 回答品質差,用戶不滿 ← 嚴重
  └── 把簡單問題送給 Gemini(假正例)→ 浪費成本,但用戶滿意 ← 輕微
  所以:不確定時,送 Gemini(寧可成本高一點,不要品質差)

原則 3:定期更新
  每個月從生產日誌中抽樣,分析「哪些被路由到 Gemma 但回答品質差」
  → 這些案例加入「複雜任務」範例庫,更新路由器

範例質量評估:
  好的範例 → 在向量空間中,簡單/複雜兩個群集間的距離大(容易分類)
  差的例子 → 兩個群集高度重疊(路由器頻繁不確定)

五、Eval Pipeline:確保路由品質不下滑

路由器評估的核心挑戰:
  「這個問題被路由到 Gemma,但 Gemma 的回答對嗎?」
  → 不能只評估路由決策,也要評估路由後的最終品質

Eval Pipeline 設計:

┌──────────────────────────────────────────────────────────────┐
│             週期性 Shadow Evaluation(每日自動跑)            │
│                                                              │
│  Step 1:從生產日誌中抽取 5% 的被路由到 Gemma 的請求         │
│                                                              │
│  Step 2:Shadow Run                                          │
│          同一個請求,同時送給:                               │
│          ├── Gemma-7b(實際路由結果)                        │
│          └── Gemini Pro(黃金標準,僅用於評估,不給用戶)     │
│                                                              │
│  Step 3:比較兩者答案                                         │
│          ├── Semantic Similarity(語意相似度)               │
│          ├── LLM-as-Judge(品質評分)                        │
│          └── Task Success(任務是否完成)                    │
│                                                              │
│  Step 4:計算 Routing Error Rate                             │
│          Gemma 回答 vs Gemini 回答 差距 > 閾值的比例 → 誤判率 │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           ▼
┌──────────────────────────────────────────────────────────────┐
│            動態閾值調整                                       │
│                                                              │
│  如果某類 Query 的 Gemma 誤判率 > 10%:                      │
│  └── 自動將這類 Query 的路由閾值調高(更保守)               │
│      例:「合約相關問題」 → 閾值從 0.88 調到 0.95            │
│      效果:這類問題更容易被判為「複雜」,路由到 Gemini        │
│                                                              │
│  如果某類 Query 的 Gemma 誤判率 < 2%:                       │
│  └── 可以小幅降低閾值(增加 Gemma 的路由比例,省更多錢)     │
└──────────────────────────────────────────────────────────────┘

六、Gemma on GKE 的部署考量

為什麼要自己部署 Gemma,而不是用 Vertex AI 托管:

Vertex AI 托管:
  ├── 優點:zero ops,自動擴縮
  └── 缺點:成本比自托管高,且 Gemma 的 API 計費跟 Gemini 差不多

GKE 自托管:
  ├── 優點:只付 GPU 成本,大量使用時遠比 API 便宜
  │         L4 GPU(GKE 上):$0.60/hr
  │         Gemma-7b 吞吐量:~2,000 tokens/sec/GPU
  │         等效成本:$0.60 / (2,000 × 3600 / 1M) = ~$0.08/1M tokens
  └── 缺點:需要維護 Deployment,需要手動處理擴縮

GKE 部署考量:
  ┌────────────────────────────────────────────────────────┐
  │  HPA(Horizontal Pod Autoscaler):                    │
  │  └── 根據 GPU 使用率或請求佇列深度自動擴縮            │
  │                                                        │
  │  模型服務框架選擇:                                    │
  │  ├── vLLM(高吞吐量,KV Cache 優化)← 推薦            │
  │  ├── TGI(Text Generation Inference by HuggingFace)  │
  │  └── Triton Inference Server(NVIDIA)                │
  │                                                        │
  │  冷啟動問題:                                          │
  │  └── 保持至少 2 個 Warm Pod,避免第一個請求要等模型載入│
  └────────────────────────────────────────────────────────┘

七、成本收益分析框架

路由系統的 ROI 計算:

假設:
  每日 100,000 個請求
  平均 2,000 tokens/請求
  無路由:全部 Gemini Pro
  路由後:70% → Gemma,30% → Gemini Pro

無路由月成本:
  100,000 req × 2,000 tokens × 30 天
  = 6,000,000,000 tokens = 6,000M tokens
  × $1.25/1M = $7,500/月

路由後月成本:
  Gemini Pro(30%):
  1,800M tokens × $1.25/1M = $2,250/月

  Gemma on GKE(70%):
  4,200M tokens / (2,000 tokens/sec × 86,400 sec/day) = 需要 ~24 個 GPU 小時
  ~$1,440/月(GKE L4 GPU 費用)

  路由器費用(Embedding + 少量 LLM 判斷):~$100/月

  總計:~$3,790/月

節省:$7,500 - $3,790 = $3,710/月(節省 49%)
投資回報率:路由系統開發成本通常 1~2 個月回本

八、面試答題要點

「設計混合路由系統要解決兩個問題:準確路由 + 品質保障。

路由架構用兩層:Layer 1 是 Rule-based 快速過濾(< 1ms),處理明顯的簡單或複雜請求;Layer 2 是 Semantic Router,用輕量 Embedding 模型計算當前請求和黃金範例的相似度,超過 0.88 閾值的送 Gemma,不確定的保守策略送 Gemini。

Gemma 部署在 GKE 上用 vLLM 服務,比 Vertex AI API 便宜約 15 倍。保持至少 2 個 Warm Pod 避免冷啟動延遲。

品質保障:每日從生產日誌抽 5%,做 Shadow Run(同一請求同時跑 Gemma 和 Gemini),比較答案差距,計算誤判率。如果某類 Query 誤判率超過 10%,自動調高路由閾值,確保那類問題更容易被判為複雜、路由到 Gemini。

量化的成本節省:在 10 萬請求/天的規模,從 $7,500/月降到 $3,790/月,節省約 49%。」


系列導覽:
(二十三)RKK 實戰:多租戶 Agent 的限流、Fair-Share 與 Token 預算控制
(二十五)RKK 實戰:Self-Reflection 與幻覺校正迴圈設計

Yen

Yen

Yen