FDE 面試準備指南(四十七):RKK 實戰——大模型與地端微型模型的智慧混合路由與冷啟動優化

大多數團隊的做法:讓小模型先回答,覺得不好再丟給大模型——結果是雙倍延遲加雙倍成本。
正確的做法:在小模型生成第 10 個 Token 的那一刻,就已經知道要不要升級了。
路由的決策點不在答案完成之後,
而在答案開始生成的前幾個 Token 之間。


面試情境

面試官:「一個金融科技客戶,為了隱私合規,90% 的查詢必須留在地端私有伺服器處理。他們在地端部署了 Gemma-2-9b,雲端備用 Gemini Pro。但目前的架構是:小模型先跑完整回答,人工審核覺得不好才重送到雲端,導致平均延遲高達 6.8 秒。你如何重新設計路由機制,讓延遲降到 3.6 秒以下,同時確保敏感 PII 資料絕不離開地端?」


一、核心問題:為什麼「先跑再判斷」的架構從根本上就錯了

傳統雙軌架構的根本缺陷:

  ┌─────────────────────────────────────────────────────────────┐
  │  用戶 Prompt → 地端小模型(完整推理 3.5s)                     │
  │               ↓                                             │
  │          品質評估(人工或 LLM 評分 0.5s)                     │
  │               ↓                                             │
  │  [品質不足] → 雲端大模型(完整推理 2.8s)                     │
  │                                                             │
  │  最壞情況延遲 = 3.5 + 0.5 + 2.8 = 6.8 秒                    │
  │  最壞情況成本 = 地端 + 評分 LLM + 雲端大模型(三份費用)        │
  └─────────────────────────────────────────────────────────────┘

為什麼這個架構在生產環境中必然崩潰:

  問題 1:確定性延遲疊加
  └── 任何需要升級的查詢都承受 100% 的雙倍延遲,沒有優化空間。
      金融客服場景中,約 35% 的查詢需要升級 → 平均延遲被拉高 2.4s。

  問題 2:「評估 LLM」是一個謊言
  └── 用 LLM 評分 LLM 的輸出,等於再跑一次推理。
      GPT-4 Judge 模式:額外 $0.03/query、額外 1.2s。
      這讓「省成本部署小模型」的初衷完全破功。

  問題 3:冷啟動的隱藏殺手
  └── 地端 GPU 伺服器閒置後 VRAM 被釋放,冷啟動需要 8-12 秒載入模型。
      金融客服的流量高峰突發(早上 9:00 開盤時 QPS × 10),
      前 30 個請求全部超時,客戶體驗災難性崩潰。

  問題 4:PII 資料外洩風險
  └── 若路由邏輯沒有 PII 偵測層,包含身份證字號、帳戶餘額的查詢
      可能在「升級」過程中被送往雲端 API,直接違反 PDPA/GDPR。

正確的心智模型:
  路由決策 ≠ 「跑完再評估」
  路由決策 = 「開始生成的前 10 個 Token 就已經告訴你答案了」

  資訊理論基礎:
  一個對答案不確定的模型,其生成的前幾個 Token 的概率分佈會極度分散。
  H = -∑ p(x) log p(x) 熵值高 → 模型不確定 → 早點放棄,送給大模型。
  熵值低 → 模型對接下來要說什麼非常有把握 → 繼續本地生成。

這個問題的本質是推理資源的最優分配:讓對的模型處理對的查詢,而不是讓所有查詢都走同一條路。


二、三個演進階段

╔══ Phase 1(POC / < 10K 用戶)══╗

最小可行路由:基於規則的靜態分流

┌──────────────────────────────────────────────────────────────┐
│  Phase 1 架構:靜態規則路由                                    │
└──────────────────────────────────────────────────────────────┘

  用戶 Prompt
       │
       ▼
┌─────────────────┐
│  規則分類器      │  ← 關鍵字字典 + 問題長度 + 類型標籤
│  (Python dict)  │     例:長度 < 50 字 → 本地
│                 │         包含「法規」「訴訟」→ 雲端
└────────┬────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
┌───────┐  ┌───────────┐
│ 地端  │  │  雲端     │
│Gemma  │  │Gemini Pro │
│ 9b   │  │           │
└───────┘  └───────────┘

