SentencePiece(Kudo & Richardson, 2018)的核心概念是「Google 開源的 tokenization 框架、把『空白也當一個字元』處理、原生支援 BPE 跟 unigram 兩種演算法」。Llama、Gemma、Mistral、T5 等模型用 SentencePiece 作為 tokenizer 實作;它的 multilingual 友善度跟「不依賴語言預處理」是被選擇的主因。

概念位置

SentencePiece 跟其他 tokenization 路線的對比:

框架 / 路線機制處理多語言 / 空白出現在
WordPiece類似 BPE、Google 早期方案需語言預處理(如英文 lowercase)BERT、DistilBERT
SentencePiece BPEBPE 演算法、空白當特殊字符 處理統一處理、不需語言預設Llama、Gemma、Mistral
SentencePiece Unigram機率模型、選一組讓 corpus likelihood 最大的子詞同上、機率視角T5、XLNet、ALBERT
tiktoken(OpenAI)Byte-level BPE統一處理GPT-3.5、GPT-4、GPT-5

關鍵特性:

  1. 表示空白:SentencePiece 把空白編碼成 (Unicode U+2581)、所以「Hello world」會被 tokenize 成 ["Hello", "▁world"]、保留空白資訊在 token 內。
  2. 不依賴語言預處理:傳統 NLP 要先做 lowercasing、word segmentation;SentencePiece 直接從 raw bytes 開始學、跨語言通用。
  3. 原生 multilingual:訓練 corpus 包含多語言時、tokenizer 自動學會跨語言的子詞單元、不需要為每種語言設定不同 tokenizer。

設計責任

讀 model card / repo 看到 tokenizer.model 檔案(不是 tokenizer.jsonvocab.txt)就是 SentencePiece 用的 protobuf 格式。寫 code 場景的意涵:SentencePiece tokenizer 在中文 / 多語言任務上比 WordPiece 友好;換 tokenizer 等於整個 embedding layer 失效、所以 fine-tune 時不會動 tokenizer。