5分钟彻底搞懂什么是token

大家好啊,我是董董灿。

几年前在一次工作中,第一次接触到自然语言处理模型 BERT。

当时在评估这个模型的性能时,领导说这个模型的性能需要达到了 200 token 每秒,虽然知道这是一个性能指标,但是对 token 这个概念却不是很清晰。

因为当时接触视觉模型多一些,在视觉模型的性能评估中,有一个关键指标叫做 fps,通俗理解就是一秒钟可以处理的图片数。

fps 数值越大,说明模型吞吐性能越好。那么 token 每秒又是什么呢?要搞清楚这个,就得先来了解一下什么是 token。

1、什么是token

在计算机领域中,token 通常是指一串字符或符号,比如微信公众平台的密钥,就被称作一个 token,其实就是一长串的字符。

而在人工智能领域,尤其是自然语言处理(Natural Language Processing, NLP)中, "token" 指的是处理文本的最小单元或基本元素

它可以是一个单词、一个词组、一个标点符号、一个子词或者一个字符。

目前很多大模型无论展示能力,还是收费定价,都是以 token 为单位,如 OpenAI 的收费标准为:GPT-4,1k 个 token 收费 0.01刀。

图片

那么如何理解 token 呢?

假设要让一个 AI 模型识别下面的一句话:"I love natural language processing!" 。

模型并不是直接认识这句话是什么意思,而是需要先将这句话拆解成一个个的 token  序列。

比如这个句子可以分解成以下的 tokens:

  • "I"

  • "love"

  • "natural"

  • "language"

  • "processing"

  • "!"

最后的标点符号同样是一个 token,这样模型看到的就是基本的 token 单元,这样有助于 AI 模型理解这个句子的结构和含义。

2、如何拆分 token 呢?

在 NLP 任务中,处理文本之前,需要先将文本进行 tokenization,也就是将文本 token 化,然后再对这些 tokens 进行操作。

目前有很多算法可以完成这个 tokenization 的过程,这里先不展开。

看到这里你可能会问,一个 token不就是一个单词吗?

其实不是这样的,就像我们上面说的,一个 token 可以是一个单词,也可以是一个词组或者一些子词。

比如在 tokenization 阶段,可能会把 "New York City" 这三个单词当做一个 token,因为这三个单词合在一起具有特定的意思,叫做纽约市。

还可能把 “debug” 这个单词看作两个 token,分别为"de" 和 "bug",这样模型可能知道 “de” 前缀代表“减少”的意思。

如果再遇到诸如 “devalue ”时,就会把它直接分为两个token,分别是 “de”和 “value”,并且可以知道 devalue 代表"减少价值"的意思。

这样的 token 就属于单词中的子词,这样做有很多好处,其中一个好处便是模型不需要记住太多的词。

否则,模型可能需要记住"bug"、"debug","value","devalue"四个token.

而一旦将词分成子词,模型只需要记住"bug"、"value" 和 "de" 这三个 token 即可,而且还可以扩展识别出 "decrease "的意思。

看到这理解了吧,一个 token 可能会代表是一个单词,也可能会是一个词组,或者字符和标点符号。

3、一个有趣的测试

其实有个很简单的方法可以测试一下模型在处理文本时,是否是按照 token 为最小单位来处理的。

我们利用一个大模型,比如 chatGPT 3.5,让他来对一小段文本进行反转操作。

图片

可以看到,句子中的“一个”反转之后仍然是“一个”,而不是"个一"。

这可能就是因为在模型处理时,“一个” 被当做了一个 token 来对待,而这又是一个基本单元,无法再进一步拆分完成反转。

而如果使用 GPT-4 来进行同样的实验,可以看到它已经把这个问题修复了,这是因为 GPT-4 中大幅更新了逻辑推理能力,在更复杂的场景下它甚至会自己边写代码来完成复杂的逻辑的推理。

图片

如果你有chatGPT 的使用环境,可以测试一下看看它是否可以将句子反转过来。

总的来说,token 可以理解为自然语言模型处理文本的最小单位。

它不一定是一个单词,可能是一个词组,也可能是一些前缀如“de”,也可能是一些标点(比如感叹号可能代表更加强烈的感情)等。

知道了 token 是什么,那么 token / s 的意思就很简单了,这个单位就代表了模型一秒钟可以处理的 token 的个数。

这个数字越大,说明模型处理文本的速度更快,无论是识别文本,还是输出文本,用户用起来,也就更加流畅。


写算法文章很久了,不少同学看了我的文章后,加我一起探讨如何快速学习算法,于是我最近开发一个从零入门计算机视觉的专栏,可以查看这里了解详情:计算机视觉从入门到调优。

目前已有将近 120 人加入一起学习啦,大家一起在探讨如何更加快速有效的入门学习,如果你感兴趣,欢迎一起加入呀。

写文不易,点个赞呗~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聚道云软件连接器助力某餐饮管理有限公司实现人力资源信息自动化

客户介绍: 某餐饮管理有限公司是一家集餐饮连锁、餐饮管理、餐饮咨询等业务于一体的综合性餐饮企业。公司业务遍布全国多个城市,拥有众多员工。 添加图片注释,不超过 140 字(可选) 客户痛点: 员工入离职…

怎样把照片不想要的部分涂抹掉?安利下面这三款软件给你

在元旦假期的旅行中,我带着相机,用镜头记录下了每一个美好时刻。我爬上了高山之巅,俯瞰群山连绵起伏;我漫步在海滩上,感受海风轻拂脸颊;我甚至在城市的角落里,发现了那些平日里未曾留意的小确幸…

