大模型(LLM)的token学习记录-I

文章目录

  • 基本概念
    • 什么是token?
    • 如何理解token的长度?
    • 使用openai tokenizer 观察token的相关信息
    • open ai的模型
  • token的特点
    • token如何映射到数值?
    • token级操作:精确地操作文本
    • token 设计的局限性
  • tokenization
  • token 数量对LLM 的影响
    • 训练模型参数量与训练数据量统计
    • 影响模型效果的因素有哪些?
  • 参考

基本概念

什么是token?

  • 在 LLM 中,token代表模型可以理解和生成的最小意义单位,是 LLM 进行处理的最小单元。
  • 根据所使用的特定标记化【Tokenization】方案,token可以表示单词、单词的一部分,甚至只表示字符。采用的方案由模型的类型和大小决定
  • token被赋予数值或标识符,并按序列或向量排列,并被输入或从模型中输出,是模型的语言构件。
  • 模型理解这些token之间的统计关系,并擅长做token的接龙
  • token化是将输入和输出文本分割成可以由LLM AI模型处理的较小单元的过程
  • token作为原始文本数据和 LLM 可以使用的数字表示之间的桥梁。LLM使用token来确保文本的连贯性和一致性,有效地处理各种任务,如写作、翻译和回答查询。

如何理解token的长度?

下面是一些有用的经验法则,可以帮助理解token的长度:

  • 1 token ~= 4 chars in English
  • 1 token ~= ¾ words
  • 100 tokens ~= 75 words
  • 1-2 句子 ~= 30 tokens
  • 1 段落 ~= 100 tokens
  • 1,500 单词 ~= 2048 tokens
  • 一个unicode字符可以拆分为多个token

使用openai tokenizer 观察token的相关信息

可以通过https://platform.openai.com/tokenizer 来观察token 的相关信息。

可以看到,GPT-3.5&GPT-4 与 GPT-3(Legacy) 模型tokenizer方案是不同的,前者产生的token数据量变少,针对中文的处理更加合理。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

open ai的模型

OpenAI API由一组不同的模型提供支持,这些模型具有不同的功能和价位

GPT-4是一个大型多模态模型(接受文本或图像输入和输出文本),由于其更广泛的一般知识和先进的推理能力,它可以比我们以前的任何模型都更准确地解决难题。

MODELDESCRIPTION
GPT-4 and GPT-4 TurboA set of models that improve on GPT-3.5 and can understand as well as generate natural language or code
GPT-3.5 TurboA set of models that improve on GPT-3.5 and can understand as well as generate natural language or code
DALL·EA model that can generate and edit images given a natural language prompt
TTSA set of models that can convert text into natural sounding spoken audio
WhisperA model that can convert audio into text
EmbeddingsA set of models that can convert text into a numerical form
ModerationA fine-tuned model that can detect whether text may be sensitive or unsafe
GPT baseA set of models without instruction following that can understand as well as generate natural language or code
DeprecatedA full list of models that have been deprecated along with the suggested replacement

token的特点

token如何映射到数值?

词汇表将token映射到唯一的数值表示。LLM 使用数字输入,因此词汇表中的每个标记都被赋予一个唯一标识符或索引。这种映射允许 LLM 将文本数据作为数字序列进行处理和操作,从而实现高效的计算和建模。

为了捕获token之间的意义和语义关系,LLM 采用token编码技术。这些技术将token转换成称为嵌入的密集数字表示。嵌入式编码语义和上下文信息,使 LLM 能够理解和生成连贯的和上下文相关的文本。像transformer这样的体系结构使用self-attention机制来学习token之间的依赖关系并生成高质量的嵌入。

token级操作:精确地操作文本

token级别的操作是对文本数据启用细粒度操作。LLM 可以生成token、替换token或掩码token,以有意义的方式修改文本。这些token级操作在各种自然语言处理任务中都有应用,例如机器翻译、情感分析和文本摘要等。

token 设计的局限性

在将文本发送到 LLM 进行生成之前,会对其进行tokenization。token是模型查看输入的方式ーー单个字符、单词、单词的一部分或文本或代码的其他部分。每个模型都以不同的方式执行这一步骤,例如,GPT 模型使用字节对编码(BPE)

token会在tokenizer发生器的词汇表中分配一个 id,这是一个将数字与相应的字符串绑定在一起的数字标识符。例如,“ Matt”在 GPT 中被编码为token编号[13448],而 “Rickard”被编码为两个标记,“ Rick”,“ ard”带有 id[8759,446],GPT-3拥有1400万字符串组成的词汇表。

