跳到主要內容
maxstudioNews
研究Hugging Face Blog約 9 分鐘

透過詞彙專門化,SLM 在實際應用中可大幅降低 77% 推論成本

通用大型語言模型(LLM)的詞彙庫通常為多領域設計,導致在特定應用中效率低下。Hugging Face 提出 VocabX 方法,透過根據詞元成本而非頻率來專門化詞彙,有效解決此問題。此技術在葡萄牙語作文評分系統中,成功將推論成本降低 77%,同時提升了模型品質。

透過詞彙專門化,SLM 在實際應用中可大幅降低 77% 推論成本
圖片來源:Hugging Face Blog

透過微調通用開源模型(例如 Qwen 和 Gemma)以專門化特定領域或任務的模型,會繼承一個為多個領域和通用應用而建構的詞彙庫。

在我們實際運行的作文評分系統中,該詞彙庫將模型最常寫的文本拆分成許多詞元。本文預覽了我們即將發表的 VocabX 論文的部分成果:我們如何根據每個詞元的成本而非其頻率來專門化詞彙,並在不改變基礎模型的情況下,將測得的推論成本降低了 77%。

分詞器通常被視為基礎模型的固定屬性,被繼承後便不再更動。然而,對於專門用於單一領域的模型而言,分詞器可能是最大的成本槓桿之一,且其設定是在任何訓練步驟之前就已完成。

我們在實際運行的一個系統是基於 Qwen3-4B 建構的葡萄牙語作文自動評分器。它接收作文、提示詞和輔助文本,並返回一個 JSON 評估,其中包含每個能力的評分和評論。

該模型本身已經很小,只有 40 億個參數,並且已經針對該任務進行了訓練。然而,它的分詞器仍然是原始的 Qwen3-4B 分詞器,專為多種語言和多種文本類型而建構。

在評分器中,它僅用於單一語言(葡萄牙語)和單一回應格式。這導致了兩種成本:評分器在每次請求中寫出的文本使用了比實際所需更多的詞元,而且在每個生成的詞元時,模型都需要評估一個包含 151,669 個詞彙條目的詞彙庫,其中許多條目在該任務中幾乎從未使用。

我們使用一種稱為 VocabX 的方法重建了該詞彙庫,同時保留了相同的基礎模型、相同的資料和相同的訓練配方。本文中的數據來自目前仍在審查中的論文版本,在發表前可能會有所變動。

為所有人建構的詞彙庫

領先的語言模型透過詞元進行讀寫,而分詞器決定了文本如何轉換為詞元。領先的通用模型的分詞器,是針對來自多個領域和語言的大量文本集合進行訓練的,範圍從原始碼到合約再到中文。對於通用模型而言,這種選擇是合理的。

然而,對於僅用於單一領域的模型,這會同時產生兩種浪費。

第一種是碎片化。分詞器將該領域重複最多的內容拆分成許多片段。在評分器中,每個回應都以相同的 JSON 封裝、相同的能力名稱、相同的評估短語開頭。在合約中,這是樣板條款;在程式碼中,則是識別符號。這些序列中的每一個都花費了多個詞元,而實際上一個詞元就足夠了,模型在每次請求中都為這些額外的詞元付費。

第二種是過度。詞彙庫包含數萬個該領域從未使用的條目,而模型在生成每個詞元時,都會為所有這些條目計算一個分數。一個經過微調以評估美國學校生物考試的模型,幾乎永遠不會寫中文,但它在每個步驟中都會計算每個中文字詞元的機率。詞彙庫將該領域重複最多的內容拆分成許多片段,並包含該領域從未使用的條目。

讀取便宜,寫入昂貴

自然的反應是計算詞元數量並嘗試減少它。但詞元數量並非實際費用。

要了解為什麼生成的詞元成本更高,有助於了解推論的工作原理。它有兩個階段。在預填充(prefill)階段,模型透過網路一次性處理所有輸入:每個從 GPU 記憶體讀取的權重都會被每個輸入詞元重複使用,其限制是計算能力。

在解碼(decode)階段,模型一次生成一個詞元的回應,每個詞元都需要一次完整的處理。每個讀取的權重只會被使用幾次,GPU 大部分時間都在等待資料從記憶體傳輸:此時的限制變成了記憶體頻寬。

