Tokenizer 训练
会员专享使用 RustBPE 训练 BPE tokenizer,并导出 tiktoken 编码
预训练前必须先确定 tokenizer。模型看到的不是原始字符串,而是 token id 序列;词表大小、特殊 token、预分词规则都会影响后续模型配置和训练数据形态。
cookllm-bento 默认已经带了一个可用 tokenizer:
tokens/
├── tokenizer.pkl
├── token_bytes.pt
└── metadata.json如果你只是想直接跑预训练,可以先使用默认 tokenizer。重新训练 tokenizer 适合在你更换语料、调整词表大小,或者想完整复现训练流程时再做。
训练数据
Tokenizer 训练使用单独的采样数据,不直接使用预训练 shard。下载脚本中对应选项是:
| 选项 | 数据 | 大小 | 目录 |
|---|---|---|---|
[2] | Tokenizer 1.5% sampled data | 约 1.2GB | tokenizer_data |
这里的 1.5% 指的是从 Fineweb-Edu-Chinese-V2.1 的 4_5 高质量子集中抽取一小部分文本,专门用于训练 tokenizer。它和前面预训练用的 20% sampled shards 来自同一个高质量数据来源,但用途不同:
- tokenizer 训练只需要学习文本如何切成 token,不需要覆盖完整预训练规模。
- 单独准备 tokenizer 数据,可以让 BPE 训练更快,也避免每次训练 tokenizer 都扫描 14GB 或 70GB 的预训练 shard。
- 这份数据会写成单个 Parquet 文件,而不是多个训练 shard。
如果你想从原始 4_5 数据重新生成这份 tokenizer 数据,可以使用同一个采样脚本,只是采样比例改成 0.015,输出改成单个文件:
python tools/sample_pretrain.py \
--data ~/.cache/cookllm-bento/raw_data/fineweb_edu \
--output ~/.cache/cookllm-bento/tokenizer_data/tokenizer_data.parquet \
--ratio 0.015下载命令:
bash tasks/scripts/download/download_data.sh选择 [2] 后,默认文件位置是:
登录以继续阅读
这是一篇付费内容,请登录您的账户以访问完整内容。
CookLLM文档