本文档涵盖了 Hugging Face Transformers 库中基础的基类和模型加载基础设施。它解释了所有模型、配置和分词器继承的核心抽象,以及从 Hub 或本地存储加载预训练模型的基础机制。
有关基于这些基类构建的 Auto Classes 系统的信息,请参阅 Auto Classes 系统。有关分词器基类的详细信息,请参阅 分词器系统。
Transformers 库围绕几个关键的基类构建,这些基类为所有模型实现提供了通用功能。这些类负责配置管理、权重加载/保存和特定于框架的行为。
基类层次结构和框架支持
来源:src/transformers/__init__.py554 src/transformers/configuration_utils.py45 src/transformers/modeling_tf_utils.py1 src/transformers/modeling_flax_utils.py1
PretrainedConfig 类是 Transformers 中所有模型配置的基础。它负责参数存储、序列化和从 Hub 加载。
| 方法 | 目的 | 关键参数 |
|---|---|---|
from_pretrained | 从 Hub 或本地路径加载配置 | pretrained_model_name_or_path、cache_dir、revision |
save_pretrained | 将配置保存到目录 | save_directory、push_to_hub |
to_dict | 将配置转换为字典 | use_diff |
from_dict | 从字典创建配置 | config_dict、kwargs |
配置加载和缓存机制
配置系统支持:
来源:src/transformers/configuration_utils.py45-700 src/transformers/utils/hub.py136-144
PreTrainedModel 类是 Transformers 中所有 PyTorch 模型的基础。它负责模型初始化、权重加载/保存和设备管理。
PreTrainedModel 核心特性和方法
模型加载系统支持多种权重格式和存储后端
| 格式 | 文件扩展名 | 后端 |
|---|---|---|
| PyTorch | .bin | torch.load |
| SafeTensors | .safetensors | safetensors |
| TensorFlow | .h5 | h5py |
| GGUF | .gguf | 自定义加载器 |
来源:src/transformers/utils/dummy_pt_objects.py573-577 src/transformers/modeling_gguf_pytorch_utils.py26
TensorFlow 实现扩展了 Keras Model 的功能,并加入了 Transformers 特有的功能
TensorFlow 模型架构和 Mixins
关键的 TensorFlow 特有功能
TFCausalLanguageModelingLoss、TFQuestionAnsweringLoss)@keras_serializable 装饰器提供自定义序列化支持来源:src/transformers/modeling_tf_utils.py126-147 src/transformers/modeling_tf_utils.py213-253
Flax 模型为 JAX 提供了函数式编程范例
JAX/Flax 模型结构和能力
来源:src/transformers/modeling_flax_utils.py1-100
模型加载系统集成了多个组件,为加载预训练模型提供了一个统一的接口
带有 Auto Classes 和权重格式的完整模型加载架构
Auto Classes 使用映射字典根据配置确定正确的模型类
| 映射 | 目的 | 示例条目 |
|---|---|---|
CONFIG_MAPPING_NAMES | 配置类选择 | "bert": "BertConfig" |
MODEL_MAPPING_NAMES | 模型类选择 | "bert": "BertModel" |
TOKENIZER_MAPPING_NAMES | 分词器选择 | "bert": ("BertTokenizer", "BertTokenizerFast") |
_LazyAutoMapping 类提供模型的延迟加载,以避免在启动时导入所有模型。
来源:src/transformers/models/auto/configuration_auto.py36-357 src/transformers/models/auto/modeling_auto.py32-357 src/transformers/models/auto/tokenization_auto.py57-300
基类通过几个关键的实用程序与 Hugging Face Hub 集成
Hub 集成和本地缓存系统
缓存系统以结构化格式存储模型,该格式允许
来源:src/transformers/utils/hub.py1-500 src/transformers/__init__.py552-1037