What is Token(詞元)?
語言模型處理的基本文字單位——通常是詞、子詞或字元。
Definition
Token 是語言模型中文字處理的原子單位。在語言模型能夠處理文字之前,原始字串必須被轉換為 token 序列——從固定詞彙表中抽取的離散單位。現代 LLM 通常使用子詞分詞演算法如位元組對編碼(BPE)或 SentencePiece,根據頻率將文字分割為完整詞、子詞和個別字元的混合。常見詞如 'the' 映射到單一 token,而罕見或技術性術語則被分割為多個子詞 token。
分詞是 LLM 管線中關鍵但常被忽視的階段。分詞器的詞彙大小(通常 32,000 到 128,000 個 token)決定了模型文字表示的粒度。較大的詞彙可以更高效地表示文字(每段文字更少的 token)但會增加模型嵌入和輸出層的大小。不同的模型使用不同的分詞器,意味著相同的文字為不同的模型產生不同的 token 序列——這在比較上下文長度或計算成本時很重要。
Token 直接決定 LLM 的經濟學。API 提供者按 token 計 費(輸入和輸出都計),因此模型的分詞效率影響每次查詢的成本。一個每個詞需要 1.3 個 token 的分詞器比需要 1.0 個 token 的每個詞貴 30%。上下文視窗限制也以 token 衡量,提示消耗的 token 數量決定了檢索上下文或生成輸出的剩餘空間。
Why It Matters
理解 token 對於有效地使用 LLM 至關重要。上下文視窗限制、訓練資料大小、推論成本和生成速度都以 token 衡量。以詞而非 token 思考的實踐者會系統性地誤算成本、高估可用上下文並錯判訓練資料需求。
分詞也以微妙的方式影響模型行為。非拉丁字母的語言通常分詞效率較低,每個語義單位需要更多 token,這減少了有效上下文長度並增加了多語言應用的成本。程式碼分詞可能特別低效,變數名和語法 token 消耗許多個別 token。這些分詞效率差異直接影響某些使用場景的可行性。
How It Works
大多數現代 LLM 使用位元組對編碼(BPE)或其變體。BPE 從個別位元組的基礎詞彙(256 個條目)開始,在訓練語料庫中反覆合併最頻繁共現的 token 對為新 token。這個過程重複固定次數的合併操作,建立起越來越常見的子詞單位的詞彙。在推論時,分詞器應用這些學習到的合併規則將輸入文字分割為 token。
每個 token 映射到詞彙表中的整數 ID。模型的嵌入層將每個 token ID 轉換為密集向量表示,流經 Transformer 層。在輸出端,模型為下一個 token 產生整個詞彙表上的機率分佈,具有最高機率的 token(或根據生成策略抽樣的 token)被選中並解碼回文字。
Example Use Case
一個構建程式碼助手的團隊注意到他們模型的 4096 token 上下文視窗只能容納大約 200 行 Python 程式碼,因為分詞器將許多程式碼元素(變數名、縮排、運算符)分割為多個 token。他們切換到具有程式碼優化分詞器的模型,實現了 Python 的 1.5 倍更好的分詞效率,有效地將可用上下文擴展到 300 行——足以包含準確程式碼完成所需的周圍函數和類別。
Key Takeaways
- Token 是 LLM 的基本處理單位,通常是來自固定詞彙表的子詞或完整詞。
- 分詞效率因語言、領域和分詞演算法而異,影響成本和上下文使用。
- 上下文視窗、成本和生成速度都以 token 而非詞來衡量。
- 大多數現代模型使用 BPE 或 SentencePiece 分詞,詞彙大小為 32K-128K 個 token。
- 不同的模型有不同的分詞器,使 token 計數在不同模型之間不可比較。
How Ertas Helps
Ertas Studio 為訓練資料集顯示 token 計數並驗證訓練範例是否符合模型的上下文視窗。Ertas Data Suite 使用分詞器感知的處理來確保資料為目標模型正確分段。
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.