Zubnet AI学习Wiki › 词汇表
基础

词汇表

别名:词表、Token词汇表
模型能够识别和生成的固定token集合。词汇表在训练期间由分词器构建,通常包含32K到128K个条目——常见词、子词片段、单个字符和特殊token。模型处理的任何文本都必须可表示为该词汇表中的token序列。不在词汇表中的token会被分解为更小的、在词汇表中存在的片段。

为什么重要

词汇表决定了模型能“看到”什么。主要以英语训练的词汇表将高效处理英语(每个词一个token),但可能将中文、阿拉伯语或代码分割成许多小token(昂贵、较慢、上下文更少)。词汇表设计是模型开发中最具影响力却最少被讨论的决策之一。

深度解析

构建词汇表:分词器算法(通常是BPE)从单个字节或字符开始,迭代合并最频繁的配对。经过32K–128K次合并后,你会得到一个词汇表,其中常见词是单个token(“the”、“and”、“function”),而罕见词则被分割成子词片段(“un”+“common”、“pre”+“process”+“ing”)。特殊token如<BOS>(序列开始)、<EOS>(结束)和<PAD>(填充)则被显式添加。

大小权衡

更大的词汇表能更好地压缩文本(每句更少的token = 更便宜,能容纳更多上下文),但会增加模型的嵌入表大小。一个128K词汇表配合4096维嵌入,仅token表就增加约5亿参数。对于7B模型,这占总参数的7%,只用于将token映射到向量。对于1B模型,这将占50%。这就是为什么较小的模型倾向于使用较小的词汇表。

多语言词汇表

词汇表的语言覆盖取决于其训练语料库。Llama的早期分词器主要在英语上训练,将中文字符表示为3–4个token,使中文推理比英语贵3–4倍。Llama 3的分词器在更均衡的多语言数据上训练,大幅提升了非英语效率。这是一个可解决的问题,但需要有意识的努力——默认情况下是英语主导的。

相关概念

← 所有术语
← 词嵌入 语义搜索 →