【Hugging Face】transformers 库中的 from_pretrained 和 save_pretrained:加载和保存模型及分词器

Hugging Face transformers 库中的 from_pretrainedsave_pretrained

transformers 库中,from_pretrainedsave_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.txtvocab.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. 总结

  1. from_pretrained 用于加载模型和分词器,可以从 Hugging Face Hub 或本地路径加载。
  2. save_pretrained 用于保存模型,适用于 微调后模型的存储和再加载
  3. 支持 GPU 加速,可以在 from_pretrained 之后 .to(torch.device("cuda"))
  4. 可结合 Trainer 进行微调后保存和重新加载
<think>嗯,用户想了解这段代码,特别是从transformers导入T5Tokenizer,然后用from_pretrained方法加载模型,再保存到本地。首先,我得回忆一下Hugging Face相关知识。 T5模型是基于文本到文本的框架,所以T5Tokenizer应该是处理输入输出的工具。用户提到的模型是mrm8488/t5-small-finetuned-wikiSQL,这应该是一个在wikiSQL数据集上微调过的T5-small模型,用于SQL生成之类的任务。 首先,导入T5Tokenizer,这是Hugging Face Transformers的标准用法。from_pretrained方法会从Hugging Face模型中心下载预训练模型分词器。这里指定的模型名称是mrm8488用户上传的,可能针对SQL任务优化过。 然后,保存分词器到本地目录"./local_model",这方便后续离线使用,避免重复下载。需要确认save_pretrained方法的正确性,是否会保存配置文件、词汇表等必要文件。 用户可能的需求是想要在自己的项目中使用这个分词器,或者部署到没有网络的环境。需要解释代码每一步的作用,以及背后的原理。例如,T5Tokenizer的特点,比如支持前缀、如何处理文本输入,以及如何适应特定任务如SQL生成。 可能需要注意的地方包括:确保网络连接可以访问Hugging Face的服务器,保存路径的权限是否正确,加载时是否需要其他文件。此外,可能还需要提到安全性模型来源的可信度,因为使用的是第三方用户的模型。 另外,用户可能对T5的结构fine-tuning过程感兴趣,但问题主要集中在分词器的使用保存,所以应该围绕这些点展开,保持简洁。需要确认代码示例的正确性,比如是否需要额外的参数或步骤,但根据提供的代码,似乎已经完整。 总结回答的结构:先介绍T5Tokenizer及其作用,然后解释from_pretrained加载特定模型,再说明保存到本地的用途,最后可能提到注意事项应用场景。这样用户能逐步理解代码的意义操作方法。</think>好的,我来逐步解释这段代码的作用原理: 1. **导入T5分词器**: ```python from transformers import T5Tokenizer ``` - 这里引入了Hugging Face Transformers中的`T5Tokenizer`类,这是专门为T5文本生成模型设计的预处理工具 - T5采用统一的文本到文本(text-to-text)框架,所有任务(包括分类、翻译等)都会被转换为文本生成任务 2. **加载预训练分词器**: ```python tokenizer = T5Tokenizer.from_pretrained("mrm8488/t5-small-finetuned-wikiSQL") ``` - `from_pretrained()`方法会: - 自动从Hugging Face模型中心下载指定模型 - 这里使用的是用户`mrm8488`微调的T5-small模型,专门用于SQL生成任务 - 包含的配置文件: ```json { "model_type": "t5", "vocab_size": 32100, "special_tokens_map_file": "special_tokens_map.json" } ``` 3. **保存分词器到本地**: ```python tokenizer.save_pretrained("./local_model") ``` - 会在当前目录创建`local_model`文件夹 - 保存内容包含: ``` ├── special_tokens_map.json # 特殊token定义 ├── spiece.model # SentencePiece模型文件 └── tokenizer_config.json # 分词器配置 ``` - 优势: - 支持离线使用 - 方便版本控制 - 保持训练/推理环境一致 **注意事项**: 1. 首次运行会自动下载约250MB的文件(模型+分词器) 2. 需要确保网络可以访问huggingface.co 3. 本地保存后可通过`T5Tokenizer.from_pretrained("./local_model")`加载 4. 该特定模型适用于将自然语言转换为SQL查询的任务 **典型应用场景**: ```python input_text = "translate English to SQL: Find all employees in the sales department" inputs = tokenizer(input_text, return_tensors="pt") # 输出结果可用于模型推理生成SQL ``` 建议后续配合`T5ForConditionalGeneration`模型使用,完整流程: ```python from transformers import T5ForConditionalGeneration model = T5ForConditionalGeneration.from_pretrained("mrm8488/t5-small-finetuned-wikiSQL") outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0])) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值