【AI大模型】Transformers大模型库(四):AutoTokenizer

news2025/7/5 15:13:31

目录​​​​​​​

一、引言 

二、自动分词器(AutoTokenizer)

2.1 概述

2.2 主要特点

2.3 代码示例

三、总结


一、引言 

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

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

本文重点介绍自动分词器(AutoTokenizer)。

二、自动分词器(AutoTokenizer)

2.1 概述

AutoTokenizer是Hugging Face transformers库中的一个非常实用的类,它属于自动工厂模式的一部分。这个设计允许开发者通过一个统一的接口来加载任何预训练模型对应的分词器(tokenizer),而无需直接指定分词器的精确类型。这意味着,当你知道模型的名称时,你可以使用AutoTokenizer自动获取与该模型匹配的分词器,而不需要了解分词器的具体实现细节。

2.2 主要特点

  •  模型兼容性:通过模型名称自动匹配合适的分词器,支持BERT、RoBERTa、Albert、DistilBERT、T5等众多模型。
  •  便捷性:简化了代码,无需根据模型类型手动选择分词器类。
  •  灵活性:对于新发布的模型,只要其分词器在Hugging Face模型库中可用,AutoTokenizer.from_pretrained就能加载。

2.3 代码示例

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

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"#使用国内hf镜像
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"

from transformers import AutoTokenizer

# 加载BERT的分词器
tokenizer = AutoTokenizer.from_pretrained('bert-base-chinese')

# 使用分词器处理文本
text = "你好,我在北京的互联网公司工作"
tokenized_text = tokenizer.tokenize(text)
print(tokenized_text)
"""
['你', '好', ',', '我', '在', '北', '京', '的', '互', '联', '网', '公', '司', '工', '作']
"""

# 或者直接编码为模型输入的格式
encoded_text = tokenizer.encode(text)
print(encoded_text)
"""
[101, 872, 1962, 8024, 2769, 1762, 1266, 776, 4638, 757, 5468, 5381, 1062, 1385, 2339, 868, 102]
"""

# 对于更复杂的输入准备,可以使用encode_plus
encoded_plus = tokenizer.encode_plus(text, add_special_tokens=True)
print(encoded_plus)
"""
{
    'input_ids': [101, 872, 1962, 8024, 2769, 1762, 1266, 776, 4638, 757, 5468, 5381, 1062, 1385, 2339, 868, 102], 
    'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}
"""

参数说明 

  • from_pretrained: 这不是一个方法,而是用来创建AutoTokenizer实例的类方法。它根据提供的模型名称或路径加载对应的分词器。
  • tokenize: 将文本字符串转换为词元(tokens)的列表。
  • encode: 将文本转换为模型输入的数字序列(token IDs)。
  • encode_plus: 除了生成token IDs,还提供额外的数据结构,如attention_mask、token_type_ids等,适合复杂输入准备。以及提供句子编码拼接功能。
  • batch_encode_plus: 对一批文本进行编码,可以自动处理填充和截断,以确保所有输入具有相同的长度。
  • decode: 将token IDs转换回文本字符串。
  • save_pretrained: 保存分词器到本地目录,以便之后使用。
  • 特定于模型的方法: 不同的分词器可能有特定的方法,如处理特定的编码规则、特殊标记等,但这些不是所有分词器都通用的。

这些方法的具体行为和可用参数可能会根据加载的分词器类型(如BertTokenizer、RobertaTokenizer等)有所不同

三、总结

本文对使用transformers的AutoTokenizer进行介绍,他最大的特点是允许开发者通过一个统一的接口来加载任何预训练模型对应的分词器(tokenizer),而无需直接指定分词器的精确类型。这意味着,当知道模型的名称时,可以使用AutoTokenizer自动获取与该模型匹配的分词器。

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

《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大模型训练与推理实战

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark SQL - 操作数据帧

本教程将通过一个具体的案例来演示如何在Spark SQL中操作数据帧。我们将从获取学生数据帧开始,包括两种方法:一是由数据集转换而来,二是直接读取文件生成数据帧。然后,我们将对数据帧进行各种操作,如投影、过滤、统计和…

数电实验中设计数字钟所用到的代码详细版(Verilog语言来实现)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、模6计数器的代码:二、模10计数器的代码三、模60计数器的代码四、模24计数器的代码五、显示控制电路模块代码六、1khz和250khz时钟输出实现的代码…

如何充分利用代理IP扩大网络接触面

目录 前言 第一部分:什么是代理IP? 第二部分:如何获取代理IP? 1. IP质量 2. 匿名性 3. 限制 第三部分:如何使用代理IP? 第四部分:如何充分利用代理IP? 总结: 前…

CentOS 9安装Kubernetes(k8s)集群

前言 1、版本说明 系统版本:CentOS 9 k8s版本:v1.29.5 docker版本:26.1.3 harbor:v2.9.4 2、提前准备好1台虚拟机,可以参考博客:Vmware 17安装 CentOS9 3、虚拟机提前安装好docker,参考博客&a…

