赞
踩
Huggingface是一家公司,在Google发布BERT模型不久之后,这家公司推出了BERT的pytorch实现,形成一个开源库pytorch-pretrained-bert。后续又实现了其他的预训练模型,如GPT、GPT2、ToBERTa、T5等,便把开源库的名字改成transformers,transformers包括各种模型的 pytorch 实现
Google发布的原始BERT预训练模型(训练好的参数)是基于Tensorflow的,Huggingface是基于pytorch的。
huggingface官网的这个链接:huggingface 官网 可以搜索到当前支持的模型,但是目前正常情况下应该是访问不到了。可以使用 魔塔社区 来获取模型并下载,获得离线模型之后再本地调试
modelscope 的模型下载可以使用模型文件页面提供的 SDK 下载脚本来下载模型文件和 checkpoint 到本地,例如:
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('ZhipuAI/GLM130B')
网络结构主要分为两种:Base 和 Large。Base版本相比于Large版本网络规模较小。
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表示预训练时使用中文,没有额外标注的则表示用英文语料训练。
Whole Word Masking表示整词掩盖而不是只掩盖词语的一部分。
ext差别是增加了训练数据集同时也增加了训练步数。
关键的几个文件:
transformers 库主要的几个类:
这三个类,所有相关的类都衍生自这三个类,他们都有from_pretained()方法和save_pretrained()方法
from_pretrained方法的第一个参数都是pretrained_model_name_or_path,这个参数设置为我们下载的文件目录即可
使用的基本原理也非常简单,from_pretrained的参数pretrained_model_name_or_path,可以接受的参数有几种,short-cut name(缩写名称,类似于gpt2这种)、identifier name(类似于microsoft/DialoGPT-small这种)、文件夹、文件
对于short-cut name或identifier name,这种情况下,本地有文件,可以使用本地的,本地没有文件,则下载。一些常用的short-cut name,可以从这个链接查看:https://huggingface.co/transformers/pretrained_models.html
对于文件夹,则会从文件夹中找vocab.json、pytorch_model.bin、tf_model.h5、merges.txt、special_tokens_map.json、added_tokens.json、tokenizer_config.json、sentencepiece.bpe.model等进行加载。这也是为什么下载的时候,一定要保证这些名称是这几个,不能变。
对于文件,则会直接加载文件。
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")
传入参数input_ids和attention_mask,返回最后一层的输出last_hidden_state,形状为(batch_size,sequence_len,hidden_size)以及[CLS]对应的输出pooled_output,形状为(batch_size,hidden_size)
last_hidden_state, pooled_output = bert_model(
input_ids=encoding['input_ids'],
attention_mask=encoding['attention_mask']
)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。