我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
- 準備資料集:AI說書 - 從0開始 - 162 | 準備Pretrain模型需要的資料
- 準備必備函數庫:AI說書 - 從0開始 - 163 | 準備Pretrain模型需要的函數庫
- Tokenizer 前言:AI說書 - 從0開始 - 164 | Tokenizer 前言
- 訓練自己的 Tokenizer:AI說書 - 從0開始 - 165 | 訓練自己的Tokenizer
- 保存訓練好的 Tokenizer:AI說書 - 從0開始 - 166 | 保存訓練好的 Tokenizer
既然訓練好一個 Tokenizer,也完成保存的動作,現在我們拿出來用看看:
from tokenizers.implementations import ByteLevelBPETokenizer
from tokenizers.processors import BertProcessing
tokenizer = ByteLevelBPETokenizer("./KantaiBERT/vocab.json", "./KantaiBERT/merges.txt")
以一個句子作為範例:
tokenizer.encode("The Critique of Pure Reason.").tokens
得到以下結果:

另外也可以查看 Token 數目:
tokenizer.encode("The Critique of Pure Reason.")
得到以下結果:

接著我們來把 <s> 放在句首,</s> 放在句尾,詳見 AI說書 - 從0開始 - 164 | Tokenizer 前言,手法如下:
tokenizer._tokenizer.post_processor = BertProcessing(("</s>", tokenizer.token_to_id("</s>")),
("<s>", tokenizer.token_to_id("<s>")))
tokenizer.enable_truncation(max_length = 512)
接著我們來看發生什麼事,以同樣一個句子作為範例:
tokenizer.encode("The Critique of Pure Reason.")
得到以下結果:

怎麼 Token 數目由六個變成八個呢?可以進行以下確認:
tokenizer.encode("The Critique of Pure Reason.").tokens
得到以下結果:
