分词器从0到1:ai-engineering-from-scratch 中 BPE、WordPiece、SentencePiece 实现对比
分词器从0到1ai-engineering-from-scratch 中 BPE、WordPiece、SentencePiece 实现对比【免费下载链接】ai-engineering-from-scratchLearn it. Build it. Ship it for others.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-from-scratch分词器Tokenizer是每一个大语言模型LLM的入口模型并不读文字只读整数。开源项目ai-engineering-from-scratch用从零手写的方式把当前三大主流分词算法——BPE、WordPiece、SentencePiece——讲透并亲手实现是新手理解分词器如何从 0 到 1 构建的完整学习路径。分词器为什么重要分词器决定了上下文窗口的实际容量unhappiness若被拆成 4 个 token多音节文本的 128K 上下文窗口会缩水近 75%推理成本每个 token 都计费、都消耗算力token 越少生成越快多语言公平性面向英语训练的英文本分词器韩语文本平均一个词要 2~3 个 token上下文效率直接减半一句话总结课程观点分词不是预处理而是架构决策。三种方案为什么子词分词胜出方案示例unhappiness优点致命缺陷词级分词[unhappiness]直观生词变[UNK]词表需无限大字符级分词u n h a p p i n e s s11 个 token永不失配序列爆炸模型浪费注意力子词分词[un, happi, ness]常见词保持完整生词可拆解— ✅所有现代 LLM——GPT、Claude、BERT、Llama——全部采用子词分词。区别只在于用哪种算法。BPE 从 0 到 1一次贪心压缩BPEByte Pair Encoding字节对编码的训练逻辑简单到可以写在一张便签上从单个字符或原始字节开始统计语料中所有相邻 token 对的出现次数把频率最高的一对合并成新 token重复直到达到目标词表大小关键在于合并表merge table本身就是分词器。编码新文本时必须严格按照训练时学到的顺序应用合并规则——顺序错了解码出的就是一串错误的 token。以课程中的小语料为例lower×5、lowest×2、newest×6Step 1 统计相邻对(w,e)13 次最高 Step 2 合并 (w,e) → we Step 3 合并 (we,s) → wes Step 4 合并 (wes,t) → west ...直到达到目标词表大小GPT-2 的改进是字节级 BPEByte-level BPE以 0~255 的原始字节作为基础词表恰好 256 个任何语言、任何编码都永远不会出现未知 token。GPT-2 词表 50,257GPT-4 约 100,256cl100k_baseGPT-4o 达 200,019。WordPiece换了选对标准的 BPEWordPieceBERT 所用与 BPE 长得很像区别只在合并准则BPE: 选出现次数最多的对 → count(A, B) WordPiece: 选共同出现超出随机期望的对 → count(AB) / (count(A) × count(B))BPE 问哪一对出现得最多WordPiece 问哪一对的共现比巧合更值得合并 这个微妙差异产出了不同的词表。WordPiece 还使用##前缀标记续接子词unhappiness → [un, ##happi, ##ness]BERT 用 30,522 大小的 WordPiece 词表运行至今。SentencePiece真正语言无关的分词器SentencePiece 的杀手锏不做预分词。它把输入当作原始 Unicode 字符流含空格没有针对特定语言的切词规则空格用▁表示。这对中文、日文、泰语等空格不划分词的语言至关重要。它支持两种算法BPE 模式与标准 BPE 相同的合并逻辑直接作用于原始字符序列Llama 2 采用词表 32,000Unigram 模式思路完全相反——从超大词表出发迭代删除对语料似然影响最小的 token剪枝而非合并T5、Gemma 采用 注意一个细节Llama 3 抛弃了 32K 的 SentencePiece 词表改用 tiktoken 的字节级 BPE 128,256 词表——多语言的税逼着词表变大。三大分词器速查对比维度BPEWordPieceSentencePiece合并准则原始频率似然比BPE 或 Unigram剪枝预分词通常需要如 GPT-2 正则需要无需语言无关续接标记无##前缀▁表示前导空格代表模型GPT 全系、Llama 3BERT、DistilBERTLlama 2、T5、Gemma实现库tiktokenRustHF Tokenizerssentencepiece词表大小一个有真金白银代价的决策128K 词表 × 4,096 维嵌入 5.24 亿参数仅嵌入矩阵32K 词表则约 1.31 亿——4 亿参数的差距只来自分词器选择但大词表压缩更狠同样一段英文128K 词表比 32K 词表少约 30% 的 token推理直接省 30% 的前向计算模型词表大小分词类型英文平均 token/词BERT30,522WordPiece~1.4GPT-250,257字节级 BPE~1.3Llama 232,000SentencePiece BPE~1.4Llama 3128,256字节级 BPEtiktoken~1.1GPT-4o200,019字节级 BPE~1.0动手实践仓库里的三层递进实现课程把写分词器拆成了由浅入深的三条线全部可运行① 核心原理课Phase 10 · Lesson 01 从字符级分词器起步手写一个完整的字节级 BPEtrain()里统计词对 → 合并最高频 → 记入合并表的循环就是 BPE 的灵魂。压缩比token 数 ÷ 原始字节数越低越好训练语料外出现unhappiness这种新模式时压缩比变差——这正是分词器对未见模式回退到字符级的直观证据。教程文档docs/en.mdPython 实现code/bpe.pyRust 实现code/bpe.rs② 生产级分词器Phase 10 · Lesson 02 上一个 BPE 一遇到日语、emoji、混用 Tab 的代码就崩。这一课补全工业级分词器的五阶段流水线归一化 → 预分词 → BPE 合并 → 特殊 token 注入 → ID 映射并讲透 chat template 如何把多轮对话拍平成 token 序列。教程文档docs/en.md生产级实现code/main.py③ 毕业项目Phase 19 · Project 30 从零训练字节级 BPE 词表256 个字节 ID 打底 → 保留特殊 token 区间【免费下载链接】ai-engineering-from-scratchLearn it. Build it. Ship it for others.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SeleniumBase 视觉回归测试实战:用 check_window() 捕获网页布局变更(以 xkcd logo 尺寸变化为例)

SeleniumBase 视觉回归测试实战:用 check_window() 捕获网页布局变更(以 xkcd logo 尺寸变化为例)

SeleniumBase 视觉回归测试实战:用 check_window() 捕获网页布局变更(以 xkcd logo 尺寸变化为例) 【免费下载链接】SeleniumBase APIs for browser automation, testing, and bypassing bot-detection. Includes CDP Mode: A stealthy confi…

2026/11/7 22:05:24 阅读更多 →
x-cmd v0.10.6 实战:一条命令快速监控Git仓库与系统进程

x-cmd v0.10.6 实战:一条命令快速监控Git仓库与系统进程

早上十点,我习惯性地先刷一遍几个关注的仓库有没有新动静,再瞟一眼服务器和本机的进程状态。以前这套流程要开两个终端、敲好几条命令,偶尔还得翻网页。x-cmd v0.10.6 这个版本把"仓库监控"和"进程监控"两个高频操作直接…

2026/10/25 13:22:28 阅读更多 →
中大保研机试备考指南:题型分布、评测规则与高频算法全解析

中大保研机试备考指南:题型分布、评测规则与高频算法全解析

写在前面的一个实在提醒:所谓"历年真题",绝大多数是回忆版,别把它当成官方标准答案。你要是去网上搜"中山大学保研机试真题",能看到的基本都是往年参加过机试的同学出来之后的回忆贴,题目大意正确…

2026/10/24 19:19:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