這種效應在我們運作的環境中最強烈:以中等批次處理的小型模型。批次處理請求可以將權重讀取分散開來,緩解問題,但無法完全解決。在每個解碼步驟中,模型還會讀取 KV 快取,即保存已處理上下文並隨之增長的注意力記憶體。

在我們測量的案例(評分器)中,一個生成的詞元成本是一個讀取詞元的 7.4 倍,但這個比例會因硬體、問題、批次大小、上下文長度和其他因素而異,甚至可能更大。總體而言,方向是明確的:生成比讀取成本更高。

想像一家運輸公司按箱子收費,但出貨箱子的費用是入貨箱子的七倍。減少箱子總數會有幫助,而減少出貨箱子則能提供七倍的幫助。一個對輸入和輸出進行同等壓縮的方法,會錯失大部分可能的節省。

費用的第三個組成部分是詞彙庫本身。模型的最後一層,即語言模型頭(LM head),將內部狀態轉換為每個可能詞元的分數。為此,它為每個詞彙條目保存一行參數。在 Qwen3-4B 這樣大小的模型中,這個矩陣佔了將近 10% 的參數。

這個比例對於大型模型而言微不足道,但對小型模型卻是個負擔。而且成本並非只支付一次。輸入層只查找正在讀取的詞元的那一行,但語言模型頭在每個生成的詞元時,都會讀取並乘以整個矩陣。

由於解碼已經受到記憶體頻寬限制,每個額外的行都會在每個步驟中增加更多需要移動的資料。一個領域從未使用的條目,其成本與常用條目完全相同。這就是為什麼增加詞元數量可能同時降低詞元計數卻提高費用的原因。

VocabX 在其選擇標準中不包含此項,但它透過兩個步驟控制詞彙庫大小:子詞合併用一個更小、領域特定的詞彙庫取代基礎詞彙庫,而巨集則在固定預算下引入。在評分器中,輸出層從大約 152,000 行減少到大約 65,000 行。

為什麼現有解決方案不足

調整模型的詞彙庫並非新想法。文獻中的參考方法,例如快速詞彙轉移(FVT)、多詞元化(MWT)和 Liquid AI 的就地分詞器擴展(in-place BPE,它從原始詞彙庫繼續 BPE 訓練),都已經能減少碎片化。當我們在我們的問題上測試它們時,發現了兩個限制。

它們根據頻率而非成本選擇詞元。對它們而言,在輸入中頻繁出現的表達式比在回應中不那麼頻繁出現的表達式更有價值,即使後者是服務成本更高的那個。

它們只在單一層次上運作。它們要麼調整單詞如何被切割成片段,要麼將整個短語合併成一個詞元。這三種方法都沒有在相同的標準下同時做到這兩點。而評分器最大的浪費,恰恰在於像 JSON 封裝這樣長而重複的跨度,子詞方法只有在逐一合併每個部分後才能處理。

我們如何解決它

VocabX 解決了這兩個限制,以及解決第一個問題的明顯路徑上出現的第三個問題。

首先,我們改變了問題。我們不再問一個候選詞元能節省多少詞元,而是問它能節省多少成本和時間。每個被消除的詞元都乘以其出現欄位的價格:系統提示詞、使用者訊息或模型回應。在我們測量的案例(評分器)中,回應中節省的一個詞元價值是輸入中節省的一個詞元的 7.4 倍,詞彙庫也因此而建構。

其次,我們同時在兩個層次上運作。回到運輸公司:你可以透過更好地包裝每個物品來減少箱子數量,或者透過識別出每週都會運送相同的十二件套件,並將該套件裝在一個箱子中來減少箱子數量。VocabX 兩者兼顧。

在子詞層次,它重建了領域詞彙如何被切割成片段。在多詞層次,它尋找重複的整個跨度,從短表達式到完整行和 JSON 封裝,並將每個轉換為單一詞元,我們稱之為巨集詞元。這兩個層次都在相同的成本標準下選擇,每個都有自己的預算。

為了找到這些跨度,我們使用了五種探勘器,它們是自動搜尋語料庫中重複跨度的工具,每種探勘器專門處理一種重複類型:長單詞、整行、表達式、完整句子,以及帶有標點符號的結構,例如 JSON 和標籤。在八個語料庫中平均來看,最後一種貢獻最大,在程式碼中,它單獨貢獻了 17.5 個百分點。如果沒有這五種探勘器,評分器上的詞元減少量將下降 55.6 個百分點。

