最近在做 Stanford CS336(Language Modeling from Scratch)的 Assignment 1,实现了一个 BPE Tokenizer。最初的 trainer 跑 TinyStories 要约 8 分钟,改完后降到约 36 秒。
耗时主要花在 merge 循环里。要判断哪些工作可以省,得先弄清每次 merge 改变了哪些统计量。下面先交代 BPE 的表示和合并规则,再回到这段实现。
update:
遇到的汉字:
丹:63838
李:63969
昨天写的正则发现死活识别不了 “年"字…
放到unicode编码转化公式 查了下发现竟然是不同的字orz..
其实猜想到也许是日文的"年”…结果查询了下发现是韩文的锅?