菜单

概述

相关源文件

Hugging Face Transformers 库是一个全面的机器学习框架,为自然语言处理、计算机视觉、音频处理和多模态任务提供了最先进的预训练模型。该库既是推理引擎又是训练平台,提供超过 500,000 个涵盖多种模态和框架的模型检查点。

本文档涵盖了使 Transformers 能够为多样化的模型架构和任务提供统一 API 的基础架构、核心系统和设计模式。有关特定组件的详细信息,请参见核心架构训练系统生成系统模型实现

库的用途和范围

Transformers 旨在通过提供以下功能,普及对最先进机器学习模型的访问:

  • 统一模型访问:通过 Auto 类为 500 多种模型架构提供一致的 API
  • 多框架支持:为 PyTorch、TensorFlow 和 JAX/Flax 提供原生实现
  • 生产级推理:针对常见任务优化的 Pipeline API
  • 全面训练:具有 Trainer 类的完整训练基础设施
  • 高级生成:采用多种解码策略的复杂文本生成
  • 内存优化:量化支持和高效缓存机制

该库的架构围绕着在 src/transformers/__init__.py57-280 中实现的三项基本原则。

  1. 简洁性:每个模型仅使用三个核心类——配置、模型和分词器
  2. 一致性:所有模型实现中的标准化接口
  3. 可扩展性:模块化设计,便于添加新模型和功能

高层架构

Transformers 库由几个相互关联的系统组成,这些系统协同工作,提供从模型加载到推理和训练的无缝体验。

核心库结构

来源:src/transformers/__init__.py57-280 src/transformers/models/auto/modeling_auto.py32-357 src/transformers/models/auto/configuration_auto.py36-346

自动加载系统架构

Auto 类提供了加载模型的主要接口,通过复杂的懒加载系统处理模型名称到实现的映射复杂性。

来源:src/transformers/models/auto/modeling_auto.py32-357 src/transformers/models/auto/configuration_auto.py36-346 src/transformers/models/auto/tokenization_auto.py57-58

关键设计模式

懒加载和导入结构

该库使用在 src/transformers/__init__.py57-280 中定义的复杂懒加载机制,通过 _import_structure 字典实现。这使得库能够在需要时才导入数百个类,从而显著减少导入时间。

配置驱动架构

Transformers 中的每个模型都遵循一致的模式,其行为通过继承自 PretrainedConfig 的配置对象进行控制。这使得所有模型类型的序列化、加载和参数管理都能标准化。

多框架抽象

该库通过并行的类层次结构为 PyTorch、TensorFlow 和 JAX/Flax 提供实现。特定于框架的实现共享通用接口,同时针对每个框架的优势进行优化。

来源:src/transformers/__init__.py57-280 src/transformers/models/auto/modeling_auto.py1-20 README.md204-226

模型生态系统概述

Transformers 库支持按模态和用例组织的大量模型架构生态系统。 src/transformers/models/auto/modeling_auto.py32-357 文件定义了超过 300 种不同模型架构在多个类别中的映射。

模态示例模型配置类
文本BertModel, LlamaModel, GPT2ModelBertConfig, LlamaConfig, GPT2Config
视觉ViTModel, SwinModel, DeiTModelViTConfig, SwinConfig, DeiTConfig
音频WhisperModel, Wav2Vec2ModelWhisperConfig, Wav2Vec2Config
多模态LlavaModel, PaliGemmaModel, CLIPModelLlavaConfig, PaliGemmaConfig, CLIPConfig

该架构支持在同一类别模型之间无缝切换,同时通过共享基类保持 API 一致性。

来源:src/transformers/models/auto/modeling_auto.py32-357 src/transformers/models/auto/configuration_auto.py36-346 docs/source/en/_toctree.yml370-896