token 的设计大概存在着以下的局限性:

  • 大小写区分:不同大小写的单词被视为不同的标记。“ hello”是token[31373] ,“ Hello”是[15496] ,而“ HELLO”有三个token[13909,3069,46]。
  • 数字分块不一致。数值“380”在 GPT 中标记为单个“380”token。但是“381”表示为两个token[“38”,“1”]。“382”同样是两个token,但“383”是单个token[“383”]。一些四位数字的token有: [“3000”] ,[“3”,“100”] ,[“35”,“00”] ,[“4”,“500”]。这或许就是为什么基于 GPT 的模型并不总是擅长数学计算的原因。
  • 尾随的空格。有些token有空格,这将导致提示词和单词补全的有趣行为。例如,带有尾部空格的“once upon a ”被编码为[“once”、“upon”、“a”、“ ”]。然而,“once on a time”被编码为[“once”,“ upon”,“ a”,“ time”]。因为“ time”是带有空格的单个token,所以将空格添加到提示词将影响“ time”成为下一个token的概率。

tokenization

  • 将文本划分为不同token的正式过程称为 tokenization.
  • tokenization是特定于模型的。根据模型的词汇表和tokenization方案,标记可能具有不同的大小和含义。
    BPE 是一种将最频繁出现的字符对或字节合并到单个标记中的方法,直到达到一定数量的标记或词汇表大小为止。BPE 可以帮助模型处理罕见或不可见的单词,并创建更紧凑和一致的文本表示。BPE 还允许模型通过组合现有单词或标记来生成新单词或标记。词汇表越大,模型生成的文本就越多样化并富有表现力。但是,词汇表越大,模型所需的内存和计算资源就越多。因此,词汇表的选择取决于模型的质量和效率之间的权衡。

tokenization涉及到将文本分割成有意义的单元,以捕捉其语义和句法结构,可以采用各种tokenization技术,如字级、子字级(例如,使用字节对编码或 WordPiece)或字符级。根据特定语言和特定任务的需求,每种技术都有自己的优势和权衡。

  • 字节对编码(BPE):为AI模型构建子词词汇,用于合并出现频繁的字符/子字对。
  • 子词级tokenization:为复杂语言和词汇划分单词。将单词拆分成更小的单元,这对于复杂的语言很重要。
  • 单词级tokenization:用于语言处理的基本文本tokenization。每个单词都被用作一个不同的token,它很简单,但受到限制。
  • 句子片段:用习得的子词片段分割文本,基于所学子单词片段的分段。
  • 分词tokenization:采用不同合并方法的子词单元。
  • 字节级tokenization:使用字节级token处理文本多样性,将每个字节视为令牌,这对于多语言任务非常重要。
  • 混合tokenization:平衡精细细节和可解释性,结合词级和子词级tokenization。

相关的技术参见 下图:
在这里插入图片描述

token 数量对LLM 的影响

训练模型参数量与训练数据量统计

2022 年 9 月,DeepMind(Chinchilla 论文)中提出Hoffman scaling laws:表明每个参数需要大约 20 个文本token进行训练。比如一个7B的模型需要140B token,若每个token使用int32(四字节)进行编码的话,就是560GB的数据。

训练模型参数量与训练数据量的统计

参数量数据量(tokens)
1T tokens约为 2000-4000 GB 数据(与token的编码字节数相关)
llama-7B1.0 T
-13B1.0 T
-33B1.4 T
-65B1.4 T
Llama2-7B2.0 T
-13B2.0 T
-34B2.0 T
-70B2.0 T
Bloom-176B1.6 T
LaMDA-137B1.56 T
GPT-3-175B0.3 T
Jurassic-178B0.3 T
Gopher-280B0.3 T
MT-NLG 530B0.27 T
Chinchilla-70B1.4 T

影响模型效果的因素有哪些?

虽然模型可以处理或已经接受过训练的token数量确实影响其性能,但其响应的一般性或详细程度更多地是其训练数据微调和所使用的解码策略的产物。

解码策略也起着重要的作用。修改模型输出层中使用的SoftMax函数的“temperature”可以使模型的输出更加多样化(更高的温度)或者更加确定(更低的温度)。在OpenAI 的API中设置temperature的值可以调整确定性和不同输出之间的平衡。

上下文窗口: 这是模型一次可以处理的token的最大数量。如果要求模型比上下文窗口生成更多的token,它将在块中这样做,这可能会失去块之间的一致性。

不同的模型支持不同的上下文token窗口,见下表

MODELDESCRIPTIONCONTEXT WINDOWTRAINING DATA
gpt-4-0125-previewNew GPT-4 Turbo The latest GPT-4 model intended to reduce cases of “laziness” where the model doesn’t complete a task. Returns a maximum of 4,096 output tokens. Learn more.128,000 tokensUp to Dec 2023
gpt-4Currently points to gpt-4-0613. See continuous model upgrades.8,192 tokensUp to Sep 2021
gpt-4-32kCurrently points to gpt-4-32k-0613. See continuous model upgrades. This model was never rolled out widely in favor of GPT-4 Turbo.32,768 tokensUp to Sep 2021
gpt-3.5-turbo-1106GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Returns a maximum of 4,096 output tokens. Learn more.16,385 tokensUp to Sep 2021
gpt-3.5-turbo-instructSimilar capabilities as GPT-3 era models. Compatible with legacy Completions endpoint and not Chat Completions.4,096 tokensUp to Sep 2021
gpt-3.5-turbo-16kLegacy Currently points to gpt-3.5-turbo-16k-0613.16,385 tokensUp to Sep 2021