Python 实现乘数加密法

乘数加密是简单代替密码的一种。乘数加密法脱胎于凯撒加密法,加密和解密符号设计把他们转换成数字,加上或者减去密钥,然后把新的数字转换回符号,当我们把加减密钥变成乘以密钥,就是乘法加密法。有关凯撒加密法可以看之前的文章《Python实现凯撒加解密》。 加密过程 乘数加…

二叉树练习题(2024/6/5)

1翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]…

电子电气架构 —— 刷写模式:并行刷写

电子电气架构 —— 刷写模式:并行刷写 我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此…

C++ : 模板初阶

标题:C : 模板初阶 水墨不写bug 正文开始: C语言的问题 : 写不完的swap函数 在学习C语言时,我们有一个经常使用的函数swap函数,它可以将两个对象的值交换。 我们通常这样实现它: void swap(int t1,int t2)…

【网络协议 | HTTP】HTTP总结与全梳理(一) —— HTTP协议超详细教程

🔥博客简介:开了几个专栏,针对 Linux 和 rtos 系统,嵌入式开发和音视频开发,结合多年工作经验,跟大家分享交流嵌入式软硬件技术、音视频技术的干货。   ✍️系列专栏:C/C、Linux、rtos、嵌入式…

【微信小程序】模板语法

数据绑定 对应页面的 js 文件中 定义数据到 data 中: 在页面中使用 {{}} 语法直接使用: 事件绑定 事件触发 常用事件: 事件对象的属性列表(事件回调触发,会收到一个事件对象 event,它的详细属性如下&…

28 hive安装-本地模式

1.安装mysql(参考文章:centos7.8安装Mysql8.4-CSDN博客) 2.将mysql驱动拷贝到/opt/module/hive/lib目录下 (直接windows通过finalShell上传) 3./opt/module/hive/conf目录下新建hive-site.xml文件,进行配置…

InvokeAI 最新版安装指南

由于stable diffusion webui不太好安装,或者你使用一些SD整合包,可免除复杂安装,但你认为SD的操作界面太复杂,所以今天介绍一款支持新手一键安装的Stable Diffusion工具包InvokeAI。 1.什么是InvokeAI InvokeAI 是一个创新的开源…

点量3D实时云渲染平台:三步轻松实现云流化

3D实时云渲染技术通过在云端执行3D渲染任务,并将渲染结果实时传送到用户端,它不仅降低了用户的硬件要求,还提高了数据处理的安全性和效率,为用户提供了高效的体验。 可以通过下载“点量云流服务单机版”进行低延时、高画质、沉浸…

vivado BEL

描述 通常,BEL或基本元素对应于设计的网表视图中的叶单元。 BEL是目标Xilinx FPGA上的设备对象,用于放置或映射基本网表 触发器、LUT和进位逻辑等对象。 BEL在SITE对象(如SLICE和IO块)中的设备上分组在一起 (IOB&#…

kafka-消费者服务搭建配置简单消费(SpringBoot整合Kafka)

文章目录 1、使用efak 创建 主题 my_topic1 并建立6个分区并给每个分区建立3个副本2、创建生产者发送消息3、application.yml配置4、创建消费者监听器5、创建SpringBoot启动类6、屏蔽 kafka debug 日志 logback.xml7、引入spring-kafka依赖 1、使用efak 创建 主题 my_topic1 并…

VS2022,lib调用dll工程的一个函数

lib工程本身是一个静态库工程,没有链接器设置。然而,我们依然可以在lib工程中调用DLL工程中的函数,只需要确保头文件正确导入,并在最终使用lib的可执行文件项目中正确链接DLL的.lib文件。下面是一个详细的步骤说明: 假…

做自媒体素材哪里找?做自媒体必备的几个高质量素材网站分享

在自媒体的世界里,内容是王道。无论是视频还是文章,优秀的自媒体作品都需要有力的内容和高质量的素材作支撑。今天,我为大家整理了一些优质的素材网站,帮助每一位自媒体创作者,无论新手还是老手,都能找到适…

Vuforia AR篇(七)— 二维码识别

目录 前言一、什么是Barcode ?二、使用步骤三、点击二维码显示信息四、效果 前言 在数字化时代,条形码和二维码已成为连接现实世界与数字信息的重要桥梁。Vuforia作为领先的AR开发平台,提供了Barcode Scanner功能,使得在Unity中实…

正则表达式运用

已经写了表达式,下一步就是匹配字符串得到结果 使用matcher的源码(匹配)普通方法,find(寻找)合适的代码,看字符串是否匹配成功 是否可以匹配上 匹配么,匹配就留下,fin…

DBeaver连接Elasticsearch

一、下载DBeaver 二、连接: 1、一定要选择开源的 Open Distro Elasticsearch 2、填写地址: 3、选择“URL”,将https改为http 否则会报SSL错误 4、测试连接