第三,我們估計樣本無法看到的部分。根據成本選擇詞元需要知道每個候選詞元在已選擇的詞元之後還能節省多少。精確測量這點需要每次選擇後重新處理整個語料庫,這將是數萬次的操作。一種大規模執行此操作的常見方法是在文件樣本上進行測量,然後樣本中不存在的候選詞元將獲得零增益。

一個在 50,000 份文件中出現 37 次的表達式,在 400 份文件的樣本中只會出現約 26% 的時間。在合約語料庫中,只有 16.6% 的候選詞元出現在 400 份文件的樣本中;其餘的從未被評估。

候選詞元的增益有兩部分。一部分是它在整個語料庫中節省了多少,這可以精確計算,無需樣本。另一部分是這些節省中有多少尚未被已選擇的詞元覆蓋,只有這部分需要估計。對於樣本無法看到的候選詞元,我們使用基於其可見詞元行為的統計估計,而不是零。一個在樣本中罕見但在語料庫中頻繁的候選詞元,將重新回到考慮範圍。

僅僅這項改變,在相同的樣本和相同的預算下,將合約語料庫上的詞元減少量從 44.7% 提高到 52.8%。

評分器發生了什麼變化

為了測量實際效果,我們訓練了七個版本的評分器,使用相同的基礎模型、相同的資料、相同的配方和相同的隨機種子。它們之間唯一的區別是分詞器。所有版本都在相同的測試機器上運行了 500 個請求,該機器配備 RTX 5090 GPU 和 vLLM 推論伺服器,成本是根據測得的運行時間計算的。

模型的平均回應從 350 個詞元降至 101 個詞元。成本下降了 77.0%。品質(由綜合評分準確性和篩選離題或違規作文準確性的基準分數衡量)從 0.703 上升到 0.810。

達到這個目標需要進行修正。詞彙庫的第一個版本將每個能力的評分與周圍的 JSON 融合為一個單一的巨集詞元。這是最緊湊的選項,但品質下降了:其基準分數為 0.689,低於生產評分器的 0.703。

由於評分包含在巨集中,評分和結構的每種組合都成為同一詞元的不同變體,模型在單一步驟中同時選擇兩者。將評分獨立為一個詞元,每個回應會多出 2 個詞元,但基準分數提高到 0.810,而且在測量中甚至更便宜:減少了 77.0%,而融合版本為 73.3%。

這個教訓不僅適用於評分器。當壓縮的跨度承載著模型存在的關鍵決策時,壓縮會付出代價。目標不是最便宜的詞彙庫,而是最便宜且能保留重要詞元的詞彙庫。

超越評分器

為了找出這種增益是否僅限於我們的案例,我們將 VocabX 與三種參考方法在五個公共領域(合約、醫學論文、科學論文、新聞和 Python 程式碼)以及三個模型家族(Qwen3、Llama-3.1 和 Gemma-3)上進行了比較。所有方法都使用了相同的探勘和測試文件,以及相同的詞彙上限。

在所有十五種組合中,VocabX 的壓縮效果都比最強的參考方法高出 1.2 到 9.3 個百分點。在估計的推論成本方面,VocabX 的修剪版本在所有十五種組合中也領先,在 Qwen3 上平均領先 10.2 個百分點,在 Llama-3.1 上領先 7.5 個百分點,在 Gemma-3 上領先 13.6 個百分點。

在合約方面,修剪版本達到了 62.6% 的詞元減少量,詞彙條目為 113,426 個,而最佳的就地 BPE 配置為 61.8%。

Share

覺得值得一看?分享給朋友。

以上為 AI 自動翻譯導讀。原文版權歸 Hugging Face Blog 所有, 建議透過「閱讀原文」前往原始網站,以取得最完整資訊並支持原作者。

Newsletter

不用每天追,AI 重點每週寄給你

43 個來源、每 2 小時更新,太多看不完。電子報每週挑最值得看的幾則,附上 Max 的看法。

每週一封。Email 只用來寄電子報,每封信都能一鍵退訂。