在[Token 到底是个啥]?这篇文章中,介绍了token的概念。
我们可以这么认为,token是自然语言处理场景中(如文本生成、AI聊天),AI模型处理的最小单位。
在计算机视觉中,模型是以像素为单位,来处理图像像素之间的关系的,而语言模型则是以token为单位来理解token之间的关系。
下面我将通过一个小例子,来展示一下语言模型是如何将一段文本转换为token的,以及模型将文本转换为token之后是什么样子。
通过这个例子,希望你可以对模型处理 token 这个过程有一个感性的认识。
1、BERT 如何对文本进行转换
我们使用 BERT 这个模型来对文本进行处理。
BERT,全称是Bidirectional Encoder Representations from Transformers,是由Google 在2018年提出的自然语言处理模型。
当时,这个模型在很多 nlp 任务中都取得了非常好的性能,包括文本问答、自然语言推断和情感分析等,可以说一度SOTA了很长时间。
我们可以使用下面的代码,来调用bert模型对一段文本进行token化。
需要说明的是,首次运行上述代码时,如缺少相关的库,需要下载安装。
比如,使用 pip3 install transformers 下载安装 transformers库。
在运行下面的代码时,会从Hugging Face上下载bert的tokenizer等文件,建议先按照[三条命令快速配置 Hugging Face]的内容配置好相关的环境。
第一次下载可能时间会较长,等待即可。
下载完成后相关文件会放在系统缓存目录下,再一次运行时就不会再下载了,可直接使用。
# 从transformers库中导入BertTokenizer类
from transformers import BertTokenizer
# 初始化BertTokenizer,加载'bert-base-uncased'预训练模型。
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
# 定义一个示例文本字符串。
text = "I debug my code all day, and I am like a debugger."
# 使用tokenizer对文本进行编码,将文本分割成tokens,同时映射到相应的ID。
encoded_input = tokenizer(text)
# 使用tokenizer的convert_ids_to_tokens方法将tokens的ID转换回可读的tokens。
tokens = tokenizer.convert_ids_to_tokens(encoded_input['input_ids'])
# 打印出tokens及其对应的ID。
print("Tokens:", tokens)
print("Token IDs:", encoded_input['input_ids'])
上述代码中,我定义的文本为"I debug my code all day, and I am like a debugger."
2、Token解释
运行上述代码后,使用bert模型对该文本进行token化之后,输出的token为:
Tokens: ['[CLS]', 'i', 'de', '##bu', '##g', 'my', 'code', 'all', 'day', ',', 'and', 'i', 'am', 'like', 'a', 'de', '##bu', '##gger', '.', '[SEP]']
可以看到,模型将文本进行了拆分,同时 debug 这个单词拆分为了 de, bu, g 三个子词。
同时将debugger拆分为了de,bu, gger三个子词。
上面bert模型转换的token中,CLS (Classifier token)可以认为是输入开始位置的特殊标记符号。
SEP (Separator token)为分隔不同的句子或段落的特殊符号。
比如在处理两个句子时,SEP可以用来区分两个独立的句子,这样有助于模型正确区分出句子的边界,从而可以正确理解多个句子之间的语义关系。
## 符号可以认为是单词的子词分割符号。
BERT模型使用WordPiece算法对单词进行分割,它会将一些单词分解为比单词本身更小的单位。
比如上面把 debug 拆分为 de, ##bu, ##g三个部分,##表示该子词和前面的词为一个单词。
这些特殊符号我们不用太关注,在一些其他的算法或模型中输出的特殊符号可能不一样,但基本都是为了进行分割以及标注文本信息用的。
上述代码,除了输出token之外,还会输出每个token对应的ID。
Token IDs: [101, 1045, 2139, 8569, 2290, 2026, 3642, 2035, 2154, 1010, 1998, 1045, 2572, 2066, 1037, 2139, 8569, 13327, 1012, 102]
这个ID可以认为是每个 token 在模型词汇表中对应的唯一标识符,也可以认为是将文本转换为计算机能够识别和处理的数字形式的一种方式。
你可以修改上述代码中的文本text,看模型将其token化之后是什么样的。
------------------
不同的模型使用的token化算法不同。
大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