Huggingface
Huggingface是一家公司,在Google发布BERT模型不久之后,这家公司推出了BERT的pytorch实现,形成一个开源库pytorch-pretrained-bert。后来这家公司又实现了其他的预训练模型,如GPT、GPT2、ToBERTa、T5等。此时,开源库的名字还叫pytorch-pretrained-bert就不太合适了,于是他们就将开源库的名字改成transformers,transformers包括各种模型的实现。
简而言之:Google发布的原始BERT预训练模型(训练好的参数)是基于Tensorflow的,Huggingface是基于pytorch的。
预训练模型下载
huggingface官网的这个链接:https://huggingface.co/models可以搜索到当前支持的模型,常用的预训练模型有以下几种:
BERT-Large, Uncased (Whole Word Masking)
语言种类:英文
网络结构:24-layer, 1024-hidden, 16-heads
参数规模:340M
BERT-Large, Cased (Whole Word Masking)
语言种类:英文
网络结构:24-layer, 1024-hidden, 16-heads
参数规模:340M
BERT-Base, Uncased
语言种类:英文
网络结构:12-layer, 768-hidden, 12-heads
参数规模:110M
BERT-Base, Cased
语言种类:英文
网络结构:12-layer, 768-hidden, 12-heads
参数规模:110M
-
Uncased和Cased:Uncased模型在WordPiece tokenization之前会转换成小写,如John Smith变为john smith. Uncased模型还会去除发音标记(accent markers).
-
Cased模型保留了大小写和发音标记。一般来说Uncased模型更好。但是在case信息也有作用的场景下,就应该使用cased模型
(e.g., Named Entity Recognition or Part-of-Speech tagging)。 -
Multilingual表示预训练时使用多种语言的语料,Chinese表示预训练时使用中文,没有额外标注的则表示用英文语料训练。
-
ext差别是增加了训练数据集同时也增加了训练步数。
总之,不管预训练模型的种类如何的多,他们都是基于BERT的魔改模型,只不过是层数不同或者使用的训练语料不同,训练轮次不同等。做中文相关任务先考虑chinese-roberta-wwm-ext、ERNIE预训练模型吧。
下载
使用预训练模型需要下载模型的文件,最关键的是三个文件:
第一个是配置文件,config.json
第二个是词典文件,vocab.json或vocab.txt
第三个是预训练模型文件,pytorch_model.bin或tf_model.h5。 根据你使用的框架选择
下面具体看看下载方式:
首先,打开预训练模型所在网址,比如ERNIE是:https://huggingface.co/nghuyong/ernie-1.0
其次,点击Files and versions选项卡,就可以找到需要下载的文件:config.json、pytorch_model.bin、vocab.txt
ERNIE预训练模型包含的文件当然,你也可以把上面的所有文件都下载下来,这样肯定不会出错。
预训练模型的使用(API)
transformers库最关键的三个类
- model
- tokenizer
- configuration
其他类如GPT2LMHeadModel都是对应类的子类而已,根据模型的特点进行改进。
- 使用方式一:指定模型名字
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained(“nghuyong/ernie-1.0”)
model = AutoModel.from_pretrained(“nghuyong/ernie-1.0”)
这种方式不需要下载预训练模型,函数调用过程中如果发现没有这个模型就会自动下载
- 使用方式二:指定路径
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained(“/home/models/huggingface/gpt2”)
model = AutoModel.from_pretrained(“/home/models/huggingface/gpt2”)
这种方式需要先下载好预训练模型的文件