【AI大模型】Transformers大模型库(三):特殊标记(special tokens)

2024-06-06 03:36

本文主要是介绍【AI大模型】Transformers大模型库(三):特殊标记(special tokens),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录​​​​​​​

一、引言 

二、特殊标记(special tokens)

2.1 概述

2.2 主要功能

2.3 代码示例

三、总结


一、引言 

 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。

🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。
🤗 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块均完全独立,方便修改和快速研究实验。
🤗 Transformers 支持三个最热门的深度学习库: Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。

本文重点介绍特殊标记(special tokens)。

二、特殊标记(special tokens)

2.1 概述

在Hugging Face的transformers库中,不同的模型预训练时可能会使用特定的特殊标记(special tokens),这些标记用于帮助模型理解输入序列的结构,尤其是在处理序列分类、问答、文本生成等任务时。以下是一些常见的特殊标记及其用途:

2.2 主要功能

  •   [CLS] (Classification Token),编码101:通常用于序列分类任务的开始。模型会基于这个标记的输出来进行分类决策。
  • [SEP] (Separator Token),编码102:用于分隔序列中的不同部分,比如在问答任务中分隔问题和文本,在多句子输入中分隔句子。对应编码102
  • [PAD] (Padding Token),编码0:用于填充,确保所有批次的输入序列长度一致。它在模型计算时通常会被忽略。对应编码
  • [MASK],编码103:主要用于BERT的掩码语言模型任务,模型会预测这个标记所遮掩的单词是什么。
  • [UNK] (Unknown Token),编码100:代表词汇表中未包含的单词。
  • [BOS] (Beginning of Sentence) 和 [EOS] (End of Sentence):在某些模型中使用,分别表示句子的开始和结束 。 

2.3 代码示例

使用这些特殊标记的例子,比如在BERT模型中准备输入: 

from transformers import BertTokenizertokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "Hello, I'm a text."
text_pair = "And this is another text."
inputs1 = tokenizer.encode_plus(text, text_pair, add_special_tokens=True)
print(inputs1) 
"""
{'input_ids': [101, 7592, 1010, 1045, 1005, 1049, 1037, 3793, 1012, 102, 1998, 2023, 2003, 2178, 3793, 1012, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
"""
print(tokenizer.decode(inputs1['input_ids']))
"""
[CLS] hello, i'm a text. [SEP] and this is another text. [SEP]
"""
inputs2 = tokenizer.encode(text,add_special_tokens=True)
print(inputs2)  
"""
[101, 7592, 1010, 1045, 1005, 1049, 1037, 3793, 1012, 102]
"""print(tokenizer.encode(['[UNK]','[SEP]','[PAD]', '[CLS]', '[MASK]','BOS','EOS']))#[101, 100, 102, 0, 101, 103, 100, 100, 102],去掉头部101和尾部102即为特殊标记的编码ID

将句子Hello, I'm a text进行encode时,会自动在开头和结尾加上[CLS]和[SEP],如果采用encode_plus对两个句子进行拼接,会加入[SEP]进行句子语义切割。告诉计算机这是两句话。

add_special_tokens=True为默认值,默认在encode编码的时候加入特殊标识,如果为False则可以不加入,但可能会丢失断句的信息。

三、总结

本文对使用transformers的特殊标记(special tokens)进行说明,特殊标记主要用于分割句子,在模型训练中引入“断句”、“开头”、“结尾”相关的信息。

如果您还有时间,可以看看我的其他文章:

《AI—工程篇》

AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效

AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署

AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署

AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署

AI智能体研发之路-工程篇(五):大模型推理服务框架LocalAI一键部署

《AI-模型篇》

AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战

AI智能体研发之路-模型篇(三):中文大模型开、闭源之争

AI智能体研发之路-模型篇(四):一文入门pytorch开发

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

AI智能体研发之路-模型篇(六):【机器学习】基于tensorflow实现你的第一个DNN网络

AI智能体研发之路-模型篇(七):【机器学习】基于YOLOv10实现你的第一个视觉AI大模型

AI智能体研发之路-模型篇(八):【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战

这篇关于【AI大模型】Transformers大模型库(三):特殊标记(special tokens)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034979

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20