我们经常使用到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

更多推荐