一張生成的標題卡,標題為「Laya 詳解」,下方副標題為「一個不寫出任何 token 就能回答的決策模型」,頁尾則寫著「除另有標示外,所有數據均依據 Laya 模型卡」。
Engineering & Research

Laya 解析:一種無須寫出任何一個 Token 即可回答的決策模型

作者

Rowan Sterling

發佈日期

最新模型 · 20查看全部模型
基準測試:Artificial Analysis · 每日更新
返回全部文章

Laya 最有趣的地方不在於它的速度,而在於你提供給它的每一個選項都會在它各自的 [MASK] 詞元上被評分,然後機率會針對那一個問題的選項做 softmax。Convai Innovations 於 2026 年 9 月 18 日在 Hugging Face 上以 Apache 2.0 授權發布 Laya 的權重——三個檢查點、一個儲存庫、英文模型有 4.21 億個參數。沒有輸出詞元。沒有解碼迴圈、沒有要解析的 JSON、沒有會忘了關的括號。你交給它一個狀態和一組帶型別的問題,一次前向傳遞之後,你就會得到在具名選項之間的選擇、帶有預期等級的序數分數,或某個陳述為真的機率。這個設計有個大家常忽略的後果:因為答案空間是每次請求時組裝的,而不是烘焙進詞彙輸出頭裡,所以你今天下午發明的結構描述不需要重新訓練。它也有個限制,而專案在自己的模型卡上直白地說明了:基礎檢查點在帶型別決策基準上得分 0.362,對照隨機猜測的 0.318,以及總是回答多數類別的 0.461。Convai 自己的那句話是你該記在腦海裡的——「Laya 是易於特化的快速基礎,不是零樣本決策引擎。」顯而易見的比較對象是 TypeSafe AI 的 Jev,一個託管的 System One 模型,沒有公開權重、沒有公開參數量,也沒有公開基礎模型。Laya 是針對它的開放權重解答。這個解答對你是否實用,幾乎完全取決於你試圖取代的是管線的哪一半。

Laya 實際上是什麼,以及它不是什麼

先從缺點談起,因為大多數評測文章就是在這裡出錯。Laya 不是 LLM。它是非自回歸式:單次前向傳遞就產生答案,模型從不生成文字。把它延遲拿來和聊天模型的每秒 token 數相比,等於是在比較兩種不同的運算——一個做分類,另一個做生成。如果你需要的是段落、摘要、計畫,或推理鏈,Laya 給不了,也不是以此為目標。

這是什麼:一個雙向編碼器,頂端加裝了一個決策頭。英文檢查點是 ModernBERT-large——3.95 億參數,完整微調——再加上從零訓練的頭部,由兩層 Transformer、一個選項標記評分器,以及一個行動/升級頭組成,總計 4.21 億。多語言檢查點則將主幹替換為 mmBERT-base,22 層與 256k 詞彙表,總計 3.22 億。同一個儲存庫中隨附三個檢查點,且只會下載你要求的那一個:

convaiinnovations/laya — ModernBERT-large、4.21 億個參數、512 個詞元的上下文、英文、磁碟佔用約 808 MB。

convaiinnovations/laya-multilingual — mmBERT-base,3.22 億參數,1,024 個 token 的上下文(此編碼器搭配 RoPE 最高可支援 8,192 個),支援 100 多種語言,速度約快 2.2 倍,約 647 MB。

convaiinnovations/laya-typed-decisions — ModernBERT-large,4.21 億個參數,1,024 個 token 的上下文,而且是這三者中唯一帶有那個你到處都會看到被引用的 0.766 數字的模型。

一台路由器位於前端,會在任何前向傳遞發生之前,以純 Python 在不到半毫秒內偵測書寫系統與語言,並據此為每個請求挑選檢查點。這不是一項便利性功能。這是一項正確性功能,而專案本身的證據說明了原因:英文檢查點在高棉語上的準確率為 0.000,卻回報 0.952 的信心度。一個完全錯誤卻仍保持自信的模型,正是信心度閘控無法拯救你的情況,因此路由決策必須在模型看到輸入之前做出。在橫跨 51 種語言的掃描中,路由器讓 51 種語言裡的 45 種變得可用——定義為表現勝過隨機基準三倍——相較之下,單靠英文檢查點只有 51 種中的 23 種。

