概述
它在保持可管理的词汇量和处理模型可能遇到的任何词汇之间取得平衡。
深入探讨
语言模型看不到原始字符或整个单词——它们看到的是标记、映射到文本片段的整数 ID。选择这些片段是一种权衡:单词级词汇量很大,并且会因看不见或拼写错误的单词而窒息,而字符级词汇量会使序列非常长。字节对编码采取了中间立场。 BPE 借鉴了 20 世纪 90 年代的数据压缩算法,从单个字符(或原始字节)开始,反复将最常见的相邻对合并成一个新的标记,从而将词汇量扩展到常见的子词。频繁出现的单词变成单个标记,而罕见的单词则分成可重复使用的片段。 GPT 模型使用的字节级 BPE 对原始字节进行操作,因此它可以表示任何 Unicode 文本(包括表情符号和任何语言),而不会出现词汇表之外的故障。
现实世界的实施
GPT 和 Llama 模型使用 BPE 风格的标记器将提示转换为网络处理的标记 ID。
API 定价和上下文窗口限制以令牌来衡量,因此令牌化直接影响成本和文本适合量。
通过将表情符号、代码和罕见单词拆分为可重用的子单词或字节片段来优雅地处理它们。
通过字节级编码,在一个模型中支持多种语言,而无需每种语言使用单独的字典。
标记化和字节对编码的未来
代币化正在积极重新思考。像 ByT5 这样的字节和字符级模型,以及新兴的无令牌或“字节潜在”架构,旨在完全放弃固定词汇表,以便模型统一处理任何输入和任何语言。研究人员还在解决标记化的公平性问题——许多非英语和资源匮乏的语言目前每个句子的标记成本要高得多,从而提高了价格并缩小了有效上下文。预计分词器会针对代码、数学和多语言平衡进行调整,并继续进行实验,将边界推回到原始字节。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是令牌化和字节对编码?
标记化将文本分割成语言模型实际读取的小单元,而字节对编码 (BPE) 是构建该词汇的流行方法。它平衡了拥有可管理的词汇表和处理模型可能遇到的任何单词。
标记化会产生什么供语言模型读取?
模型对标记(代表字符、子词或单词的整数 ID)进行操作,而不是对原始文本字符串进行操作。
字节对编码如何构建其词汇表?
BPE 从字符或字节开始,贪婪地合并最频繁的相邻对,逐渐形成公共子字标记。
与字级标记化相比,BPE 等子字方法能解决什么问题?
单词级词汇表无法识别未见过的单词;子词标记化将罕见的单词分解为已知的片段,避免词汇表外的问题,同时保持词汇表的可管理性。
GPT 模型中使用的字节级 BPE 有什么优点?
对原始字节进行操作意味着可以对每个可能的输入进行编码,因此无论语言或符号如何,都不存在真正未知的字符。
为什么模型的标记计数通常与句子中的单词数不同?
子词标记化可以将单个单词分成多个片段,并且对间距和大小写敏感,因此标记计数很少等于单词计数。