分享

ChatGPT中常说的token到底是什么?

 gnyykl 2024-02-28 发布于山东

本文阅读时间约5分钟

01 前言

在讨论模型的支持的上下文能力时,我们会听到类似:

  • gpt 3.5支持最大8k的token

  • gpt-4支持最大32k的token

当在讨论gpt的收费模式时,我们能看到:

  • gpt 3.5的价格为:$0.002/ 1K tokens

  • gpt4 8k上下文模式的价格为:$0.03/ 1K tokens

在这些表示数量的地方,都用token在表示。token是一个什么概念,为什么要用它来作为计量单位,而不是字或词来作为单位呢?

02 为什么要用token

如果使用便于人理解的字符来作为计量单位会有什么问题吗?

我们知道,ChatGPT支持多种自然语言,而每种自然语言的词法和语法都不一样,且有些语言的单个字/词是不定长的。比如在英语中:hi和hello,两个都是一个单词,但长度不一样。

中文虽然每个字看起来是定长的,但实际在计算机中存储的时候,也不是定长的。比如在UTF-8编码中,大部分的中文汉字占3个字节,而一些生僻字:比如𠜎,则占位4个字节。

因此,需要有另外的统一的计量方式,来支持不同的自然语言。

在许多自然语言处理模型,如Transformer架构(ChatGPT也是基于此架构),是基于token进行操作的。这些模型通常接受一系列的token作为输入,并输出相应的token序列。

token是这些自然语言处理模型的最小处理单位。在英文中,一个token可以是一个词,一个标点符号,或者一个空格。在中文中,一个token可能是一个字或一个词。

使用token作为计量单位可以使模型更容易地处理不同的语言和文本风格。不同的语言和文本风格可能有不同的词汇和语法结构,使用token作为计量单位可以帮助模型更好地理解和处理这些差异。

03 token是怎么计算的

在自然语言处理中,划分文本为token的过程称为'tokenization”,这个过程的目标是将输入的文本划分为一些可以被模型处理的单元。相关的算法有多种:

  1. 空格分割(Whitespace Tokenization):这是最简单的tokenization方法,它根据空格将文本划分为token。这种方法对于大多数使用空格作为词汇分隔符的语言(如英语)来说工作得很好,但对于没有明显词汇分隔符的语言(如中文)来说则不太适用。

  2. 规则分割(Rule-Based Tokenization):这种方法使用一组预定义的规则来划分token。这些规则可能包括分割标点符号、缩写、以及具有特殊格式的词汇(如电子邮件地址或网址)。规则分割可以处理更多的情况,但也需要更多的维护和调整。

  3. 词汇表分割(Vocabulary-Based Tokenization):这种方法首先创建一个词汇表,然后将文本划分为在词汇表中存在的token。如果一个词不在词汇表中,它可能会被划分为更小的token,或者被标记为一个特殊的'未知'token。

  4. 子词分割(Subword Tokenization):这种方法将文本划分为子词或词根的token。这种方法尤其对处理罕见词、新词或者非结构化文本有用。常见的子词分割算法包括Byte Pair Encoding (BPE)、Unigram Language Model和SentencePiece。

其中,ChatGPT就是采用的字词分割中的BPE算法进行tokenization。

04 BPE算法浅析

该算法主要分如下几步:

  1. 初始化词表

  2. 统计词对频率

  3. 合并最常见的词对(相邻的字符)

  4. 更新词汇表

  5. 重复步骤2到4,直到达到预定的词汇表大小或最大词对频率为1.

比如要划分:no cross, no crown,大致步骤如下:

图片

注意:

  • 通常在划分之前会为每个单词加一个终止符,用于标识该subword是词后缀。

  • 不同的BPE算法规则,最终产出的词表可能不同,上图主要做一个BPE算法思想示意。

  • ChatGPT的BPE是预先训练好的BPE算法,其可以识别常见的字符组合。比如示例中的单词,ChatGPT均可识别,其划分的最终结果可能如下,每一个单词为一个token:

图片

对于ChatGPT来说,有一个粗略的token估算公式:

1000 tokens ≈ 750个英文单词

1000 tokens ≈ 500个汉字

参考:

gpt官方token在线计算:https://platform./tokenizer




90后技术宅

一线码农成长点滴分享

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多