Phase 1 新增元件(vs 無路由基線):

  • 關鍵字字典分類器(Python dict,< 1ms)
  • 問題長度閾值規則(< 50 字走本地)
  • 固定路由比例目標(80% 本地 / 20% 雲端)

成本 / 複雜度:

  • 開發時間:2–3 週,1 名工程師
  • 基礎設施:地端 1 × A100 GPU 節點,雲端 Vertex AI API
  • 月費用估算(10K 用戶 × 50 queries/月):
    • 地端 GPU 租用:$800/月
    • 雲端 Gemini Pro:10K × 20% × $0.015 = $30/月
    • 總計:≈ $830/月

遺留問題:

  • 關鍵字規則維護困難,新業務場景需手動更新字典
  • 邊界案例(問題既長又簡單)路由錯誤率高達 18%
  • 沒有即時置信度感知,仍有部分雙倍延遲
  • 沒有 PII 偵測,敏感資料外洩風險存在

╔══ Phase 2(MVP / 10K–200K)══╗

生產級路由:Cross-Encoder 分類器 + 基礎熵值監控

┌──────────────────────────────────────────────────────────────┐
│  Phase 2 架構:Cross-Encoder 前置分類 + PII 強制本地          │
└──────────────────────────────────────────────────────────────┘

  用戶 Prompt
       │
       ▼
┌─────────────────┐
│  PII 偵測層     │  ← NER (spaCy) + Regex 身份證/帳號
│  (< 5ms)        │     命中 → 強制本地,永不升級
└────────┬────────┘
         │ 非 PII
         ▼
┌─────────────────┐
│ Cross-Encoder   │  ← mBERT fine-tuned(1萬筆標注資料)
│  分類器         │     輸出:[本地置信度, 升級置信度]
│  (< 20ms)       │     閾值:升級置信度 > 0.7 → 雲端
└────────┬────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
┌──────────────────────────────┐  ┌───────────────┐
│  地端 vLLM                   │  │  雲端         │
│  Gemma-2-9b                  │  │  Gemini Pro   │
│  logprobs=True               │  │  Vertex AI    │
│  + 熵值監控(閾值 H > 2.5)   │  │               │
└──────────────────────────────┘  └───────────────┘
         │
    H 超閾值時
         │
         ▼
  [TCP RST 中斷]
  原始 Prompt → 雲端(帶 Context Cache ID)

Phase 2 新增元件(vs Phase 1):

  • mBERT Cross-Encoder(需要標注資料集,延遲 < 20ms)
  • PII 偵測層(spaCy NER + Regex,< 5ms)
  • vLLM logprobs API 開啟(overhead < 5ms)
  • 基礎熵值計算 + HTTP/gRPC 中斷機制
  • 地端模型 Keep-Warm 機制(避免冷啟動)

成本 / 複雜度:

  • 開發時間:6–8 週,2–3 名工程師
  • 標注資料:需 1 萬筆 query 路由標注(外包約 $3,000)
  • mBERT fine-tuning:Cloud Run GPU $120 一次性費用
  • 平均延遲(本地路徑):< 2.1s(vs Phase 1 的 3.5s)
  • 升級路徑延遲:< 3.6s(因早停,省去 2.8s 完整推理)

遺留問題:

  • Cross-Encoder 需要定期重新標注(業務場景擴展時)
  • 雲端大模型沒有預熱,突發流量時冷啟動 8–12s
  • 熵值閾值 H > 2.5 是固定值,不同業務類型最佳閾值不同
  • 缺少路由決策的 A/B 測試基礎設施

╔══ Phase 3(Scale / 200K–1M+)══╗

企業級路由:早停熵值路由 + 動態閾值 + 多層冷啟動優化

