Laya:一個開源的系統 1 決策引擎

Laya 是一個非自回歸的決策引擎,專為取代生成式大語言模型(LLM)來處理簡單且結構化的反射式決策而設計。透過使用雙向編碼器而非自回歸的詞元生成,Laya 在單一 GPU 上可於約 32.8 毫秒內對結構化模式提供校準的機率預測,使其顯著比生成式替代方案更快且更具成本效益。

AI 決策的系統 1 方法

現代 AI 流程經常因大型生成式 LLM(系統 2)被用於僅需反射式回應(系統 1)的任務而產生瓶頸。例如工單路由、垃圾郵件檢測和越獄識別等任務並不需要文字生成,而是需要特定的標籤或機率。

使用生成式 LLM 來處理這些任務會帶來多項效率問題:

  • 延遲:需等待詞元串流(500ms 到 2,000ms)。
  • 成本:8B+ 參數模型的推論成本高昂。
  • 可靠性:需使用正則表達式或 JSON 解析器從自由格式文字中提取標籤。
  • 校準性:LLM 常常虛構置信度分數(例如輸出「confidence: 0.95」但缺乏數學依據)。

Laya 透過單次前向傳播提供即時且校準的機率,消除了幻覺或格式錯誤 JSON 輸出的可能性。

決策原語與架構

Laya 使用三種核心原語,對任何狀態(文字、電子郵件或 JSON)評估類型化問題:

  1. Choice:從字典式標準中選擇一個選項,返回所選鍵、機率分佈以及校準的置信度分數。
  2. Score:將狀態置於序數量表上(例如 0 到 3),返回預期等級與分佈。
  3. Noul:回傳布林問題的校準機率 $P(\text{true})$,範圍為 0.0 到 1.0。

模型檢查點

Laya 透過 Hugging Face 上的封裝 Hub 提供,包含三個專用檢查點:

檢查點 主幹編碼器 參數 上下文 主要優勢
laya ModernBERT-large 421M 512 英文分類、防護機制、電子郵件分類
laya-multilingual mmBERT-base 322M 1024 支援 100+ 語言、跨語言 NLI
laya-typed-decisions ModernBERT-large 421M 1024 代理可觀測性、發票處理、安全警報

多語言路由與腳本檢測

Laya 開發中的一個關鍵發現是:以英語為中心的模型即使無法讀取輸入腳本(例如在高棉文上報告 95% 置信度,但準確率為 0%),仍會報告高置信度。由於置信度門檻對不支援的腳本不可靠,Laya 實作了亞毫秒級的純 Python Router

此路由器會檢查 22 種字母系統中的 Unicode 腳本,並分析拉丁語停用詞分佈,於前向傳播前將流量路由至適當模型。檢測開銷可忽略不計,通常介於 0.09ms(英語)至 0.73ms(大型 JSON 文件)之間。

性能比較:Laya 對 TypeSafe Jev

Laya 被定位為 TypeSafe Jev 的開源替代方案。基準測試顯示其在速度與成本上具有顯著優勢,儘管在零樣本能力上存在一些妥協。

指標 TypeSafe Jev 1.13.0 Laya(已路由) 差異
延遲 P50(1 個問題) 236–276 ms 32.8 ms 快 7.8 倍
延遲 P50(10 個問題批次) ~1,500 ms 72.3 ms 快 20 倍
校準誤差(ECE) 0.246 0.081 校準性提升 3 倍
每 100 萬詞元成本 $0.042 $0.00 免費(Apache 2.0)
權重與程式碼 封閉 API 開源 可自托管

工程限制與需求

Laya 是專門化用的基礎模型,而非全知的零樣本神諭。使用者應注意以下限制:

  • 微調必要性:預設基礎模型在特定基準(如 typed-decisions)上得分可能接近隨機(~0.35)。高準確率(0.766)需透過在訓練集上微調才能達成。
  • 選擇預算:當選擇架構超過 20 個選項時,因頭部長度的詞元預算限制,性能會下降。
  • 上下文視窗:檢查點限制在 512–1024 詞元,遠小於 Jev 所報告的 32k 上下文視窗。
  • 溫度校準:為將預期校準誤差從 0.466 降低至 0.081,應針對每種問題類型擬合一個標量溫度以符合領域分佈。

社群見解與反駁

技術使用者之間的討論凸顯了「模型」與「產品」之間的分歧。雖然 Laya 提供權重與架構,但批評者認為 Jev 的價值在於其零樣本表現以及透過 API 部署的便利性。

「Jev 成功的關鍵在於它無需微調即可運作……能在數分鐘內解決任意分類問題,而非花上一週,這是一個巨大的優勢。」

其他使用者指出,Laya 的方法實質上是回歸「傳統機器學習」,基本上是利用 BERT 模型架構並搭配更新的訓練方法(RLCD)來更高效地解決分類任務,優於生成式 LLM。

快速入門實作

Laya 可透過 pip 安裝(pip install laya>=0.3.3),並搭配 Router 來處理多架構決策:

from laya import Router

router = Router(preload=True)

questions = {
    "queue": {
        "type": "choice",
        "instructions": "哪個工程隊列擁有此工單?",
        "criteria": {
            "infrastructure": "伺服器中斷、網路停擺",
            "billing": "退款、SLA 信用"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "此工單有多緊急?",
        "criteria": ["低", "中", "高", "緊急"]
    }
}

res = router.predict({"body": "API 無法使用!"}, questions)

Sources

相關