模型路由:用小模型接住八成流量
不是每個請求都需要最貴的模型。路由做得好,成本可以砍掉一半以上。
線上流量的難度分布通常很不平均:大量是簡單的分類、抽取、閒聊,少量是需要深度推理的請求。全部都用最強的模型,等於用最貴的資源做最簡單的事。
三種路由依據
- 規則路由:依任務型別、輸入長度、使用者層級決定。最好維護,建議先做這個。
- 分類器路由:用小模型或分類器判斷難度,再決定送去哪裡。
- 升級路由:先用小模型跑,結果不合格再升級到大模型。
升級路由的實作
def answer(q):
small = call(SMALL, q)
if is_acceptable(small):
return small, 'small'
return call(LARGE, q), 'large-escalated'
def is_acceptable(r):
return (r.parsed_ok # 格式合法
and r.confidence >= 0.7 # 模型自評或分類機率
and not r.refused) # 沒有棄答關鍵在 is_acceptable 要能程式判斷。可驗證的任務(結構化輸出、有標準答案的分類)最適合這種模式;開放式寫作就很難判斷,不適合。
升級路由的成本模型
# 只有在升級率夠低時才划算
有效成本 = 小模型單價 + 升級率 × 大模型單價
# 升級率超過約 40% 時,多數情況下不如直接用大模型必須量測的三件事
- 各路徑的流量比例與升級率。
- 各路徑的品質分數——小模型路徑的品質不能明顯較差。
- 總延遲,升級路徑等於跑了兩次,延遲會加倍。
路由決策要記進日誌並可回放。日後想調整門檻時,你可以用歷史資料離線模擬新門檻的成本與品質,不必上線硬試。