A screenshot of the Laya model card on Hugging Face, showing the three checkpoints (convaiinnovations/laya, laya-multilingual and laya-typed-decisions) with their parameter counts and context windows, the choice, score and noul primitives, the Apache 2.0 licence, and the zero-shot and fine-tuned accuracy figures.

值得理解的設計事實:每個選項一個 [MASK] 詞元

如果你只從這篇文章帶走一件事,就帶走這一件。在一般的分類頭中,標籤集合在訓練時就已固定:最後一層每個類別各有一個輸出,而新增一個類別就意味著必須重新訓練。Laya 並非如此。它把每個選項連同一個標記渲染成文字,而選項標記評分器會讀取該選項自身[MASK] 位置上的分數。接著,它會對屬於該問題的各個選項做 softmax。

因此,答案空間是在請求時才定義的。你撰寫選項,模型為它們評分。新的結構定義不需要重新訓練,也不需要微調,因為權重中沒有任何東西會把「billing」或「technical」編碼成一個類別——只有一套機制,能在該狀態的脈絡下將一個已渲染的選項與另一個選項相比較。

有兩項預算決定這運作得有多好,而它們是共用的。每個序列會分成一個選項提示預算(head_max_len,在英文檢查點上是 192 個 token,另外兩個則是 256 個)以及一個文件預算(剩下的 max_len)。一次呼叫中的每個問題都會在同一次前向傳遞中回答,所以一次有六個問題的呼叫並不是六次模型呼叫。但選項會共用選項預算,這就是為什麼像 Banking77 這種有 77 個選項的問題,每個標籤大約只分配到三到四個 token,準確率便會懸崖式下滑——0.425,對比 Jev 公布的 0.870。修正方式有明文記錄而非藏起來:提高 head_max_len 和 max_len,或把大型選項集拆成兩步驟的由粗到細選擇。

三個基元

Laya 所做的每件事都屬於三種問題類型之一,而每種類型都會回傳不同的形狀:

choice — 每個具名選項的機率,再加上最高標籤與信心度。這是路由與意圖分類的基礎元件。

分數 — 在有序評分標準上的分佈,外加一個預期等級。這是序數基元:急迫性、挫敗感、嚴重程度。

noul — 校準後的機率,表示某項陳述為真的可能性,範圍從 0.0 到 1.0。網路釣魚、流失風險、提示注入。

這些型別之所以嚴格,在營運上事關重大。一個選擇題不可能回傳你沒有提供的選項,因為它能計分的選項只有你實際渲染出來的那些。這消除了整整一類的生產環境故障——憑空發明的 enum 值、被截斷的 JSON、圍繞解析器打轉的重試迴圈。它並未消除語意錯誤。一個模型若對一張本該轉給技術支援的工單回傳billing: 0.94,那就是錯的,而且錯得很有自信。具型別輸出保證的是答案的形狀,從來不是它的正確性。

RLCD,或者說為什麼機率應該有意義

大多數分類器被訓練來追求正確。Laya 則被訓練成誠實面對自己究竟有多正確,而這份特質正是源自它的訓練配方。

這個方法叫做 RLCD——校準決策強化學習(Reinforcement Learning for Calibrated Decisions)。策略輸出的是機率分布,而不是 argmax;探索會對 logits 加入零均值的高斯雜訊;而獎勵則是一種嚴格恰當評分規則——對數評分加上球面評分,並針對有序型問題額外加入排序機率分數。「恰當」這兩個字正是關鍵所在。嚴格恰當評分規則只有在回報你真實信念時期望值才會最大化,因此避重就輕或過度誇大會因為機制設計本身、而非因為指令而損失獎勵。更新採用的是帶有群體均值基線的 REINFORCE,也就是 GRPO 風格;多輪對話則在前綴切片上使用 TD(λ=1.0)。

實際後果是,置信度閾值是可以作為建構應用邏輯的有意義依據——這是對於交叉熵訓練分類器所輸出的 softmax 無法做出的主張。這也是一個帶有專案坦承的警告的主張:隨附的檢查點過度自信,且您應該在自己的資料上重新擬合溫度參數,才能信任這些數字。針對每種題型和選項數量分別重新擬合一個溫度,使英文檢查點的平均 ECE 從 0.466 降至 0.081,多語言檢查點則從 0.314 降至 0.106。專案建議的自動核准與人工審查的起始閾值約為 0.85。