┌──────────────────────────────────────────────────────────────┐
│  Phase 3 架構:完整 Early-Exit Confidence Routing 系統        │
└──────────────────────────────────────────────────────────────┘

     用戶請求(QPS: 500–2000)
           │
           ▼
  ┌─────────────────────┐
  │    API Gateway      │  ← Cloud Run,全球負載均衡
  │    Rate Limiting    │     限流:500 QPS/node
  └──────────┬──────────┘
             │
             ▼
  ┌─────────────────────┐
  │   PII 偵測層        │  ← spaCy NER + Regex + DLP API
  │   (< 5ms P99)       │     命中 → 強制本地 Flag,寫入 Audit Log
  └──────────┬──────────┘
             │ 非強制本地
             ▼
  ┌─────────────────────┐
  │  輕量前置分類器     │  ← 嵌入相似度(FAISS,< 3ms)
  │  快取路由記憶體      │     歷史相似 Query 結果快取
  └──────────┬──────────┘
             │
        ┌────┴────┐
        │         │
        ▼         ▼
┌───────────────────┐    ┌──────────────────────┐
│   地端 vLLM 叢集  │    │  雲端 Vertex AI       │
│   Gemma-2-9b      │    │  Gemini Pro           │
│   A100 × 4 節點   │    │  預熱實例(3 個)      │
│   logprobs=True   │    │  Context Cache 支援   │
│                   │    │                      │
│ ┌───────────────┐ │    └──────────────────────┘
│ │ 熵值監控微服務│ │              ▲
│ │ Token 1-10   │ │              │
│ │ H = -∑p log p│ │    [早停升級] │
│ │ H > 閾值(動態)│─┼──────────────┘
│ └───────────────┘ │
│   Keep-Warm:      │
│   VRAM 常駐       │
└───────────────────┘
             │
             ▼
  ┌─────────────────────┐
  │  路由 Metrics 層    │  ← Prometheus + Grafana
  │  A/B 閾值實驗       │     動態調整各業務類型閾值
  │  動態閾值 API       │     每 6 小時重新校準
  └─────────────────────┘

Phase 3 新增元件(vs Phase 2):

  • FAISS 嵌入快取路由(重複 Query 0ms 決策,命中率 ~40%)
  • 動態閾值校準(每 6 小時,按業務類型調整 H 閾值)
  • Vertex AI 預熱實例(3 個常駐,突發時 < 1s 啟動)
  • Cloud Pub/Sub 非同步審計日誌(PII 路由決策 100% 留存)
  • A/B 測試框架(不同閾值策略的對照實驗)

成本 / 複雜度:

  • 地端 4 × A100 節點:$6,400/月
  • Vertex AI 預熱實例(3 個):$1,200/月
  • 雲端推理成本(1M 用戶 × 20% 升級 × $0.015):$3,000/月
  • 總計:≈ $10,600/月(vs 全雲端方案 $22,500/月,節省 53%)
  • 平均延遲:本地路徑 1.8s,升級路徑 3.2s(vs 原始 6.8s)

三、Early-Exit 熵值路由的核心實作細節

這是整個架構最關鍵的技術突破。傳統路由在答案完成後才判斷,而熵值路由在答案開始的第 10 個 Token 就做出決策。

Early-Exit Confidence Routing 完整流程:

┌──────────────────────────────────────────────────────────────┐
│  步驟 1:開啟 vLLM logprobs API                               │
└──────────────────────────────────────────────────────────────┘

  地端 vLLM 設定:
  POST /generate
  {
    "prompt": "用戶的問題",
    "logprobs": 5,           # 每個 Token 位置輸出前 5 高概率
    "stream": true,          # 串流模式,Token by Token 傳回
    "max_tokens": 512
  }

  返回格式(每個 Token):
  {
    "token": "我",
    "logprobs": {
      "我": -0.12,    → p("我") = 0.887
      "您": -2.31,    → p("您") = 0.099
      "這": -3.45,    → p("這") = 0.032
      "無": -4.21,    → p("無") = 0.015
      "抱": -5.10,    → p("抱") = 0.006
    }
  }

  overhead:< 5ms per token(vs 不開啟 logprobs 的基線)

