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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 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月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
504 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
4月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
5月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
214 0
中国联通网络资源湖仓一体应用实践
|
4月前
|
机器学习/深度学习 算法 PyTorch
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
深度学习近年来在多个领域取得了显著进展,但其核心组件——人工神经元和反向传播算法自提出以来鲜有根本性突破。穿孔反向传播(Perforated Backpropagation)技术通过引入“树突”机制,模仿生物神经元的计算能力,实现了对传统神经元的增强。该技术利用基于协方差的损失函数训练树突节点,使其能够识别神经元分类中的异常模式,从而提升整体网络性能。实验表明,该方法不仅可提高模型精度(如BERT模型准确率提升3%-17%),还能实现高效模型压缩(参数减少44%而无性能损失)。这一革新为深度学习的基础构建模块带来了新的可能性,尤其适用于边缘设备和大规模模型优化场景。
135 16
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
|
4月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
125 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
3月前
|
监控 安全 Linux
AWK在网络安全中的高效应用:从日志分析到威胁狩猎
本文深入探讨AWK在网络安全中的高效应用,涵盖日志分析、威胁狩猎及应急响应等场景。通过实战技巧,助力安全工程师将日志分析效率提升3倍以上,构建轻量级监控方案。文章详解AWK核心语法与网络安全专用技巧,如时间范围分析、多条件过滤和数据脱敏,并提供性能优化与工具集成方案。掌握AWK,让安全工作事半功倍!
85 0
|
3月前
|
人工智能 安全 网络安全
网络安全厂商F5推出AI Gateway,化解大模型应用风险
网络安全厂商F5推出AI Gateway,化解大模型应用风险
123 0
|
4月前
|
机器学习/深度学习 PyTorch API
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
本文深入探讨神经网络模型量化技术,重点讲解训练后量化(PTQ)与量化感知训练(QAT)两种主流方法。PTQ通过校准数据集确定量化参数,快速实现模型压缩,但精度损失较大;QAT在训练中引入伪量化操作,使模型适应低精度环境,显著提升量化后性能。文章结合PyTorch实现细节,介绍Eager模式、FX图模式及PyTorch 2导出量化等工具,并分享大语言模型Int4/Int8混合精度实践。最后总结量化最佳策略,包括逐通道量化、混合精度设置及目标硬件适配,助力高效部署深度学习模型。
613 21
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
|
27天前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
106 9
|
6月前
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
427 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体

热门文章

最新文章

推荐镜像

更多