運行所需的成本

這些延遲數據是該專案自行測量的,在 Tesla T4 上,每個檢查點都在同一次執行中回答位元組完全相同的問題:

• 一個問題 —— 於 laya 上為 39.5 毫秒,於 laya-multilingual 上為 32.8 毫秒。

• 五個問題 —— 84.5 毫秒與 40.1 毫秒。

• 十個問題批次處理 — 158.6 毫秒(每個問題 15.9 毫秒)以及 72.3 毫秒(每個問題 7.2 毫秒)。

• 五十個問題 — 771 毫秒與 337 毫秒,亦即多語言檢查點上每個問題 6.8 毫秒。

• 單一 T4 上的批次處理輸送量——每秒 103 至 332 個問題。

如果你看到有「比 Jev 快 50 倍」的說法在流傳,那不是該專案的數字,而且該專案自己的基準測試並不支持這種說法。Convai 公布的比較是:針對一個問題,p50 延遲為 7.8 倍:32.8 ms 對上 236–276 ms。那項比較也是需要仔細閱讀的一項,因為 Laya 的卡片把 Jev 那一側標示為 Convai 從未測量過的第三方公布數據——它沒有 TypeSafe API 存取權——而且因為它是以本地 GPU 前向傳遞,對比包含網路往返與排隊的託管 API 呼叫。那個差距中屬於架構的部分是真實的。其中屬於基礎設施的部分並不是模型的屬性。

在記憶體方面,每個檢查點的佔用為數百 MB,而在決定主機規格之前,值得先了解部署對照表。惰性預設會常駐保留兩個檢查點(英文與多語言,這是路由器唯一會自動從中選擇的兩個),因此每種語言首次載入後,切換只會耗費偵測的時間。 在記憶體受限的機器上,Router(max_loaded=1) 每次切換語言都會重新載入,在 CPU 上測得中位數為 7.4 秒,在 T4 上則為 10.3 秒。 Router(preload=True) 則是伺服器組態:不會重新載入任何項目,而每筆請求的延遲為 GPU 的 32.8 ms,或在 CPU 上為 193–464 ms。

誠實的那一半

這正是這款作品體現價值之處,因為 Laya 周遭的表面十分張揚,而限制也相當具體。

首先,那個頭條數字是微調後的數字。0.766 的準確率屬於 laya-typed-decisions,也就是在那個基準自身訓練切分上微調的檢查點。基礎檢查點的零樣本得分為 0.362 與 0.342,對照 0.318 的隨機基線與 0.461 的多數類基線——換句話說,低於這個平庸的基線。專案在自己的限制清單中主動說明了這一點,而不是把它藏起來;而微調後的檢查點超越了 0.735 的教師自我一致性上限,對於一個 421M 編碼器在四項狹窄工作流程上(發票處理 0.804、安全事件 0.766、客戶服務 0.764、代理軌跡可觀測性 0.730)而言,這是真正強勁的結果。但這是關於特化的結果,而不是關於基礎模型;任何把 0.766 當作一般能力來引用的人,都誤讀了這張模型卡。

第二,這些基本元件的表現並不一樣好。以微調檢查點上的準確率來看:noul 0.857,choice 0.733,score 0.723。該專案直接稱序數 score 為「最弱的原始元件」,且 SST-5 為 0.372。如果你的決策面是 1 到 5 的嚴重程度評分,那正是你最沒有理由開箱即用就信任的原始元件。

第三,有兩個行為在專案自己的議題追蹤器中已被記錄為錯誤,而如果你不去讀它們,兩者都會在正式環境中讓你吃足苦頭。 action.act_probability 尚未帶有任何可用的訊號——議題 #185——因為決策頭的輸出未經正規化,約為編碼器尺度的 300 倍,這會讓動作頭飽和,使它對幾乎每個輸入都讀出 1.0。其原始 logits 與正確性背道而馳,在 396 個已標註的決策上 AUROC 只有 0.30。請改以confidence 作為判斷依據,它在相同項目上可達到 0.77 的 AUROC。另外,noul 可能會遵循自己的選項標籤,而非狀態——議題 #156——因為 render_options 會把 noul 的標籤硬編碼為 false: / true:,而這組標籤可能主導答案,對明顯正面的輸入回傳一個自信的「否」。官方記載的因應做法,是把同一個問題改以兩個選項的 choice 形式提問,使用中性的鍵,並把你「是/否」的措辭放在描述中。

