我们经常使用到hugging face中的模型,比如bert,GPT等等,但是在写代码的过程中发现了两种导入hugging face的方式,现在记录下来。
方式一:通过配置导入
这种方式说白了就是使用函数读入参数文件来实例化模型,官方代码示例。
参数配置文件在代码执行的时候自动下载,如果您没有指定下载(缓存)路径,他会自动下载到C:\Users\{您的用户名称}\.cache\huggingface
下。具体代码如下:
from transformers import BertModel, BertConfig
# Initializing a BERT bert-base-uncased style configuration
configuration = BertConfig()
# 如果你想读入本地已经下载好的文件,可以直接传入整个文件夹路径
# configuration = BertConfig(Config_path)
# Initializing a model from the bert-base-uncased style configuration
model = BertModel(configuration)
# Tokenizer容器进行预处理
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
# Accessing the model configuration
configuration = model.config,
需要注意的是,这些文件只是记录了模型的超参数和模型的权重,并不是完整的模型。
方式二:直接读入模型
这种方式是读入完整的模型文件来实例化模型,官方代码示例。以bert-base-uncased
模型为例,具体代码如下:
from transformers import BertTokenizer, BertModel
import torch
# Tokenizer容器进行预处理
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
# 如果你想读入本地已经下载好的文件,可以直接传入整个文件夹路径,但是可能存在transformers 3.x和4.x版本不兼容的问题
# tokenizer = BertTokenizer.from_pretrained(model_path)
# Bert模型
model = BertModel.from_pretrained("bert-base-uncased")
# 和上面一样可以传入本地下载好的文件夹路径
# model = BertModel.from_pretrained(model_path)
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state