等这样的大模型有一个最大token 数量限制,超过这个限制,它们就不能接受输入或生成输出
一般地, 可以尝试以下方法来解决token长度限制的问题:

  • 截断
  • 抽样
  • 重组
  • 编解码
  • 微调
    在这里插入图片描述

参考

LLM 中 Token 的通俗解释
解读大模型(LLM)的token
大模型参数量与训练数据量关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496901.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】DCL

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 1. 管理用户 在MySQL数据库中,DCL(数据控制语言)是用来管理用户和权限的语句集合。通过DCL语句,可以创建、修改、删…

C# 打包nuget包

类库等项目开发好之后打开csproj&#xff0c;添加如下代码 <PropertyGroup><!--<TargetFramework>netstandard2.0</TargetFramework>--><PackageId>Test01</PackageId><Version>1.0.0</Version><Authors>wjl</Autho…

安防视频监控EasyCVR平台使用GB28181协议接入时,如何正确配置端口?

国标GB28181协议EasyCVR安防视频监控平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流…

05-Linux部署MySQL

Linux部署MySQL 在今后的使用过程中&#xff0c;需要频繁使用Linux系统&#xff0c;所以在Linux上安装软是必不可少的操作 。 前置要求 需要学习前四章知识&#xff0c;初识Linux、Linux基础命令、Linux权限管理、Linux高阶技巧这4个章节。需要开启多态虚拟机&#xff0c;电…

10 Redis之SB整合Redis

7. SB整合Redis Spring Boot 中可以直接使用 Jedis 实现对 Redis 的操作&#xff0c;但一般不这样用&#xff0c;而是使用 Redis操作模板 RedisTemplate 类的实例来操作 Redis。 RedisTemplate 类是一个对 Redis 进行操作的模板类。该模板类中具有很多方法&#xff0c;这些方…

多微信管理利器,让你高效社交,轻松管理!

随着工作和生活中微信号增加&#xff0c;管理多个微信账号也成了一项挑战。面对多个微信号&#xff0c;要应对各种消息、好友请求、群发等多重任务&#xff0c;往往会让我们不知所措。 这时&#xff0c;一款强大的微信管理系统将成为你的利器&#xff0c;帮你高效社交&#xf…

Redis的高性能之道

前言&#xff1a;做码农这么多年&#xff0c;我也读过很多开源软件或者框架的源码&#xff0c;在我看来&#xff0c;Redis是我看过写得最优美、最像一件艺术品的软件&#xff0c;正如Redis之父自己说的那样&#xff0c;他宁愿以一个糟糕的艺术家身份而不是一名好程序员被别人记…

【C++STL】快速排序算法(sort)的原理与使用

一、sort算法原理 std::sort 是 C 标准库中提供的排序算法&#xff0c;它使用的是一种经典的排序算法——快速排序&#xff08;Quicksort&#xff09;或者是其变种。 快速排序是一种基于比较的排序算法&#xff0c;通过不断地选择一个基准值&#xff08;pivot&#xff09;&am…

超声波手持气象站的工作原理

TH-CSQ5A超声波手持气象站是一种利用超声波技术进行气象要素测量的便携式设备。它集成了多种气象传感器&#xff0c;包括温度传感器、湿度传感器、风速传感器、风向传感器等&#xff0c;能够同时测量和记录多个气象参数。 超声波手持气象站的工作原理基于超声波的传播特性。它…

全网最详细的Jmeter自动化测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、Jmeter的安装与部署 1.1 环境要求 jdk1.8、配置jdk环境变量&#xff08;JAVA_HOME:C:\Progr…

java工程师面试突击中华石杉,开发人员必学

如何高效的学习MyBatis源码呢&#xff1f; 市面上真正适合学习的MyBatis资料太少&#xff0c;有的书或资料虽然讲得比较深入&#xff0c;但是语言晦涩难懂&#xff0c;大多数人看完这些书基本都是从入门到放弃。学透MyBatis源码难道就真的就没有一种适合大多数同学的方法吗&am…

【笔记】深度学习入门:基于Python的理论与实现(六)

深度学习 深度学习是加深了层的深度神经网络 加深网络 本节我们将这些已经学过的技术汇总起来&#xff0c;创建一个深度网络&#xff0c;挑战 MNIST 数据集的手写数字识别 向更深的网络出发 基于33的小型滤波器的卷积层。激活函数是ReLU。全连接层的后面使用Dropout层。基…