LLM学习笔记(12)模型 Model

模型

除了像之前使用 AutoModel 根据 checkpoint 自动加载模型以外,我们也可以直接使用模型对应的 Model 类,例如 BERT 对应的就是 BertModel。

模型加载的两种方式

方式 1:使用 AutoModel 类加载模型

  • 特点:

    • AutoModel 是一个通用的加载器,可以根据给定的 checkpoint 自动识别并加载对应的模型。
    • 优点是代码灵活,如果切换到其他模型(如 RoBERTa),只需要替换 checkpoint 名称,无需修改其他代码。
  • 示例:

from transformers import AutoModel

model = AutoModel.from_pretrained("bert-base-cased")

方式 2:使用具体模型类加载

  • 特点:

    • 如果开发者已经确定要加载的模型类型(例如 BERT 或 RoBERTa),可以直接使用对应的模型类(如 BertModel)。
    • AutoModel 稍微固定,代码可读性更高。
  • 适用场景:

    • 当开发者对模型类型有明确要求时,使用具体模型类更直观。
  • 示例:

from transformers import BertModel

model = BertModel.from_pretrained("bert-base-cased")

Hugging Face 的模型存储与加载机制

加载模型的 from_pretrained() 方法

from transformers import BertModel

model = BertModel.from_pretrained("./models/bert/")

  • 功能:

    • from_pretrained() 方法会从指定路径(本地或远程)加载预训练模型的权重。
    • 默认路径:~/.cache/huggingface/transformers/
    • 如果本地路径不存在,库会从 Hugging Face 的 Model Hub 下载模型文件。
  • 参数:

    • 路径或 checkpoint 可以是 Hugging Face Model Hub 上的模型名称(如 bert-base-cased),也可以是本地路径。
    • 其他参数: 可以指定是否只加载部分权重,或者是否跳过某些配置。

模型文件的组成

从 Hugging Face 的 Model Hub 下载模型时,会拉取以下关键文件:

文件名作用
config.json保存模型的配置信息,例如层数、隐藏层维度等。
pytorch_model.bin模型的权重文件(如果使用 PyTorch)。
vocab.txttokenizer.json分词器的词汇表或配置文件,定义模型如何处理输入文本。
tokenizer_config.json分词器的额外配置,例如特殊 token 的定义(如 [CLS])。

加载本地模型的场景

  • 为什么使用本地模型?

    1. 在没有网络的环境中,无法从 Hugging Face Hub 下载模型。
    2. 大规模模型文件需要本地存储以提高加载速度。
  • 文件结构: 本地目录需要包含上述模型文件(如 config.jsonpytorch_model.binvocab.txt)。
  • 示例:

from transformers import BertModel

model = BertModel.from_pretrained("./local_model_directory/")

环境变量:HF_HOME

  • 默认情况下,模型会存储在路径:~/.cache/huggingface/transformers/
  • 如果需要自定义存储位置,可以设置环境变量 HF_HOME

export HF_HOME=/path/to/your/cache

总结

  1. 加载模型的方式:

    • 通用加载器:AutoModel,适合需要灵活切换模型的场景。
    • 具体模型类(如 BertModel):适合确定模型类型的场景。
  2. 模型存储和文件结构:

    • 模型文件包括权重文件、配置文件、分词器文件等。
    • 可以从 Hugging Face Hub 下载,也可以指定本地路径加载。
  3. 推荐实践:

    • 如果需要更灵活的代码,使用 AutoModel
    • 如果对模型类型有明确需求(如 BERT),使用具体模型类(如 BertModel)。

如何保存预训练模型

在 Hugging Face 的 Transformers 库中,模型保存和加载是常用的功能,通过保存模型可以将已经下载或微调好的模型本地化,以便后续使用。

保存模型的方式

代码示例:

from transformers import AutoModel

# 从 Hugging Face Hub 加载预训练模型
model = AutoModel.from_pretrained("bert-base-cased")

# 将模型保存到本地路径
model.save_pretrained("./models/bert-base-cased/")

保存后生成的文件

调用 save_pretrained() 方法后,会在指定路径下创建以下文件:

文件名作用
config.json保存模型的结构配置信息,例如 Transformer 的层数、隐藏层维度等。
pytorch_model.bin保存模型的权重(state dictionary),即模型的参数值。
  • 文件重要性:
    • config.json 定义了模型的结构,例如 BERT 的层数和特征维度。如果没有这个文件,加载模型时无法知道如何初始化模型结构。
    • pytorch_model.bin 存储了模型的训练参数(权重),是模型实际预测的核心。

加载保存的模型

保存模型后,可以使用 from_pretrained() 方法加载本地保存的模型:

代码示例

from transformers import AutoModel

# 从本地路径加载保存的模型
model = AutoModel.from_pretrained("./models/bert-base-cased/")

优点

  • 使用本地路径加载模型时无需重新下载。
  • 保存后的模型文件结构与 Hugging Face Hub 上的模型一致,因此兼容性良好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值