第四,一個容易忽略、卻值得精確說明的校準細節。這個檢查點為 choice:11+ 這個桶附帶了擬合後的溫度值 0.1006,而載入器會把每個溫度夾限到 [0.5, 5.0] 之內。這道夾限其實是在幫你。如此尖銳的溫度,可能把一個真正分歧的分布回報成幾近確定無疑;有了夾限,最糟的情況也不過是答案比擬合結果所預期的更柔和,而且載入器會發出警告,指名受影響的桶,並告訴你要把那份信心值視為未經校準。載入時請讀取這些警告,而不是把它們抑制掉。

第五,repo 根目錄只接受英文,而英文以外的失敗模式並不優雅——所以才需要 router,也因此才會建議任何非英文的散文內容都改用 laya-multilingual

在獨立評測存在的地方,其涵蓋範圍比廠商提供的圖像更窄,且並不與之矛盾。一項獨立的正面對決——sysone-bench,橫跨九個測試套件的 751 個狀態,日期為 2026-09-21,以位元組完全相同的輸入執行,並在比較前驗證題目雜湊值完全一致——顯示 Jev 在 triage、guardrails、moderation、banking77 與多語言意圖上領先,而 Laya 則在 AG News(0.940 對 0.910)與 MNLI(0.983 對 0.867)上領先。它的信心閘控結果才是我真正會據以規劃的依據:以 0.85 的信心進行閘控,保留了 Laya 58% 的流量、準確率為 0.878,相較之下 Jev 保留了 78%、準確率為 0.917。這就是這筆取捨的樣貌——Laya 自動化的流量較少,且在其保留的部分準確率較低,而它自家的路由器執行則將多語言意圖從 0.360 提升到 0.840。

它周圍的表面,異常寬闊

對於一個權重才發布幾天的專案來說,整合介面才是令人意外的部分。這些全都位於上游儲存庫NandhaKishorM/laya,在撰寫本文時,該儲存庫在 GitHub 上顯示 19,871 顆星,而且從頭到尾都採用 Apache 2.0 授權:

laya-serve — 一個 HTTP 伺服器,以相同的POST /v1/systemone 請求和回應格式公開 Router,與 TypeSafe 託管的 Jev API 相同,因此現有的 TypeSafe 用戶端只需變更其基礎 URL 即可遷移。請誠實地注意安全預設值:它會繫結至0.0.0.0 且無需驗證,除非設定了 LAYA_API_KEY,此時則要求 Bearer token。存在一個強化的 NixOS 模組變體,在DynamicUser systemd 單元下執行,並透過LoadCredential 傳遞權杖,而不是將其放入 store 中。

• 完整的 TypeScript 移植版本,位於 laya-ts/,適用於 Node 與瀏覽器,另提供 ONNX 代理路徑(laya.onnx_agent.ONNXAgent),可在執行階段於 ONNX Runtime 上執行匯出的模型,無需 PyTorch。

• 一個位於選用額外項目之後的 MCP 伺服器,將 laya_predict、laya_route、laya_preset 及 laya_status 公開為工具。

• LangChain 與 LangGraph 整合 — 用於條件邊路由的 LayaRouter,具備信心閾值與備援機制,以及 LayaGuardrail。

• 一個 Nix flake,搭配 nix run .#laya-serve 和一個 services.laya-serve 模組、四個 compose 檔案、一個附有快速入門說明的 Docker 映像檔路徑,以及一個 Kaggle notebook,可在免費的 2xT4 GPU 上,於四到五小時內,在約 30k 個問題上執行完整的 RLCD 微調迴圈。

A screenshot of the Laya repository on GitHub, showing the repository description, the three-checkpoint table, the Route Mode quickstart, the 23-of-51 versus 45-of-51 language sweep, the Khmer 0.000 accuracy at 0.952 confidence, the self-hosting curl example with the note that the server binds 0.0.0.0 with no authentication unless LAYA_API_KEY is set, the architecture and RLCD training sections, the speed and Laya-versus-Jev benchmark tables, and the honest limits list.