┌──────────────────────────────────────────────────────────────┐
│  步驟 2:熵值計算與閾值判斷                                    │
└──────────────────────────────────────────────────────────────┘

  熵值計算(Shannon Entropy):
  H = -∑ p(x) log₂ p(x)

  案例 A:模型非常確定(低熵)
  概率分佈:[0.91, 0.05, 0.02, 0.01, 0.01]
  H = -(0.91×log₂0.91 + 0.05×log₂0.05 + ...) = 0.52 bits
  判斷:H < 2.5 → 繼續本地生成 ✓

  案例 B:模型極度不確定(高熵)
  概率分佈:[0.22, 0.20, 0.19, 0.21, 0.18]
  H = -(0.22×log₂0.22 + ...) ≈ 2.32 bits
  判斷:H > 2.5 → 立即升級到雲端 ✗

  拒絕詞偵測(補充機制):
  前 10 個 Tokens 中出現:
  └── 「我不確定」「抱歉,我無法」「這超出我的」
  → 不用等熵值,直接觸發升級

┌──────────────────────────────────────────────────────────────┐
│  步驟 3:早停中斷與無縫升級                                    │
└──────────────────────────────────────────────────────────────┘

  中台微服務(Cloud Run)的決策邏輯:

  監控第 1-10 個 Token:
  ├── 任一 Token 熵值 H > 2.5 → 觸發中斷
  └── 或連續 2 個拒絕詞 → 觸發中斷

  中斷流程:
  1. 向地端 vLLM 發送 TCP RST(中止 TCP 連線)
     → vLLM 接收到連線中斷,停止生成,釋放 KV Cache
     → 地端 GPU 算力立刻空閒(避免浪費剩餘的 ~450 Tokens 推理)

  2. 同時發出雲端請求:
     → 原始用戶 Prompt(未修改)
     → 附上 Context Cache ID(如果有歷史對話 Cache)
     → 優先使用 Vertex AI 預熱實例(< 1s 冷啟動)

  3. 用戶側感知:
     → 前 10 個 Token 生成約 0.3s
     → 中斷 + 切換到雲端約 0.2s
     → 雲端生成 2.7s
     → 總計 3.2s(vs 雙倍推理的 6.8s)

  延遲節省原理:
  └── 本地跑完再升級:3.5s(地端)+ 2.8s(雲端)= 6.3s
  └── Early-Exit 升級:0.3s(早停)+ 0.2s(切換)+ 2.7s(雲端)= 3.2s
  └── 節省:3.1s(節省 49%)

四、PII 強制本地路由的設計

隱私合規是整個雙軌架構的存在理由,PII 路由層必須做到零誤報(false negative)。

PII 偵測架構(多層防禦):

┌──────────────────────────────────────────────────────────────┐
│  Layer 1:Regex 快速掃描(< 1ms)                             │
└──────────────────────────────────────────────────────────────┘

  台灣 PII 正則表達式:
  身份證字號:[A-Z][1-2]\d{8}
  銀行帳號:  \d{7,14}(搭配金融機構關鍵字)
  手機號碼:  09\d{8}
  統一編號:  \d{8}(8位數字)

  命中任一 → 立即標記為 PII_DETECTED,跳過後續層

┌──────────────────────────────────────────────────────────────┐
│  Layer 2:spaCy NER 實體識別(< 3ms)                         │
└──────────────────────────────────────────────────────────────┘

  識別實體類型:
  ├── PERSON(人名):「幫我查李大明的帳戶」
  ├── ORG(機構名):「我在○○銀行的貸款」
  ├── MONEY(金額):「餘額 $285,000」
  └── ID(識別碼):「帳號 1234567890123」

  spaCy 模型:zh_core_web_lg(中文大型模型)
  準確率:PERSON 98.2%、MONEY 99.1%

