每个语言模型的前门都焊着一个分词器。模型看到第一个词之前,分词器已经把文本切成单元、映射成数字,实际上决定了模型能思考什么。这个选择不是表面功夫。同一个语料库上的两个分词器,词汇量可能不同,一个词被拆成几块可能不同,运行速度和内存占用可能不同,任意文本走完一个来回后能不能被还原也可能不同。
这些差异会改变真实世界的行为:推理成本、延迟、模型处理没训练过的语言时表现如何、解码输出有多可信。但分词器通常是模型流水线里最不被审视的一环。大多数语言模型基准测试把分词器当成固定输入,接受它而不是评估它;大多数团队选分词器就像选默认值——模型自带什么就用什么。
TKBEN 建立在相反的假设上:分词器是一个选择,应该像检查任何性能关键组件一样去检查它——用可重复、可检查的数据,而不是凭感觉。
为什么朴素基准测试不够用
比较分词器的直接做法是跑个快速脚本:加载一个,喂点文本,打印一个数字,然后继续。这种做法有个弱点,只是后来才暴露出来——那个数字没了。跑脚本的人没法重新打开证据,没法换个数据集重跑对比,没法展示数字是怎么算出来的,也没法告诉你它反映的是不是真正重要的测试集。
分词器对输入很敏感。一个在英文新闻文本上看起来高效的分词器,可能在多语言数据集上把文本切得稀碎。一个看起来丰富的词汇表,在你关心的领域里仍可能留下很高的未知词率。编码速度快,说明不了尾延迟或负载下的内存表现。这些都不会从单个打印出来的统计数字里体现出来。
TKBEN 用正确的方式处理这个问题。它是一个本地网页应用,把下载的分词器资产、验证报告和基准测试结果保存在自己的工作区里,之后的会话可以重新打开并检查同一份证据。一次基准测试变成一份带来源记录的已保存报告,几周后还能重新打开,而不是脚本一退出就消失的打印数字。
先验证,再比较
TKBEN 的核心是一个大多数临时基准测试都会混在一起的分离:在理解你要跑分词器的文本之前,你没法比较分词器。数据集验证排在第一位。你加载一个 Hugging Face 数据集、一个自定义标识符,或者一个本地 CSV、XLS、XLSX 文件,然后对它运行验证。
这个顺序看起来慢,但它堵住了一个常见的坑:用一个没检查过的数据集跑出来的基准数字,可能反映的是数据集的毛病而不是分词器的毛病。TKBEN 把验证报告和基准结果一起存下来,让证据链完整可查。
