网站建设小程序南宁,郑州网站制作营销,关于企业微网站建设方案,哪些网站用wordpressGPT 不是适用于某一门语言的大型语言模型#xff0c;它适用于几乎所有流行的自然语言。所以 GPT 的 token 需要 兼容 几乎人类的所有自然语言#xff0c;那意味着 GPT 有一个非常全的 token 词汇表#xff0c;它能表达出所有人类的自然语言。如何实现这个目的呢#xff1f;…GPT 不是适用于某一门语言的大型语言模型它适用于几乎所有流行的自然语言。所以 GPT 的 token 需要 兼容 几乎人类的所有自然语言那意味着 GPT 有一个非常全的 token 词汇表它能表达出所有人类的自然语言。如何实现这个目的呢
答案是通过 unicode 编码。
Unicode统一码、万国码、单一码是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的它为每种语言中的每个字符设定了统一并且唯一的二进制编码以满足跨语言、跨平台进行文本转换、处理的要求。
以下的网址可以计算一个语料的tokens数目
https://platform.openai.com/tokenizerhttps://platform.openai.com/tokenizer
有两个问题
汉字是怎么编码的编码和模型是否相关
虽然 GPT-3.5 的代码和模型权重并未开源但是 tokenizer 部分是开源到 GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAIs models.tiktoken is a fast BPE tokeniser for use with OpenAIs models. - GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAIs models.https://github.com/openai/tiktoken 的这是一个 BPEByte-Pair Encoding tokenization方法的 tokenizer。
关于第一个问题ChatGPT 是一个多语言模型因此编码的问题不局限于汉字。tiktoken 的词表绝大多数是英文子词并包含少量 unicode token 和表示字节的 token以 UTF-8 的形式表示多语言。
关于第二个问题不同的 OpenAI 模型采用了不同的编码方式。
GPT-4、GPT-3.5-turbo 等模型采用的是 cl100k_base词表 100k 大小。text-davinci 系列采用的是 p50k_base词表大小 50k。还有一些其他模型采用了 r50k_base。更早的 GPT-2 有单独的编码方式也开源在 HuggingFace。
https://github.com/openai/tiktoken/blob/main/tiktoken/model.pyhttps://github.com/openai/tiktoken/blob/main/tiktoken/model.py作用
用tiktoken进行token计数
OpenAI的模型都有token限制。有时在将文本传递给API之前需要计算字符串中的token数量以确保不超过该限制。其中一个需要计算token数量的技术是“检索增强生成Retrieval Augmented Generation”通过对文档语料库运行搜索或嵌入搜索来回答用户的问题提取最有可能的内容并将其作为上下文涵盖在prompt中。成功实现这种模式的关键是在token限制内包含尽可能多的相关上下文因此需要能够计算token数量。OpenAI提供了一个名为tiktokenhttps://github.com/openai/tiktoken的Python库来实现这一功能。如果你深入研究这个库就会发现它目前包括五种不同的切分方案r50k_base、p50k_base、p50k_edit、cl100k_base和gpt2。其中cl100k_base是最相关的它是GPT-4和当前ChatGPT使用的经济型gpt-3.5-turbo模型的tokenizer。text-davinci-003 使用的是p50k_base 。在tiktoken/model.py 的MODEL_TO_ENCODING 词典中可以找到模型与tokenizer的完整映射。