┌──────────────────────────────────────────────────────────────┐
│  Layer 3:Cloud DLP API(非同步審計,不阻塞路由)              │
└──────────────────────────────────────────────────────────────┘

  Cloud Data Loss Prevention API:
  ├── 對每個已路由到本地的請求做非同步深度掃描
  ├── 掃描結果寫入 Cloud Pub/Sub → BigQuery 審計表
  └── 若 DLP 發現 Regex/NER 未捕捉的 PII → 更新 Regex 規則庫

  PII 路由審計保存策略:
  ├── 路由決策記錄保存 7 年(PDPA 合規)
  ├── 敏感 Query 本身不保存(只記錄 Hash + 決策)
  └── 月報:PII 命中率、漏報率、規則更新頻率

強制本地路由的效果:
  零升級違規(升級到雲端的請求中 PII 命中率 = 0%)
  PII 偵測總延遲:< 5ms(Regex + NER,串行執行)
  PII 偵測誤報率(非 PII 被標記):< 0.8%(影響效率,可接受)

五、冷啟動優化策略

地端模型的冷啟動是延遲的隱藏殺手,必須在架構層面徹底解決。

冷啟動問題的規模:

  Gemma-2-9b 模型規格:
  ├── 模型參數:9B(約 18GB FP16 權重)
  ├── 載入到 A100 VRAM:需要 8–12 秒(NVMe 讀取 + CUDA 初始化)
  └── 冷啟動期間請求:全部超時(4s timeout)

  金融客服流量模式:
  ├── 早上 9:00 開盤:QPS 從 0 突增到 400(10倍峰值)
  ├── 午休 12:00–13:00:QPS 下降 80%(VRAM 有被釋放風險)
  └── 收盤 15:00:第二波突發

  若無冷啟動優化:
  早上 9:00 前 30 個請求(QPS 突破閾值後)全部超時。
  用戶體驗評分:1/5 星

┌──────────────────────────────────────────────────────────────┐
│  策略 1:地端 Keep-Warm(模型常駐 VRAM)                      │
└──────────────────────────────────────────────────────────────┘

  vLLM 設定:
  ├── --gpu-memory-utilization 0.85:預留 15% 給系統
  ├── --max-model-len 8192:設定最大上下文長度(影響 KV Cache)
  └── 不設定 idle timeout:模型永遠常駐於 VRAM

  成本代價:
  └── A100(80GB VRAM)全天保留 → $3.50/小時 × 24 = $84/天
  └── 但避免了 30 次超時 × 平均訂單損失 $15 = $450/天
  └── ROI 非常正面

  Keep-Warm 的監控:
  └── Prometheus 監控 VRAM 使用率(vllm:gpu_cache_usage_perc)
  └── 告警:VRAM 使用率 < 70%(可能模型已卸載)→ 立即重載

┌──────────────────────────────────────────────────────────────┐
│  策略 2:雲端大模型 Vertex AI 預熱實例                        │
└──────────────────────────────────────────────────────────────┘

  Vertex AI Dedicated Serving(預熱實例):
  ├── 最少 3 個實例常駐(覆蓋基線雲端升級流量)
  ├── 自動擴展:上限 20 個實例(峰值應對)
  └── 冷啟動時間:常駐實例 < 1s,新實例 15–20s

  費用分析:
  ├── 3 個 Gemini Pro 預熱實例:$1,200/月(固定費用)
  ├── 節省的冷啟動損失:雲端升級請求 P99 延遲從 22s → 3.2s
  └── 高峰時段升級請求成功率:從 76% → 99.2%

┌──────────────────────────────────────────────────────────────┐
│  策略 3:流量預測 + 提前暖機                                  │
└──────────────────────────────────────────────────────────────┘

  基於歷史流量的預測暖機:
  ├── 每天 8:45 → 自動觸發地端模型健康檢查(確認 VRAM 常駐)
  ├── 每天 8:50 → 發送 5 個 Dummy Warm-up Requests(預熱 KV Cache)
  └── 每天 11:50 → 檢查午休期間 VRAM 狀態,必要時預載

  Dummy Warm-up Request 設計:
  └── 內容:代表性的簡單問題(如「你好,請問可以幫我什麼?」)
  └── 目的:讓 CUDA Kernel 進入熱態,KV Cache 機制初始化
  └── 延遲效果:第一個真實請求從 3.8s 降到 1.9s