Apache 2.0 正是決定你能否將這東西放進產品中出貨的授權細節:它允許商業使用、修改與再散布,且不要求你公開你的變更或你微調後的權重。義務就是常見的姓名標示與保留聲明,外加明確表示除授權條款所述之外,並未授予專利或商標權。對於坐落在客戶流量前端的決策層而言,這與一個搶先體驗的託管端點是實質上截然不同的選項——後者的權重、架構與訓練配方全都未公開,而這正是 Jev 目前的情況:每百萬輸入 token 收費 0.042 美元,輸出免費,且只有純文字輸入介面。

這實際上適合放在哪裡:前端是決策頭,後端是經路由的 LLM

值得內化的模式並不是「用決策模型取代 LLM」。它是一個兩階段流程,而這兩個階段之所以存在,是因為另一個階段在某方面並不擅長。

將 Laya 放在前面,用於高頻、狹窄、機器可消費的判斷:路由票證、分類意圖、評分緊急程度、決定此文件是否與查詢相關、檢查此草稿是否違反政策。這些呼叫有固定的答案集,它們每小時發生數千次,而具有零輸出權杖的 33 毫秒本地前向傳遞比生成式往返更適合它們。然後在其後放置一個生成式模型,用於真正需要散文、綜合或長上下文推理的呼叫——起草、解釋、升級摘要。

這就是 OrcaRouter 的定位所在,而把這條界線說清楚是值得的。我們不提供 Laya;它是一套 421M 的編碼器,由你自己運行,而其重點正是它運行在你的資料已經所在之處。我們也不提供 Jev——它是 TypeSafe 的搶先體驗端點。我們涵蓋的是同一條流程中的生成那一半:200 多個模型藏在單一 OpenAI 相容金鑰之後,以 供應商定價原價轉嫁、0% 加成,並具備跨供應商的自動容錯移轉。這在此處之所以重要的實際原因,在於兩半之間的接縫。當你開始把決策頭已婉拒處理的情況,交由生成式模型來決定路由的那一刻,你就有了第二個整合、第二筆帳單,以及第二種故障模式。生成端只要一把金鑰,並在供應商效能下降時提供容錯移轉,意味著決策層的升級路徑只是一項設定變更,而不是另一段供應商關係。這是個小小的主張,而它是真的。

誰應該採用它,而誰應該等待

如果你已有標註資料與訓練迴圈,而且決策面已穩定到值得專門化,現在就採用 Laya。Kaggle 筆記本的存在,正是為了讓微調步驟不必成為一項研究專案:基礎檢查點在 CPU 上約兩秒即可載入,而授權條款讓你能以商業方式推出成果,無需公開你的權重。最適合的工作負載,就是專案已經做過基準測試的那些:工單分診、發票處理、資安事件分類、護欄與內容審核,以及代理軌跡可觀測性。選擇題的選項數請維持在約 20 個以下;在把閾值投入生產環境之前,先用自己的留出資料校準溫度;並且以 信心分數為準,絕不以 act_probability 為準。

如果你的決策必須開箱即用、且沒有任何標註資料,那就先等等。一個基礎檢查點若在其當初發表所對應的基準測試上,表現低於多數類別基線,那它就不是零樣本引擎;而對廠商與獨立評測數字最誠實的解讀是,目前一個經營良好的託管決策 API 才是更強的零樣本選擇。同樣也先等等,如果你的選項集很大,而你又不願意調整頭部預算;如果你的序數評分需要立刻值得信賴;或者如果你需要圖像、音訊或長文件輸入——Laya 僅支援文字,且其上下文預算預設為 512 到 1,024 個詞元,這只是證據的選取,而不是整份文件。

決定這個類別的,不是延遲數字,那些已經好到不再成為爭論點。真正的問題是:一個能在你定義的決策面上回報誠實機率、而且你能用自家標籤重新訓練的小模型,是否勝過呼叫大型生成式模型並解析其輸出。Laya 是針對這個問題的開放權重版本,第一個可信的認真嘗試——而且它最多只有幾天大,這正是解讀上述一切的正確方式。基礎版本是起點,不是產品。

A generated single-column scoreboard titled "Laya - the scoreboard" with six labelled rows reading Architecture: non-autoregressive encoder plus decision head; Parameters: 421M total; Output tokens: zero, one forward pass; Zero-shot accuracy: 0.362 versus 0.461 majority class; Fine-tuned accuracy: 0.766 on typed-decisions; Licence: Apache 2.0, weights published; with a footer reading "All figures vendor-reported by Convai Innovations on its own harnesses."