加载中...
Tokenizer 是将原始文本切分为 token 序列的工具,是 NLP 流水线的第一步。不同模型使用不同的 tokenizer,导致同一段文本的 token 数可能相差 30% 以上,直接影响上下文利用效率和 API 费用。

| 类型 | NLP 预处理工具 |
| 主流算法 | BPE / WordPiece / Unigram LM |
| 常用库 | HuggingFace tokenizers、OpenAI tiktoken、SentencePiece |
现代 LLM 几乎都用子词(subword)分词,三种主流算法各有侧重:
cl100k_base(GPT-4 使用)有 100,256 个 token。字节级 BPE(BBPE)把所有字节(256 个)作为基础词汇,可以处理任意语言和特殊字符,不存在 [UNK] 未知词问题,GPT-2 及后续版本均采用这一方案。[1]
Tokenizer 的效率对不同语言差异巨大。以「人工智能」四个字为例:GPT-4 的 tokenizer 切成 3 个 token,而某些早期模型可能切成 8 个(每个字符单独一个 token),导致中文用户实际可用上下文长度缩水一半。
LLaMA 1 的 tokenizer(32K 词表)对中文编码效率差,LLaMA 2 几乎没有改善,中文社区普遍需要扩充词表再继续预训练(如 Chinese LLaMA)。LLaMA 3 把词表扩大到 128,256 个 token,显著改善了多语言效率。选择 tokenizer 就是在词表大小、多语言覆盖、训练稳定性之间做权衡,没有万能最优解。

| 类型 | NLP 预处理工具 |
| 主流算法 | BPE / WordPiece / Unigram LM |
| 常用库 | HuggingFace tokenizers、OpenAI tiktoken、SentencePiece |
登录 后参与讨论
暂无讨论,来发表第一条评论吧