六、動態閾值校準與 A/B 測試

靜態閾值 H > 2.5 在不同業務場景下表現差異極大,需要動態調整。

不同業務類型的最佳熵值閾值:

  業務類型          最佳閾值    說明
  ─────────────────────────────────────────────────
  基本帳戶查詢      H > 3.0    問題簡單,小模型通常夠用
  理財產品諮詢      H > 2.0    需要更嚴格的升級觸發
  法規合規問題      H > 1.5    高風險,寧可多升級
  一般問候/簡單查詢  H > 3.5    幾乎都讓小模型處理

  固定閾值 2.5 的問題:
  ├── 對帳戶查詢過嚴(不必要地升級 23% 的簡單查詢)
  └── 對合規問題過鬆(15% 的合規問題沒有升級,答案品質差)

動態閾值校準流程(每 6 小時執行一次):

  1. 從 BigQuery 取最近 6 小時的路由日誌
  2. 計算每個業務類型的:
     └── 本地模型答案品質評分(用戶回饋 + 自動評估)
     └── 升級率(升級到雲端的比例)
     └── 用戶滿意度(CSAT)
  3. 對閾值做梯度優化(最大化:品質 × 效率 × 成本)
  4. 更新 Redis 中的閾值配置(動態讀取,無需重啟)

A/B 測試框架:

  ┌─────────────────┐     ┌─────────────────┐
  │  Control Group  │     │  Treatment Group │
  │  H 閾值 = 2.5   │     │  H 閾值 = 2.2   │
  │  10% 流量       │     │  10% 流量        │
  └─────────────────┘     └─────────────────┘
           │                        │
           └────────────┬───────────┘
                        │
              ┌─────────▼─────────┐
              │  統計顯著性測試   │
              │  p < 0.05 判斷    │
              │  贏家閾值推廣至   │
              │  100% 流量        │
              └───────────────────┘

  實驗週期:48 小時(確保覆蓋完整的工作日流量模式)
  評估指標:用戶滿意度(CSAT)、升級率、平均延遲、每查詢成本

七、觀測性與故障診斷

完整觀測性架構:

┌──────────────────────────────────────────────────────────────┐
│  Metrics(Prometheus + Grafana)                              │
└──────────────────────────────────────────────────────────────┘

  路由層指標:
  ├── router_local_ratio:本地路由比例(目標:> 78%)
  ├── router_escalation_rate:升級率(目標:< 22%)
  ├── router_entropy_histogram:熵值分佈直方圖
  ├── router_early_exit_count:早停觸發次數/分鐘
  └── router_pii_detection_rate:PII 命中率

  地端推理指標:
  ├── vllm:gpu_cache_usage_perc:VRAM 使用率(告警:< 70%)
  ├── vllm:num_requests_running:目前推理中的請求數
  ├── vllm:time_to_first_token:TTFT(目標:< 200ms P99)
  └── vllm:model_load_time:模型載入時間(冷啟動監控)

  雲端指標:
  ├── vertex_ai_latency:雲端推理延遲(目標:< 3s P95)
  ├── vertex_ai_error_rate:API 錯誤率(告警:> 0.1%)
  └── vertex_ai_cost_per_hour:每小時費用

┌──────────────────────────────────────────────────────────────┐
│  Traces(Cloud Trace)                                        │
└──────────────────────────────────────────────────────────────┘

  每個請求的完整鏈路:
  請求接收 → PII 偵測(5ms)→ 分類器(20ms)→
  vLLM 開始(Xms)→ [早停決策(Yms)] →
  [TCP RST(1ms)→ 雲端發送(10ms)→ 雲端推理(Zms)]→
  響應返回

  關鍵 Span 標記:
  ├── span.early_exit = true/false
  ├── span.entropy_value = H 值(浮點數)
  ├── span.pii_detected = true/false
  └── span.route = "local" | "cloud" | "forced_local"

