【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 词表文件:在训练模型时,将该文件当作一个映射表,把输入的单词转换成具体数字。(文本方式保存)

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


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


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


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


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

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


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

以下为2021版原文~~~~

f52676cc83844f3d8a8e34e969615d4a.png


如果想进一步深入研究,则需要了解Transformers库中更底层的实现,学会对具体的BERTology系列模型进行单独加载和使用。


1 Transformers库的文件结构


1.1 详解Transformers库中的预训练模型


在Transformers库中,预训练模型文件主要有3种,它们的具体作用如下:


1.词表文件:在训练模型时,将该文件当作一个映射表,把输入的单词转换成具体数字。(文本方式保存)


2.配置文件:存放模型的超参数,将源码中的模型类根据配置文件的超参数进行实例化后生成可用的模型。(文本方式保存)


3.权重文件:对应可用模型在内存中各个变量的值,待模型训练结束之后,将这些值保存起来。加载模型权重的过程,就是这些值“覆盖”到内存中的模型变量里,使整个模型恢复到训练后的状态。(二进制方式保存)


1.2 BERT模型的关联文件图


图3-18(a)BERT模型的基本预训练模型相关的词表文件,词表文件中是一个个具体的单词,每个单词的序号就是其对应的索引值。


图3-18(b)BERT模型的基本预训练模型相关的配置文件,配置文件则显示了其模型中的相关参数,其中部分内容如下。架构名称:BertForMaskedLM。注意力层中Dropout的丢弃率:0.1。隐藏层的激活函数:GEL∪激活函数。隐藏层中Dropout的丢弃率:0.1。


757b3ac0096f4692a6ddadd40f954b5b.png


1.3 Transformers库的文件目录


# 目录地址
\Anaconda3\envs\python38\Lib\site-packages\transformers


1.3.1 配置代码文件


以confiquraton开头的文件,是BERTOOQy系列模型的配置代码文件。


87d78bb5d8f4488d9442474211ce4f1a.png


1.3.2 模型代码文件


以modeling开头的文件,是BERTology系列模型的模型代码文件


50d10cc8170d40949756157d390303e9.png


1.3.3 词表代码文件


以tokenization开头的文件,是BERToogy系列模型的词表代码文件。


6e7f8671b0de493983a5a2c7dc8dad15.png


1.4 每个模型都对应以上三个文件


每个模型都对应3个代码文件,存放着关联文件的下载地址。


1.4.1 举例:BERT模型对应文件列表:


配置代码文件:configuration_bert.py。

模型代码文件:modeling_bert,py。

词表代码文件:tokenization_bert.py。


1.5 加载预训练模型


训练模型的主要部分就是模型代码文件、配置代码文件和词表代码文件这3个代码文件。对于这3个代码文件,在Transformers库里都有对应的类进行操作。


配置类(Configuration Classes):是模型的相关参数,在配置代码文件中定义。


模型类(Model Classes):是模型的网络结构,在模型代码文件中定义。


词表类(TOkenizer Classes):用于输入文本的词表预处理,在词表代码文件定义。


这3个类都有from_pretrained方法,


1.5.1 调用函数简述


from_pretrained():可以加已经预训练好的模型或者参数。


save_pretraining():将模型中的提示配置文件、权重文件、词表文件保存在本地,以便可以使用from_pretraining方法对它们进行新加载。


1.5.2 自动加载


在使用时,通过向from_pretrained方法中传入指定模型的版本名称,进行自动下载,并加载到内存中。


from transformers import BertTokenizer,BertForMaskedLM
# 使用bert-base-uncased版本的BERT预训练模型,其中BertTokenizer类用于加载词表,BertForMaskedLM类会自动加载配置文件和模型文件。
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')#加载词表
model = BertForMaskedLM.frompretrained('bert-base-uncased')#加载模型
# 该代码运行后,系统会自动从指定网站加载对应的关联文件。这些文件默认会放在系统的用户目录中


1.5.3 手动加载


在源码中,找到对应的下载地址,手动加载后,再用frompretrained方法将其载入。


from transformers import BertTokenizer,BertForMaskeduM
#加载词表
tokenizer=BertTokenizer.frompretrained(r'./bert-base-uncased/bert-base-uncased-vocab.txt')
#加载模型
model=BertForMaskedLM.frompretrained('./bert-base-uncased/bert-base-uncased-pytorch_model.bin',conig='./bert-base-uncased/bert-base-uncased-conig.json')
# 手动加载与自动加载所使用的接口是一样的,手动加载需要指定加载文件的具体路径,而且在使用BertForMaskedLM类进行加载时,还需要指定配置文件的路径。


2 查找Transformers库中可以使用的模型


通过模型代码文件的命名,可以看到Transformers库中能够使用的模型。但这并不是具体的类名,想要找到具体的类名,可以采用以下3种方式:


(1)通过帮助文件查找有关预训练模型的介绍。

(2)在Transformers库的__init__.py文件中查找预训练模型。【相对费劲,但更为准确】

(3)使用代码方式输出Transformers库中的宏定义。


2.1 在Transformers库的__init__.py文件中查找预训练模型。【相对费劲,但更为准确】


2.2 使用代码方式输出Transformers库中的宏定义


from transformers import BLENDERBOT_SMALL_PRETRAINED_MODEL_ARCHIVE_LIST
print("输出全部模型:",BLENDERBOT_SMALL_PRETRAINED_MODEL_ARCHIVE_LIST)
# ['facebook/blenderbot_small-90M']


目录
相关文章
|
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
|
29天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
80 2
|
29天前
|
运维 网络协议 算法
7 层 OSI 参考模型:详解网络通信的层次结构
7 层 OSI 参考模型:详解网络通信的层次结构
73 1
|
2月前
|
网络协议 前端开发 Java
网络协议与IO模型
网络协议与IO模型
101 4
网络协议与IO模型
|
2月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
92 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
81 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
46 0
|
2月前
|
存储 分布式计算 负载均衡

热门文章

最新文章