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

2024-06-05 22:44

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

目录​​​​​​​

一、引言 

二、自动分词器(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大模型训练与推理实战

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



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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

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

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