为什么 GPT-4 不能直接做 BPE?大模型预分词正则的工程演进与权衡

为什么 GPT-4 不能直接做 BPE?大模型预分词正则的工程演进与权衡 打开 minbpe 项目的regex.py,你看到的第一行 import 就藏着一个陷阱:importregexasre不是import re(Python 标准库里那个全世界 Python 程序员都用过的正则表达式模块),而是import regex as re,一个第三方库,却伪装成了标准库的名字。如果你是一个 C++ 程序员,第一反应大概是:这不就是namespace alias吗?namespace re = regex;这种事情在 C++ 里稀松平常。但问题在于,Karpathy 为什么要用一个第三方正则库来替换 Python 的标准库?这不是洁癖,不是炫技,而是因为标准库的re模块有一个致命的能力缺陷:它不支持 Unicode 属性类\p{L}和\p{N},也不支持所有格量词?+和++,而 GPT-4 的正则分割模式恰好同时需要这两个特性。更有意思的是接下来的两行正则表达式常量。GPT-2 和 GPT-4 各用了一行正则来定义"预分割模式"——这两行正则的差异,浓缩了 OpenAI 从 GPT-2 到 GPT-4 五年间在分词工程上积累的全部经验教训:大小写不敏感匹配、数字位数限制、