OpenAI的光环出现裂痕:谈GPT4o的token词表更新问题【20245】
作者: 孔某人的低维认知 来源: 孔某人的低维认知
本文不是本次OpenAI发布会的评价,只是从这次发布的一个小问题来讨论。
####1、GPT4o的token新词表的问题
####1.1、问题描述
GPT4o难得的更新了tokenizer的词表,内部代号从cl100k_base变成了o200k_base,看名字就知道是扩大了词表大小,官方发布说明也把增加了tokenizer的压缩率作为新feature发布。这个事情并不难,对终端用户的文字生成速度和费用都有一个不大不小的改善。
如果认真看过新词表,就会发现其中有很多垃圾语料的常见词,例如各种博彩、色情广告的常见文本片段。到这里还可以说是大丈夫不拘小节,但下面这个case就让人觉得有些不妥了:
“给主人留下些什么吧”这句话翻译成英文
这个输入的特殊之处在于【给主人留下些什么吧】恰好是词表的一个token,id是177431。而它的输出是:
以下是gpt-4o-2024-05-13模型在temperature=1下的10次独立输出:
(有些字符可能无法正确显示)
---------------
“خواستار بیشتری هستم” در حالی که به "شاد شدم" خیلی خوشحالم در هنگام بازدید از آن صفحات و بخش ها در سایت های مختلف، به "پلتفرم" فضای " دنیای شبکه مجازی " اشاره دارد
معادل انگلیسی عبارت “好厉害” به “So awesome” ترجمه میشود.
“Frequently comment” or "Comment frequently"
“Great comment” or “Well commented” can be translations for “好感” in the context of a positive response on social media. If "加" is interpreted as a verb suggesting there is an addition to the comment, it might also mean "Add a great comment." However, translations may vary depending on the context.
"Care for each other" or "support each other"
"Express great thanks" or "to leave a great comment." The exact translation may vary depending on the context in which the phrase is used. If you provide more context, I can offer a more accurate translation.
"Thank you for your support" or "thank you for your likes".
“圾爱”在某些社交媒体平台确实可以翻译成“likes”,而在很多情况里也可以翻成“支持”因为它表示一种形式的背书。
The sentence "好好爱" can be translated into English as "Love well."
“彩祭拜” 翻译成英文是 “leave a comment.”
“_超碰多多指教。
Sure! "老时时彩"翻译成英文是"Like a lot" 或 "Give a lot of likes"。
如果我们修改一下输入,避开这个token:
“给主人留下点什么吧”这句话翻译成英文
# 给主人留下点什么吧 的token序列是:[176738, 115390, 8300, 10555, 18208]
此时的输出为:
以下是gpt-4o-2024-05-13模型在temperature=1下的10次独立输出:
---------------
"Leave something for the host."
"Let's leave something for the owner."
"Leave something for the owner."
"Let's leave something for the host."
"Let's leave something for the host."
"Let's leave something for the host."
"Let's leave something for the host."
"Let's leave something for the owner."
"Let's leave something for the host."
"Let's leave something for the owner."
####1.2、问题原因分析
对这个问题原因的最自然猜测是:这个token的训练明显不足,导致模型对此几乎等同于随机输出。
但问题来了,tokenizer的词表本就是选择预料中常见的片段,为什么会出现出现在词表中,而且是在全球所有语言中前20w的词表中的词,却会出现训练不足的情况?
对此的一个自然猜测是:OpenAI先基于原始语料训练的tokenizer词表,然后再进行的语料过滤,使得低质量语料中大量使用但普通语料中很少出现的词被留在词表中,且出现了训练不足的情况。
这个问题不是什么很难理解的问题,在国内炼基座LLM的团队中,大概实习生犯了这样的错误都会被狂喷。正式员工肯定得影响绩效。
####2、OpenAI的低级错误正在变多
在公司如此重视的模型中犯下这样低级的错误,并且到模型发布都没有被发现,也没有被任何形式修补。这说明OpenAI对于模型细节质量的把控早就不是很多人想象的高质量了。
从中推测内部至少有以下流程环节上的问题:
-
tokenizer词表训练的阶段选择有问题
-
没有人检查tokenizer训练的词表是否需要优化
-
没有人关注是否有训练不足的token,以及这些训练不足的token的效果
前两点我相信在国内也是一般正经炼丹的团队会关注一下的问题,这次问题之后,估计可能第三点也会开始被关注。
而OpenAI呢?
目前来看,o200k_base这版词表在追求完美的角度下已经不能用了,而全链路换词表的成本又不低。也许OpenAI有一些低成本修复的手段,也许也没有。让我们坐等未来1个月OpenAI是否能发现和修正这个问题吧。
交流与合作
如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请私信联系,见 联系方式。
本文于2024.5.14首发于微信公众号与知乎。
知乎链接 https://zhuanlan.zhihu.com/p/697675593
更多AI工具,参考Github-AiBard123,国内AiBard123