Hugging Face transformers
库中的 from_pretrained
和 save_pretrained
在 transformers
库中,from_pretrained
和 save_pretrained
是 加载和保存模型及分词器的核心方法,用于 加载预训练模型 或 保存和本地加载已微调的模型。
1. from_pretrained
方法
from_pretrained
用于 加载 Hugging Face Hub 上的预训练模型 或 从本地路径加载模型。
1.1. 加载 Hugging Face Hub 上的模型
from transformers import AutoModel, AutoTokenizer
# 指定模型名称(从 Hugging Face 下载)
model_name = "bert-base-uncased"
# 加载 BERT 模型
model = AutoModel.from_pretrained(model_name)
# 加载 BERT 分词器
tokenizer = AutoTokenizer.from_pretrained(model_name)
- 这里的
"bert-base-uncased"
是 Hugging Face Hub 上的模型名称 AutoModel
自动匹配正确的 Transformer 结构AutoTokenizer
自动加载对应的分词器
支持的 from_pretrained
类
用途 | 类名 |
---|---|
通用 Transformer 模型 | AutoModel.from_pretrained() |
文本分类 | AutoModelForSequenceClassification.from_pretrained() |
词级分类(NER) | AutoModelForTokenClassification.from_pretrained() |
问答 | AutoModelForQuestionAnswering.from_pretrained() |
语言模型(MLM) | AutoModelForMaskedLM.from_pretrained() |
文本生成(GPT-2, T5) | AutoModelForCausalLM.from_pretrained() |
1.2. 从本地路径加载模型
如果你已经下载了模型,可以 从本地路径加载:
local_model_path = "./my_bert_model"
# 加载本地保存的 BERT 模型
model = AutoModel.from_pretrained(local_model_path)
# 加载本地保存的分词器
tokenizer = AutoTokenizer.from_pretrained(local_model_path)
适用于
- 加载已微调的模型
- 避免每次都从 Hugging Face 重新下载
1.3. 指定 cache_dir
位置
默认情况下,from_pretrained
会将模型下载到 ~/.cache/huggingface/
,你可以指定缓存路径:
model = AutoModel.from_pretrained("bert-base-uncased", cache_dir="./cache")
1.4. 只加载 config
(不加载权重)
如果只想加载模型配置(如 config.json
),可以:
from transformers import AutoConfig
config = AutoConfig.from_pretrained("bert-base-uncased")
model = AutoModel.from_config(config)
这样不会下载 pytorch_model.bin
(模型权重),仅获取 config.json
。
1.5. 在 from_pretrained
中启用 GPU
如果要让 from_pretrained
自动将模型加载到 GPU:
import torch
model = AutoModel.from_pretrained("bert-base-uncased").to(torch.device("cuda"))
2. save_pretrained
方法
save_pretrained
用于 将模型和分词器保存到本地,以便之后加载,而无需重新下载或重新训练。
2.1. 保存模型
# 保存模型到本地
model.save_pretrained("./my_bert_model")
保存的内容
config.json
(模型配置)pytorch_model.bin
(模型权重)
2.2. 保存分词器
# 保存分词器到本地
tokenizer.save_pretrained("./my_bert_model")
保存的内容
tokenizer_config.json
vocab.txt
(BERT 专用)merges.txt
和vocab.json
(GPT-2 专用)special_tokens_map.json
2.3. 训练后保存微调模型
如果你在 Trainer
里训练了模型,需要保存:
trainer.save_model("./fine_tuned_bert")
然后可以使用 from_pretrained
重新加载
model = AutoModelForSequenceClassification.from_pretrained("./fine_tuned_bert")
2.4. 保存 TensorFlow 模型
如果你用的是 TensorFlow 版本,可以这样保存:
model.save_pretrained("./my_bert_model", saved_model=True)
3. from_pretrained
vs save_pretrained
方法 | 作用 |
---|---|
from_pretrained() | 加载 Hugging Face Hub 或本地模型 |
save_pretrained() | 保存 模型到本地 |
4. 总结
from_pretrained
用于加载模型和分词器,可以从 Hugging Face Hub 或本地路径加载。save_pretrained
用于保存模型,适用于 微调后模型的存储和再加载。- 支持 GPU 加速,可以在
from_pretrained
之后.to(torch.device("cuda"))
。 - 可结合
Trainer
进行微调后保存和重新加载。