文章目录
Transformers是一个用于自然语言处理(NLP)的Python第三方库,实现Bert、GPT-2和XLNET等比较新的模型,支持TensorFlow和PyTorch。
该库在设计时考虑了两个强烈的目标:
- 尽可能容易且快速地使用:
- 我们尽可能限制了要学习的面向对象抽象的类的数量,实际上几乎没有抽象,每个模型只需要使用三个标准类:配置、模型和tokenizer
- 所有这些类都可以通过使用公共的
from_pretrained()
实例化方法从预训练实例以简单统一的方式初始化,该方法将负责从库中下载,缓存和加载相关类提供的预训练模型或你自己保存的模型。 - 因此,这个库不是构建神经网络模块的工具箱。如果您想扩展/构建这个库,只需使用常规的Python/PyTorch模块,并从这个库的基类继承,以重用诸如模型加载/保存等功能。
- 提供性能与原始模型尽可能接近的最新模型:
- 对于每种架构,我们至少提供一个示例,该示例再现了该架构的正式作者提供的结果
- 代码通常尽可能地接近原始代码,这意味着一些PyTorch代码可能不那么pytorch化,因为这是转换TensorFlow代码后的结果。
1、安装
1.1 依赖:
Python 3.6+ and PyTorch 1.1.0
1.2 安装
(1)pip安装
pip install transformers
(2) 源码:
To install from source, clone the repository and install with:
git clone https://github.com/huggingface/transformers.git
cd transformers
pip install .
1.3 OpenAI GPT原始标记分析流程
如果要实现OpenAI GPT 的本文令牌化过程,则需要安装
ftfy``SpaCy`
pip install spacy ftfy==4.4.3
python -m spacy download en
如果您未安装ftfy
和SpaCy
,则penAI GPT令牌解析器将默认使用BERT的BasicTokenizer后跟Byte-Pair Encoding(对于大多数用法来说应该没问题,不用担心)。`进行令牌化,
1.4 有关模型下载的注意事项(连续集成或大规模部署)
如果您希望从我们的托管存储桶中下载大量模型(超过1,000个)(例如通过您的CI设置或大规模生产部署),请在您端缓存模型文件。它将更快,更便宜。如果您需要任何帮助,请随时与我们私下联系。
1.5 您要在移动设备上运行Transformer模型吗?
您应该查看我们的swift-coreml-transformers回购。
它包含了一套工具来转换PyTorch或TensorFlow 2.0训练的变压器模型(目前包含GPT-2
,DistilGPT-2
,BERT
和DistilBERT
)以CoreML模型运行在iOS设备上。
在将来的某个时候,您将能够从PyTorch中的预训练或微调模型无缝过渡到在CoreML中进行生产,或者在CoreML中对模型或应用程序进行原型设计,然后从PyTorch研究其超参数或体系结构。超级刺激!
2、快速入门
2.1 主要概念
该库针对每种模型围绕三种类型的类构建:
- 模型类 model classes目前在库中提供的8个模型架构的PyTorch模型(torch.nn.Modules),例如BertModel
- 配置类 configuration classes,它存储构建模型所需的所有参数,例如BertConfig。您不必总是自己实例化这些配置,特别是如果您使用的是未经任何修改的预训练的模型,创建模型将自动负责实例化配置(它是模型的一部分)
- tokenizer classes,它存储每个模型的词汇表,并在要输送到模型的词汇嵌入索引列表中提供用于编码/解码字符串的方法,例如BertTokenizer
所有这些类都可以从经过预训练的实例中实例化,并使用两种方法在本地保存:
from_pretrained()
允许您从一个预训练版本实例化一个模型/配置/tokenizer,这个预训练版本可以由库本身提供(目前这里列出了27个模型),也可以由用户在本地(或服务器上)存储,save_pretrained()
允许您在本地保存模型/配置/tokenizer,以便可以使用from_pretraining()
重新加载它。
我们将通过一些简单的快速入门示例来结束本快速入门之旅,以了解如何实例化和使用这些类。本文档的其余部分分为两部分:
- “ **主要类别”**部分详细介绍了三种主要类别(配置,模型,tokenizer