┌──────────────────────────────────────────────────────────────┐
│  常見故障與診斷鏈                                             │
└──────────────────────────────────────────────────────────────┘

  症狀 A:升級率突然從 20% 飆到 55%
  → Grafana:router_escalation_rate 告警
  → 看 router_entropy_histogram:熵值整體分佈上移
  → 可能原因:新業務類型的問題湧入(小模型訓練資料外分佈)
  → 解法:臨時調高閾值(H > 3.0),同時觸發模型更新流程

  症狀 B:平均延遲從 2.1s 突升到 8.3s
  → Trace:看 vLLM span 時長,發現 TTFT 從 150ms → 9.2s
  → Metrics:vllm:gpu_cache_usage_perc 降到 0%(模型卸載了!)
  → 可能原因:另一個服務佔用了 VRAM,觸發了 OOM 卸載
  → 解法:重新載入模型(2 分鐘),並設定 GPU 資源隔離

  症狀 C:PII 稽核日誌發現雲端請求含有帳戶資訊
  → Cloud Pub/Sub DLP 審計 Topic 收到告警
  → 追查 Trace:看到 pii_detected=false,但 DLP 偵測到 PII
  → 可能原因:Regex 未覆蓋新型帳號格式(銀行系統更新)
  → 解法:更新 Regex 規則(< 5 分鐘),重新過濾歷史日誌

八、為什麼選 X 不選 Y

選擇選 X 的理由不選 Y 的理由Flip Condition
熵值早停路由 vs LLM-as-Judge在 Token 10 決策,額外 overhead < 5ms;無需額外推理費用;可即時中斷。每次節省 3.1sLLM-as-Judge 需要跑完整推理才能評分,額外 $0.03/query + 1.2s;等同於三層費用(地端 + Judge + 雲端)若查詢平均長度 < 3 個 Token(例如純關鍵字搜尋),熵值資訊不足,此時用規則路由
TCP RST 中斷 vs Graceful Cancel即時釋放 GPU(< 1ms),地端算力立刻可用;適合高並發場景(500+ QPS)Graceful Cancel 需等待 vLLM 完成當前 Token 批次,平均多耗費 80–200ms;在高 QPS 下 GPU 被「半廢棄」的請求佔用若地端 GPU 閒置率 > 60%(輕載),可用 Graceful Cancel 保留部分生成結果給快取使用
mBERT Cross-Encoder vs 規則字典泛化能力強,新業務類型自動覆蓋;F1 = 0.91 vs 規則字典 0.74;不需手動維護字典規則字典:需持續人工更新,18% 邊界案例誤路由;對同義詞和語意變形完全無感若業務類型固定(< 5 類型,語料穩定),規則字典的 < 1ms 延遲 + 零標注成本更具優勢
vLLM logprobs vs 外部分類服務推理同步取得,overhead < 5ms;不需額外網路 hop;天然和推理引擎整合外部分類服務:每次請求多一次 HTTP 往返(15–50ms);服務依賴鏈增加故障點;費用 $0.001–0.003/query 額外成本若地端推理引擎不支援 logprobs(如 llama.cpp CPU 模式),外部輕量分類器是唯一選項
Vertex AI 預熱實例 vs 按需啟動雲端升級 P99 延遲從 22s → 3.2s;突發流量(× 10 QPS)時不丟請求;月費 $1,200 固定,ROI 明確按需啟動:平均冷啟動 15–20s;突發時 76% 的升級請求超時;用戶流失率估算每月 $8,000 損失若升級率 < 5%(雲端請求稀少),預熱實例成本 > 收益,可改用最小 1 個實例 + Pub/Sub 異步排隊
spaCy NER + Regex vs 純 LLM PII 偵測延遲 < 5ms(同步阻塞路由決策路徑上);規則透明可審計;誤報率 0.8%;符合法規要求純 LLM PII 偵測:需 LLM 推理 200–800ms;在路由決策前增加不可接受的延遲;且 LLM 對 PII 判斷有概率性誤差(不適合合規場景)若僅做非同步稽核(不阻塞路由),LLM PII 偵測準確率更高(99.5%),適合事後審查

九、系統效應:優化前後對比

