当前位置: 首页 > article >正文

关于大模型中的Token概念小记

大模型中的 Token 详解

在大模型(如 GPT-4、Llama、Claude 等)中,Token(标记)是自然语言处理(NLP)中的一个基本单位,用于将文本拆分为模型可以理解和处理的片段。它的粒度可以是一个单词、一个子词,甚至是一个字符,取决于具体的 Tokenization(分词)方法。


1. Token 的概念

Token 是模型处理文本的最小计算单位,类似于计算机中的字节对数据的作用。例如,在大多数基于 Transformer 的 NLP 模型中,文本输入时不会直接作为完整的句子,而是首先被拆分成一系列 Token,然后再进行处理。

示例:

假设有一句话:

“ChatGPT is amazing!”

如果使用空格作为简单的 Token 拆分依据,它可能会变成:

["ChatGPT", "is", "amazing", "!"]

但实际上,大模型采用更复杂的分词方式,例如基于 Byte Pair Encoding (BPE)Unigram,它可能会拆成:

["Chat", "G", "PT", " is", " amazing", "!"]

在这个例子中,“ChatGPT” 被拆成了三个 token,这是因为 BPE 认为 “Chat”、“G” 和 “PT” 是更常见的子单元。


2. Token 计算方式

许多 AI 模型(如 OpenAI 的 GPT)在提供 API 访问时,都会限制最大 Token 处理量。例如:

  • GPT-4 Turbo 可能支持 128K Token(输入+输出总和)。
  • 早期 GPT-3.5 的 Token 限制一般在 4K 左右。

通常来说:

  • 一个英文单词 ≈ 1.2 个 Token
  • 一个汉字 ≈ 1 个 Token
  • 一个标点符号 ≈ 1 个 Token
  • 代码(如 Python/HTML)通常比自然语言消耗更多 Token

示例

句子:“ChatGPT is amazing!” 大约包含 4-5 个 Token

["Chat", "G", "PT", " is", " amazing", "!"]

而同样的句子在中文:

"ChatGPT 很棒!"

可能会被拆分成:

["ChatGPT", " 很", "棒", "!"]

总共 4 个 Token


3. Tokenization(分词)方法

不同的大模型使用不同的 Tokenization 技术,常见的有:

(1) Byte Pair Encoding (BPE)

  • 这是 GPT-4、Llama 等大模型常用的分词算法。
  • 通过统计文本中的常见子词,逐步合并成更大的 Token,提高压缩率并减少 Token 数量。
  • 示例
    • “unhappiness” → [“un”, “happiness”]
    • “happiness” → [“happi”, “ness”]
    • “happily” → [“happi”, “ly”]

(2) Unigram Language Model

  • 由 Google 提出的 SentencePiece 分词器使用此方法。
  • 通过概率统计计算 Token 的最优拆分方式,以最大化文本的可压缩性。

(3) WordPiece

  • BERT 使用的一种分词方法,与 BPE 类似,但它是通过最大化概率的方式来决定如何合并子词的。

(4) Character-based

  • 有些 NLP 任务会直接按字符进行 Tokenization,适用于拼写敏感的任务,比如 OCR(光学字符识别)或自动拼写纠正。

4. Token 影响成本与性能

在使用大模型时,Token 直接影响计算成本和推理速度:

  1. 推理成本:大多数 AI API(如 OpenAI)按照 Token 数量计费,Token 越多,成本越高。
  2. 响应时间:模型需要逐个处理 Token,Token 数量越多,响应速度越慢。
  3. 上下文长度:模型通常对最大 Token 数量有限制,如果超过上限,会截断部分内容。

计算公式

假设 GPT-4 的 API 定价如下:

  • 输入 Token 费用: 0.01 / 1000 T o k e n 0.01 / 1000 Token 0.01/1000Token
  • 输出 Token 费用: 0.03 / 1000 T o k e n 0.03 / 1000 Token 0.03/1000Token

如果一篇文章有 5000 个 Token,则处理成本为:

输入成本 = 5000 × 0.01 1000 = 0.05 美元 \text{输入成本} = \frac{5000 \times 0.01}{1000} = 0.05 \text{美元} 输入成本=10005000×0.01=0.05美元

输出成本 = 5000 × 0.03 1000 = 0.15 美元 \text{输出成本} = \frac{5000 \times 0.03}{1000} = 0.15 \text{美元} 输出成本=10005000×0.03=0.15美元


5. Token 的优化策略

由于 Token 影响计算效率和成本,可以采取以下策略优化:

  1. 减少冗余:避免长而重复的输入,如不必要的上下文信息。
  2. 调整分词方式:使用更合适的 Tokenization 方法,减少 Token 数量。
  3. 截断无用部分:对于长文本输入,可以保留核心信息,减少无意义的 Token 占用。
  4. 使用更短的 prompt:精简指令,使模型能够在较少 Token 下产生最优结果。

6. 结论

  • Token 是 NLP 模型处理文本的基本单位,可能是单词、子词、字符或特殊符号。
  • 不同的分词方法(BPE、Unigram、WordPiece)会影响 Token 的划分方式
  • Token 数量影响计算成本、响应时间和模型的上下文能力
  • 合理优化 Token 数量可以提高 AI 任务的性能,降低使用成本

希望这篇文档能帮助你更好地理解大模型中的 Token!🎯


http://www.kler.cn/a/611945.html

相关文章:

  • 江西核威环保科技:打造世界前沿的固液分离设备高新企业
  • browser-use 库安装指南
  • 【MyBatisPlus】MyBatisPlus介绍与使用
  • 什么是logback FixedWindowRollingPolicy的文件滚动策略?
  • 知识就是力量——物联网应用技术
  • Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍
  • Matlab Hessian矩阵计算(LoG算子)
  • 从零开始跑通3DGS教程:介绍
  • PaddleNLP UIE 通过OCR识别银行回执信息
  • 基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行步骤
  • 【面试题】利用Promise实现Websocket阻塞式await wsRequest() 请求
  • JavaScript的性能优化指导
  • 【算法学习计划】贪心算法(上)
  • ​SVN 常用命令速查表
  • 什么是快重传
  • Python网络编程实战:多线程素数服务与简易爬虫开发
  • Pytorch :维度转化
  • Vue2+Lodop插件实现在线打印功能(提供Gitee源码)
  • BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多变量时序预测(Matlab)
  • pcl 1.14.1 vs2022 Eigen::internal::aligned_free bug