观察
OpenAI 在 2024 年春季发布会上发布了新模型 gpt-4o
,这个模型对 tokenizer 进行了扩展,将 encoding 的长度扩展到了 200k ,用来增强模型的多语言效率。
根据 OpenAI 做的 Model evaluations ,增加 100k 新 tokens 为中文 tokenization 让中文 tokens 减少了大约 30% 。
但新 tokens 中包含了很多中文互联网上的不良广告文本,有很多人最近在讨论这件事,有人说这是 OAI 犯了低级错误。
具体有哪些可以查看 蒋炎岩博士的实验
在第一次看到有人讨论这件事时,我好奇是否只有中文有这种情况,于是我将检测中文换成了检测日文,并观察结果:
113862 ありがとうございました
93926 ありがとうございます
147058 VIPがお送りします
108576 風吹けば名無し
171403 スーパーコピー
77298 @お腹いっぱい
87123 風吹けば名無し
118712 トラックバック
123086 がお送りします
177976 ご了承ください
这是 o200k_base
encoder 中前十长的日文 tokens ,除了一些很经典的日语敬语外,还有一些看着比较迷惑的 tokens ,比如 “VIPがお送りします” ,
简单调查发现,这是著名的日文匿名论坛 2ch 中 “ニュー速VIP” 板块表示匿名用户的名称,现在 2ch 已经变成了 5ch ,而这个匿名名称现在也变成了“以下、5ちゃんねるからVIPがお送りします”。
但在 Wayback Machine 上仍能看到证据。
同样的,“風吹けば名無し”是“なんでも実況(ジュピター)”板块的匿名名称,这里有一个不太新的 2ch 上匿名名称的列表,可以发现较长 tokens 中不少都是 2ch 的匿名名称或 2ch 用语。
比起中文中的低质量 tokens ,日文的少了一些节目效果,但这并不影响这些新 tokens 显然没任何意义,因为我们既不会向模型输入这些 tokens ,也不会期待模型输出这些 tokens 。
这些魔幻 tokens 在所有 tokens 中实际上占比并不多,尤其是对于 LLM 的数量级,这个错误率并不是无法接受。
tokenizer 是使用 corpus 训练的,越高频出现的词语越容易被加入 tokenizer 中, 而这些魔幻 tokens 的来源我猜大概率是类似 Common Crawl 这样的数据集。
在通用目的的 tokenizer 中出现这些 tokens 实际上让我们可以知道, 哪怕是最新发布的模型,在 corpus 中也没有什么特殊的,比起选择一个完美的 base model ,也许更应该专注于 sft 和 rlhf 的数据质量。