
分词器是怎么炼成的
Level 1 | 基础篇
为什么分词器能认识"鸡你太美"但不认识"小黑子"?因为练习时长不够!
本仓库用最通俗的语言 + 可运行的代码讲解分词器的原理和训练方式。看完之后,你就能自己训练一个 ikun 专属分词器了。
| # |
章节 |
内容 |
一句话总结 |
图示预览 |
| 1 |
BPE 分词算法 |
Byte Pair Encoding 原理 |
从字符开始,合并高频对,组装成子词 |
 |
| 2 |
词表大小的学问 |
为什么 vocab_size=6400 |
太小拆太碎,太大带不动,6400 刚刚好 |
 |
| 3 |
特殊 Token |
im_start / im_end 的设计 |
对话的"舞台指令",告诉模型谁在说话 |
 |
| 4 |
训练分词器 |
动手训练完整流程 |
5 步搞定,不需要 GPU |
 |
# 安装依赖
pip install tokenizers
# 训练一个自己的分词器
python train_tokenizer.py
# 查看分词效果演示
python tokenizer_demo.py
- BPE (Byte Pair Encoding) 分词算法原理
- 为什么 vocab_size=6400?大了小了会怎样?
- 特殊 token 的设计:
<|im_start|> / <|im_end|> 是什么
- 训练一个 ikun 专属分词器的完整流程
- 分词器如何把"鸡你太美baby鸡你太美"拆成 token
| 概念 |
说明 |
| BPE |
从字符级开始,逐步合并高频字节对 |
| vocab_size |
词表大小,太小=表达力不足,太大=embedding 占太多参数 |
| Special Tokens |
<|im_start|>=对话开始, <|im_end|>=对话结束 |
| Pre-tokenizer |
ByteLevel 预分词,处理多语言 |
| ChatML |
对话格式标准,用特殊 token 区分角色 |
- 完全零基础:先去 ikun-basics 学基础,再回来
- 有一点基础:按顺序从第 1 章读到第 4 章
- 只想动手:直接看第 4 章,跑代码
- 想深入理解:每章开头有"一句话版本",细节在正文中