当前位置:   article > 正文

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

transformers安装

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

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

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文件找到当前安装的版本信息。

1.4 Transformers库的三层结构


管道方式:高度集成的极简使用方式,只需要几行代码即可实现一个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类所完成的完形填空任务.

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 完形填空模型的调用过程如图所示。


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

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

更多模型
https://huggingface.co/models

卓越扩展性:能够支持训练拥有数千亿参数的模型,并在多节点多 GPU 系统上展现出卓越的扩展性。因此,即使是一个拥有 130 亿参数的模型,也只需 1.25 小时就能完成训练。而对于拥1750亿参数的模型,使用Deep Speed Chat进行训练也只需不到一天的时间。

注意:在Azure上训练时由于GPU不同,所以训练时间和费用也各不相同。

全民ChatGPT时代来了

做个不太恰当的比喻,微软此次开源Deep Speed Chat就像当年的互联网,为了提升发展速率降低了台式机的价格,使得普通用户也能拥有自己的电脑。

只有参与的用户多了,整个行业生态才能快速壮大发展,所以,微软此次开源对整个ChatGPT生态发展起到了至关重要的推动作用,使得人人都能拥有自己的ChatGPT。

目前,ChatGPT处于初级发展阶段,存在安全隐患、数据隐私、道德等问题。相信随着参与用户的增多,这些难题将会被有效的解决,从而为全球经济发展做出贡

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/469241
推荐阅读
相关标签
  

闽ICP备14008679号