问题域/PD-430

BPE Tokenizer 训练与推理

BPE Tokenizer Training & Inference

从零训练 BPE tokenizer 并高效服务推理的完整方案

子问题

1.训练后端与推理后端分离

2.特殊 token 体系设计

3.对话渲染与 mask 生成

4.多线程批量编码

5.split pattern 数字分组位数对小词表 token 效率的影响

6.token_bytes 缓存实现词表大小无关的 bits-per-byte 评估

7.system 消息到 user 消息的合并策略

8.RL 场景下 prompt 渲染与 SFT 渲染的差异处理

各项目的解法1 solutions

Signals

横向对比

维度nanochat
执行架构rustbpe 训练 + tiktoken 推理的双后端架构,pickle 序列化桥接
决策管道SPLIT_PATTERN 预分词 → rustbpe BPE merge → tiktoken Encoding 构造
模拟执行tok_eval.py 对比 GPT-2/GPT-4 基线的 6 类文本压缩率评估
训练推理分离训练用 rustbpe(Rust 速度),推理用 tiktoken(多线程批量编码)
特殊 token 体系9 个特殊 token(bos + 4 对 start/end),训练后追加不干扰 merge
对话渲染策略render_conversation 生成 ids+mask,精确控制 SFT 监督范围
数字分组优化\p{N}{1,2} 替代 GPT-4 的 {1,3},32K 词表下最优甜点

最佳实践

1.rustbpe 训练 + tiktoken 推理的组合兼顾速度与灵活性

2.特殊 token 不参与 BPE 训练,训练后按 offset 追加到词表末尾

3.python_output 类型的 token mask=0 不参与监督,因为推理时由外部工具生成

4.训练后立即做 encode→decode roundtrip sanity check 验证正确性

5.预计算 token_bytes 张量用于 bits-per-byte 评估,特殊 token 记为 0 字节