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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 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

目录
相关文章
|
5天前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
25 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
20天前
|
存储 监控 物联网
计算机网络的应用
计算机网络已深入现代生活的多个方面,包括通信与交流(电子邮件、即时通讯、社交媒体)、媒体与娱乐(在线媒体、在线游戏)、商务与经济(电子商务、远程办公)、教育与学习(在线教育平台)、物联网与智能家居、远程服务(远程医疗、智能交通系统)及数据存储与处理(云计算、数据共享与分析)。这些应用极大地方便了人们的生活,促进了社会的发展。
42 2
计算机网络的应用
|
13天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
20天前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
44 8
|
18天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
29 2
|
19天前
|
机器学习/深度学习 人工智能 安全
探索人工智能在网络安全中的创新应用
探索人工智能在网络安全中的创新应用
|
2月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
327 2
|
14天前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
33 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
2月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
63 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
2月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
111 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力

热门文章

最新文章