【Pytorch神经网络理论篇】 38 Transformers:安装说明+应用结构+AutoModel类

简介: transfomersF中包括自然语言理解和自然语言生成两大类任务,提供了先进的通用架构,其中有超2个预训练模型(细分为100多种语言的版本)。

同学你好!本文章于2021年末编写,获得广泛的好评!


故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345

欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~


463cbbc9d83a48a0a26602446816b2d4.png


Transfomers库是一个支持TensorFiow2.×和PyTorch的NLP库。它将BERTology系列的所有模型融合到一起,并提供统一的使用接口和预训练模型,为人们使用BERTology系列模型提供方便。


1 Transformers库定义


transfomersF中包括自然语言理解和自然语言生成两大类任务,提供了先进的通用架构,其中有超2个预训练模型(细分为100多种语言的版本)。


202010200844095.png


1.1 Transformers 快速完成的任务


1.1.1 通过执行脚本,使用训练好的SOTA模型,完成NLP任务


Transformers库附带一些脚本和在基准NLP数据集上训练好的SOTA模型。其中,基准NLP数据集包括SQuAD2.0和GLUE数据集。不需要训练,直接将这些训练好的SOTA模型运用到实际的NLP任务中,就可以取得很好的效果。


Tip:SOTA(Siate-Of-The-Art)是指目前应用于某项任务中“最好的”算法或技术。


1.1.2 调用API实现NLP任务的预处理与微调


Transformers库提供了一个简单的API,它用于执行这些模型所需的所有预处理和微调步骤。


在预处理方面,通过使用Transformers库的API,可以实现对文本数据集的特征提取,并能够使用自己搭建的模型对提取后的特征进行二次处理,完成各种定制任务。


在微调方面,通过使用Transformers库的APl,可以对特定的文本数据集进行二次训练,使模型可以在Transformers库中已预训练的模型的基础之上,通过少量训练来实现特定数据集的推理任务。


1.1.3 方便导入RensorFlow模型


Transfomers库提供了转换接口,可以轻松将TensorFlow训练的checkpoints模型导入PyTorch并使用.


1.1.4 转换为端计算模型


Transformers库还有一个配套的工具swift-coreml-transfomers,可以将使用TensorFlow 2.X或Pytorch训练好的Transformer模型转换成能够在iOS操作系统下使用的端计算模型。


1.2 Transformers库的安装方法


1.2.1 使用conda命令进行安装(版本相对滞后)


conda install transformers


使用这种方式安装的Transformers库与Anaconda软件包的兼容性更好,但所安装的Transformers库版本会相对滞后。


1.2.2 使用pip命令进行安装(版本最新)


pip install transformers


使用这种方式可以将Transformers库发布的最新版本安装到本机。


1.3 查看Transformers库的版本信息


Transfomers库会随着当前NLP领域中主流的技术发展而实时更新。目前,Transfomers库的更新速度非常快,可以通过Transfomers库安装路径下的transfomers\__init__.py文件找到当前安装的版本信息。


5e27576eae3345ea981eed288e46feea.png


1.4 Transformers库的三层结构


a41bbabf468f4dff8373dcdbbecc93c7.png


  • 管道方式:高度集成的极简使用方式,只需要几行代码即可实现一个NLP任务。


  • 自动模型方式:可以将任意的BERTology系列模型载入并使用。


  • 具体模型方式:在使用时,需要明确指定具体的模型,并按照每个BERTology系列模型中的特定参数进行调用,该方式相对复杂,但具有较高的灵活度。


2 Transformers库中的AutoModel类


为了方便使用Transformers库,在Transformers库中,提供了一个AutoModel该类用来管理Transformers库中处理相同NLP任务的底层具体模型,为上层应用管道方提供了统一的接口。


通过AutoModel类,可以实现对BERTology系列模型中的任意一个模型载入并应用。


2.1 AutoModel类的子类


AutoModel类与BERTOlogy系列模型中的具体模型是一对多的关系。


在Transformers库的modeling_auto.Py源码文件中可以找到每种AutoModel类所管理的具体BERTology系列模型。


Anaconda3\envs\python38\Lib\site-packages\transformers\models\auto


MODEL_WITH_LM_HEAD_MAPPING对象代表AutoMcdeWthLMHead类与BERTology系列模型中的具体模型之间的映射关系。


在MODEL_WITHLM_HEAD_MAPPING 对象中,所列出的每个元素都可以实现AutoModeWithLMHead类所完成的完形填空任务.


a896a83152d444c0b01ad4bdb075d2ec.png


2.1.1  AutoModel


基本模型的载入类,适用于Transformers库中的任何模型,也可以用于特征提取任务.


2.1.2 AutoModelForPreTraining


特征提取任务的模型载入类,适用于Transfomes库中所有的特征提取模型。


2.1.3 AutoModelForSequenceClassification


文本分类任务的模型载入类,适用于Transfomers库中所有的文本分类模型。


2.1.4 AutoModelForQuestionAnswering


阅读理解任务的模型载入类,适用于Trans-formers库中所有的阅读理解模型。


2.1.5 AutoModelWithLMHead


完形填空任务的模型载入类,适用于Transformers库中所有的遮蔽语言模型。


2.1.6 AutoModelForTokenClassification


实体词识别任务的模型载入类,适用于Transformers库中所有的实体词识别模型。


2.2 AutoModel类的模型加载机制


MODEL_WITH_LM_HEAD_MAPPING对象中,每个元素由两部分组成:具体模型的配置文件和具体模型的实现类。每一个具体模型的实现类会通过不同的数据集,被训练成多套预训练模型文件。


每套预训练模型文件都由3或4个子文件组成:词表文件、词表扩展文件(可选)、配置文件及权重文件。它们共用一个统一的字符串标识。


在使用自动加载方式调用模型时,系统会根据统一的预训练模型标识字符串,找到其对应的预训练模型文件,并通过网络进行下载,然后载入内存。


2.2.2 完形填空模型的调用过程如图所示。


773b657b61174b7c8ace2293e7c18d4c.png


每一个AutoModel类所对应的具体BERTology系列模型都是可以互相替换的。例如,在注意SUPPORTED_TASKS对象里,完形填空任务所对应的模型标识字符串为“distilroberta-base“,即默认加载RobertaForMaskedLM类。


3 Transformers库中的预训练模型


Transformers库中集成了非常多的预训练模型,方便用户在其基础上进行微调,这些模型统一放在model_cards分支下。

更多模型

https://huggingface.co/models

目录
相关文章
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
12月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
497 6
|
10月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
439 1
|
10月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
407 1
|
11月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
848 11
|
11月前
|
机器学习/深度学习 移动开发 编解码
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
260 1
|
11月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
285 1
|
11月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
438 0
|
12月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
596 0
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
532 17

热门文章

最新文章

推荐镜像

更多