指標優化前(雙倍推理架構)優化後(早停熵值路由)改善幅度
平均請求延遲(升級路徑)6.8s(地端完整 + 雲端完整)3.2s(早停 0.3s + 切換 0.2s + 雲端 2.7s)-53%
平均請求延遲(本地路徑)3.5s1.8s(VRAM 常駐,KV Cache 熱態)-49%
P99 延遲(升級路徑)14.2s(包含冷啟動)4.1s(Vertex AI 預熱實例)-71%
每查詢成本(平均)$0.0052(地端 + Judge + 20% 雲端)$0.0018(地端 $0.0001 × 80% + 雲端 $0.015 × 20%)-65%
月總費用(1M 查詢/月)$5,200$1,800-65%
本地路由比例80%(靜態規則,精度差)83.5%(熵值路由,精度高)+3.5pp
PII 外洩事件不確定(無偵測層)0 次(雙層 PII 防護)100% 消除
冷啟動超時率12.3%(峰值突發時)0.1%(Keep-Warm + 預熱實例)-99%
升級路由正確率74%(人工審核主觀)91.2%(熵值閾值 + 自動校準)+17.2pp
地端 GPU 算力浪費100%(即使升級也跑完整推理)8%(早停後僅浪費 10 Tokens 推理)-92%
用戶滿意度(CSAT)3.2/5(延遲投訴多)4.4/5+37.5%

十、系統效應:整體架構演進圖

架構演進總覽:

  Phase 1(靜態規則)         Phase 2(Cross-Encoder)    Phase 3(熵值早停)
  ─────────────────           ─────────────────────       ─────────────────
  
  Prompt → 規則字典            Prompt → PII 偵測           Prompt → PII 偵測
      │                            │                           │
  ┌───┴───┐                    Cross-Encoder                 FAISS 快取路由
  │  地端  │ 完整推理                │                           │
  └───────┘    ↓               ┌───┴───┐                    ┌───┴────────────┐
             品質差             │  地端  │ logprobs=True      │  地端 vLLM     │
               ↓               └───────┘    │                │  Token 1-10   │
           雲端完整推理           熵值監控 ──┤                │  熵值計算     │
                                            │早停             └───────┬────────┘
                                          TCP RST                     │ H > 閾值
                                            │                         │
                                          雲端                      TCP RST
                                                                      │
                                                                    雲端(預熱)

  延遲:6.8s                  延遲:3.6s                   延遲:3.2s
  成本:$0.0052/q             成本:$0.0028/q              成本:$0.0018/q
  PII 保護:無                PII 保護:有                 PII 保護:有 + 審計
  冷啟動:12%超時             冷啟動:3%超時               冷啟動:0.1%超時

十一、面試答題要點

「這個問題的核心矛盾是:傳統的『先跑完再判斷』路由,把路由決策點放在答案完成之後,導致任何需要升級的查詢都承受雙倍延遲。我的解法是把決策點前移到答案生成的前 10 個 Token:透過 vLLM 的 logprobs API(overhead < 5ms),即時計算 Shannon 熵值 H = -∑p log p,若 H > 2.5 代表模型對當前答案高度不確定,立刻送出 TCP RST 中斷地端生成,同步將原始 Prompt 送到 Vertex AI 預熱實例。這個早停機制讓升級路徑延遲從 6.8s 降到 3.2s(-53%),同時節省了 92% 的地端 GPU 算力浪費。在 PII 保護方面,我在路由決策上游設計雙層防禦:Regex(< 1ms)+ spaCy NER(< 3ms)同步阻塞路由,任何 PII 命中都強制本地路由,永不升級到雲端,達成零 PII 外洩事件。架構從 Phase 1 的靜態規則字典,演進到 Phase 2 的 Cross-Encoder(F1 = 0.91),最終在 Phase 3 加入動態閾值校準(每 6 小時自動校準各業務類型的最佳 H 閾值)和 FAISS 嵌入快取路由(重複查詢命中率 ~40%,0ms 決策),讓整體每查詢成本從 $0.0052 降到 $0.0018(-65%)。」


系列導航

Part 46:前一篇主題 | Part 48:下一篇主題

Yen

Yen

Yen