Unity 踩坑记录 AnyState 切换动画执行两次

AnySate 切换动画 Can Transition To Self 将这个勾选去掉!!!

树定义及遍历

1、定义树 可以参考链表,链表遍历不方便,如果单链表有多个next指针,则就形成了树。 Java: public class TreeNode {int val;TreeNode left, right;TreeNode(int val) { this.val val; this.left null;this.right null;} } Python&#…

【上海】买套二手房需要多少钱?

上次我们看了苏州的二手房,这次我们一起来看下上海的二手房价格如何。 数据来源 数据来自贝壳二手房,每个区最多获取了3千条房源信息,数据共计4万条左右 对数据感兴趣的朋友,公众号后台发送上海二手房获取数据文件 各区房源单价…

Linux中快速搭建RocketMQ测试环境

必要的文件下载 为什么选择RocketMQ | RocketMQ x86_64位JDK下载0jdk/8u391-b13 rocketmq二进制包下载-rocketmq-all-5.1.4-bin-release.zip 编译好的直接可用的dashboard【rocketmq-dashboard-1.0.0.jar】请在文章顶部下载 dashboard配套的配置文件【application.propert…

shell解释和权限概念

shell问题解释 问题1: 为什么要使用shell外壳? 因为用户不能直接访问操作系统 问题2: shell外壳是什么? shell外壳的工作是将使用者的命令翻译给核心(kernel)处理。 同时将处理结果反馈给使用者。 问…

mysql之导入导出远程备份

文章目录 一、navicat导入导出二、mysqldump命令导入导出2.1导出2.1.1 导出表数据和表结构2.1.2 只导出表结构() 2.2 导入(使用mysqldump导入 包含t _log表的整个数据库 共耗时 20s;)方法一:方法二: 三、LOAD DATA INFILE命令导入导出(只针对单表)设置导…

Linux编译器

目录 Linux编译器 程序编译的步骤 gcc编译器完成C语言程序的编译 预处理 编译 汇编 链接 上一期我们学习了Linux中的vim编辑器,其实本质上vim编辑器就是写代码的一个工具。上期内容我们也已经说过,一份合格的代码需要进行编写,编译&am…

优化改进YOLOv8算法之AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv

目录 1 AKConv原理 1.1 Define the initial sampling position 1.2 Alterable convolutional operation 1.3 Extended AKConv 2 YOLOv8中加入AKConv模块 2.1 AKConv.py文件配置 2.2 task.py配置 2.3 创建添加优化点模块的yolov8-AKConv.yaml 2.4 训练 1 AKConv原理 …

什么事“网络水军”?他们的违法活动主要有四种形式

我国治理网络水军,包括造谣引流、舆情敲诈、刷量控评、有偿删帖等各类“网络水军”等违法犯罪活动已经许久。 日前,官方召开新闻发布会,公布了相关的一些案件进程,今年已累计侦办相关案件339起,超过历年的全年侦办案件…

国产系统-银河麒麟桌面版安装wps

0安装版本 系统版本 版本名称:银河麒麟桌面版操作系统V10(SP1) 软件版本 wps个人版2019 1双击安装 1.1卸载自带wps 为什么要卸载没有序列号,授权过期,不是免费的,通过先安装/在升级个人版跳过输入序列号问题等等原因 1.1.1当前自带的wps版本 1.1.2卸载 不卸载无法安装在…

rime中州韵小狼毫 随机数 随机码 电脑信息 滤镜

在输入法中支持生成GUID,或者随机数,随机字符,获取自身电脑信息,这将是一个非常酷的功能。 先睹为快 本文所分享滤镜,主要用于生成一些动态的信息词条,效果如下👇: GUID.lua GU…

c JPEG编码,但有错误

#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h> //v4l2 头文件 #include <strin…

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步&#xff1a;安装 SQL Server 数据库 这是一个很详细的安装教程&#xff0c;可以参考一下 安装SQL Server详细教程 需要注意&#xff1a;安装实例时&#xff0c;建议在‘身份验证模式’直接选择“混合模式”…

MySQL决战:MySQL数据导入导出

目录 前言 一.navact数据导入导出&#xff08;第三方工具&#xff09; 1.导入数据 2.数据导出 二. mysqldump命令导入导出数据 1.mysqldump介绍 2.数据导出 3.数据导入 三.load data file进行数据导入导出&#xff08;只限于单表&#xff09; 1.数据导出 增加导出权…

springboot学生成绩管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

市场复盘总结 20240109

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 66% 二进三&#xff1a; 进级率低 最常用的二种方法&#xff1a; 方法一&#x…

洛谷 P1217 [USACO1.5] 回文质数 Prime Palindromes 刷题笔记

P1217 [USACO1.5] 回文质数 Prime Palindromes - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 直接枚举 减枝优化判断 优化1 只有偶数才会是质数 优化2 回文数的判断次数要优于检查素数 先判断是否为回文数再检查是否为质数 if( hw(i)&&isprime(i)) 这里…

【自学笔记】01Java基础-07面向对象基础-03常量、枚举类、抽象类、多态详解

记录java基础学习中有关常量、枚举类、抽象类和多态的内容。 1 常量 什么是常量&#xff1f; 常量是使用了public static final修饰的成员变量&#xff0c;必须有初始化值&#xff0c;而且执行的过程中其值不能被改变。 常量名的命名规范&#xff1a;英文单词全部大写&#x…