從固定詞彙表到成本問題
Dharma-AI 團隊在 2026 年 10 月 21 日於 Hugging Face 部落格發表的文章,預告了即將公開的 VocabX 論文結果,起點是一個已上線的葡萄牙文作文自動評分器。這個系統基於 Qwen3-4B,接收作文、題目與輔助文本,輸出包含各能力分數與評語的 JSON。JSON 是用鍵值對描述結構化資料的文字格式,方便程式穩定讀取。模型只有 40 億參數,也已針對任務訓練,但分詞器仍是原始版本。分詞器把文字切成 token,也就是模型讀寫的基本單位;通用分詞器在海量多語言、多領域語料上訓練,對一般用途合理,對單一領域卻留下兩種浪費。
第一種是碎片化。領域最常重複的文字反而被切成很多段。作文評分器每次回應都從相同 JSON 外殼開始,能力名稱與評語句型高度固定;合約重複制式條款,程式碼重複識別字。一個 token 可表達的序列被拆成好幾個,每次請求都要付費。第二種是過剩。詞彙表有大量領域幾乎不用的條目,模型卻在生成每個 token 時對全部 151,669 個條目計分。一個只批改美國中學生物考卷的模型幾乎不會寫中文,仍要在每一步計算每個中文詞彙的機率。兩種浪費最後都反映在推論成本。
生成為何比讀取昂貴
直覺是減少 token 數量,但 token 數不是帳單。推論分兩階段:prefill 一次處理整段輸入,權重可重複使用,主要受運算限制;decode 一次生成一個 token,每個新 token 都要完整跑一次網路,權重讀取只使用少數幾次,GPU 多數時間在等記憶體,瓶頸變成記憶體頻寬。小型模型搭配中等批次量時最明顯;批次可分攤權重讀取,但只能緩解。
decode 每一步還要讀取 KV cache,也就是保存已處理上下文、會隨上下文成長的注意力記憶。作文評分器實測中,生成一個 token 的成本是讀取一個 token 的 7.4 倍;倍率隨硬體、批次、上下文等因素變動,也可能更高。文章用貨運比喻:出貨箱比進貨箱貴七倍時,減少出貨箱的效益遠大於等量減少進貨箱。只壓縮輸入與輸出、不區分兩者成本,會漏掉大部分節省空間。第三個成本是詞彙表本身。最後一層 LM head 把內部狀態轉成每個可能 token 的分數,每個詞彙條目對應一列參數;在 Qwen3-4B 中,這個矩陣近全部參數的 10%。大模型可吸收,小模型卻有感。且輸入層只查被讀取的那一列,LM head 卻要為每個生成 token 讀取整個矩陣。decode 已受頻寬限制,每多一列就是每一步多搬資料;領域用不到的條目,成本與常用條目完全相同。
VocabX 的三個關鍵設計
既有方法包括 fast vocabulary transfer(FVT,快速詞彙轉移)、multi-word tokenization(MWT,多詞片段合併)與 Liquid AI 的 in-place tokenizer expansion(in-place BPE,從原始詞彙表繼續以 BPE 這種常見子詞切分法訓練)。它們能降低碎片化,但有兩項限制。其一,主要按頻率而非成本選 token;輸入常出現的表達式,對它們比回應中較少出現但生成更昂貴的表達式更有價值。其二,通常只處理一層:調整子詞切法,或把整段片語合併,未在同一準則下同時處理。作文評分器最大的浪費正好在長而重複的跨度,例如 JSON 外殼,只做子詞合併必須逐段逼近。
VocabX 第一個改變,是把問題從省多少 token 改成省多少成本。每個消除的 token 乘上所在欄位價格:系統提示、使用者訊息或模型回應。案例中,回應省下的 token 價值是輸入的 7.4 倍,詞彙表據此建立。第二,同時處理子詞層與多詞層:子詞層重建領域詞彙切分;多詞層尋找重複跨度,從短語、整行到完整 JSON 外殼,變成單一 macro token。兩層各有預算,但在同一成本準則下選擇;VocabX 未把 LM head 成本直接放進準則,而是透過子詞合併與固定預算的 macro 控制詞彙表大小,作文評分器輸出層從約 15.2 萬列降到約 6.5 萬列。為找跨度,VocabX 用五種 miner,即自動搜尋重複片段的方法,分別針對長詞、整行、表達式、完整句子,以及帶標點的結構如 JSON 與標籤。平均八個語料後,最後一類貢獻最大;在程式碼上單獨貢獻 17.5 個百分點。缺少這五類完整組合,作文評分器的 token 減少量會下降 55.6 個百分點。
第三,估計樣本看不見的部分。按成本選 token 要知道候選在已選 token 後還能省多少;精確計算每次重新處理整個語料,數萬次不可行。用文件樣本估計時,未出現的候選會得零收益。文章舉例:在 50,000 份文件出現 37 次的表達式,在 400 份樣本中只有約 26% 機率出現;合約語料只有 16.6% 候選出現在 400 份樣本,其餘從未評估。VocabX 把收益拆成整體語料可精確計算的節省,以及尚未被已選 token 覆蓋、需要估計的部分。對樣本看不見的候選,它用可見候選的行為做統計估計,而非給零,讓「樣本罕見、語料常見」的候選重新入選。單此調整,在相同樣本與預算下,把合約語料 token 減少量從 44.7% 提高到 52.8%。
實測、取捨與限制
團隊用相同基底模型、資料、訓練配方與隨機種子訓練七個版本,唯一差別是分詞器。七版都在搭載 RTX 5090 的機器上透過 vLLM 推論伺服器跑同樣 500 筆請求,成本由實測執行時間計算。平均回應從 350 個 token 降到 101 個,成本下降 77.0%;結合評分準確率與離題、違規篩選準確率的評測分數,從 0.703 升到 0.810。這不是無代價的壓縮。第一版把每個能力分數與周圍 JSON 融合成單一 macro token,最緊湊,但分數只有 0.689,低於正式版的 0.703;分數被包進 macro 後,每種分數與結構組合都變成同一 token 的不同變體,模型等於一步同時選結構與分數。讓分數擁有自己的 token,每次多花 2 個 token,分數升到 0.810,成本甚至更低:下降 77.0%,融合版是 73.3%。當被壓縮的跨度承載模型真正要做的判斷,壓縮就有品質成本;目標不是最便宜詞彙表,而是保留關鍵 token 的最便宜詞彙表。
為確認不是單一個案,團隊在五個公開領域與三個模型家族上比較 VocabX 與三種參考方法。五領域是合約、醫學論文、科學論文、新聞與 Python 程式碼;三家族是 Qwen3、Llama-3.1 與 Gemma-3。所有方法使用相同挖掘文件、測試文件與詞彙上限。VocabX 在全部十五種組合中都壓縮得比最強參考方法多,幅度 1.2 到 9.3 個百分點;以估計推論成本計,精簡版也在十五種組合全部領先,平均領先 Qwen3 10.2 個百分點、Llama-3.1 7.5 個百分點、Gemma-3 13.6 個百分點。合約語料上,精簡版以 113,426 個詞彙條目達到 62.6% token 減少量;最佳 in-place BPE 是 61.8%,但使用 207,803 個條目。這代表同樣壓縮效果可用更小的輸出層換來。
VocabX 沒有讓模型更聰明;它讓模型停止為不需要逐段寫出的文字付費,也停止為永遠不會用到的詞彙評分。對小型領域模型而言,這是一個在資料與權重之外、發生得更早的特化層次:分詞器與詞彙表在訓練前就已決定,卻常被當成基底模型的固定屬性。限制也很清楚:論文仍在審查,數字可能變動;7.4 倍生成與讀取成本比會隨硬體、批次與上下文改變;品質結果來自特定作文評分基準,不能直接推論到所有任務。儘管如此,這個案例提供可檢驗的方向:當模型被特化到單一領域,詞彙表不再只是繼承細節,而可能是最直接的成本槓桿之一。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。