What is 分词器?

    将原始文本转换为语言模型可以处理的数值 token 序列的组件,也可以执行反向转换。

    Definition

    分词器是连接人类可读文本和神经网络运算所需数值表示的预处理层。它将输入文本拆分为 token——可以是整词、子词或单个字符——并将每个 token 映射到固定词汇表中的唯一整数 ID。模型处理这些整数序列通过各层,并产生输出 token ID,然后分词器将其解码回文本。

    现代 LLM 主要使用子词分词算法,如字节对编码(BPE)、WordPiece 或 SentencePiece。这些算法从训练语料库中学习常见字符序列的词汇表。常见词如 "the" 获得单个 token,而罕见词被分解为多个子词 token。例如,"unhappiness" 可能被分词为 ["un", "happiness"] 或 ["un", "happ", "iness"],取决于分词器。这种方法在词汇表大小(通常 32,000-128,000 个 token)与表示任何输入文本而不出现词汇表外错误的能力之间取得平衡。

    分词器与其模型紧密耦合——每个模型家族(Llama、Mistral、GPT 等)都有自己的分词器和词汇表。使用错误的分词器会产生乱码输出,因为 token ID 映射不匹配。微调时,必须完全保留基础模型的分词器。分词器还决定了模型的上下文窗口利用率:更高效的分词意味着更多文本可以放入相同的上下文窗口长度中。

    Why It Matters

    分词直接影响模型性能、成本和能力。一个将常见领域特定术语碎片化为许多子词的分词器迫使模型"浪费"上下文窗口容量,并可能降低理解力。Token 计数还驱动云托管模型的 API 成本(按 token 计费),并决定给定输入是否适合模型的上下文窗口。理解分词有助于从业者估算成本、调试意外的模型行为,并就数据格式化和提示设计做出明智决策。

    How It Works

    分词管道通常分阶段工作:首先,对原始文本进行标准化(小写化、Unicode 标准化等,取决于分词器)。然后,预分词步骤将文本拆分为粗略的块(通常按空格和标点)。最后,子词算法(如 BPE)应用学习到的合并规则,将每个块分解为词汇表中的 token。每个 token 映射到其整数 ID,并根据需要添加特殊 token(如序列开始、序列结束或填充 token)。反向过程(解码)将 ID 映射回其文本表示并连接成可读字符串。

    Example Use Case

    一个为医学微调项目准备训练数据的团队发现,Llama 分词器将 "acetaminophen" 拆分为 4 个子词 token,将 "ibuprofen" 拆分为 3 个。这意味着医学文本每个词消耗的 token 比通用英语文本更多,降低了其用例的有效上下文窗口。他们在提示设计中考虑了这一点,保持系统提示简洁以最大化可用于临床内容的上下文。他们还在数据管道中使用 token 计数来确保没有训练示例超过模型的上下文长度。

    Key Takeaways

    • 分词器使用学习到的子词词汇表(BPE、WordPiece、SentencePiece)将文本转换为数值 ID。
    • 每个模型家族都有自己的分词器——使用错误的分词器会产生乱码输出。
    • Token 计数决定上下文窗口使用、API 成本和有效输入长度。
    • 领域特定文本可能分词效率较低,每个词消耗更多 token。
    • 微调基础模型时必须完全保留分词器。

    How Ertas Helps

    Ertas Studio 自动为用户选择的任何基础模型加载正确的分词器,消除了微调中常见的错误来源。平台的数据预览功能显示每个示例的 token 计数,帮助用户识别可能超出模型上下文窗口的过长示例。在训练过程中,Ertas 透明地处理所有分词、填充和特殊 token 插入,让用户可以专注于数据质量而非底层预处理细节。

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.