Hugging Face Transformers 库的核心架构确立了基础设计模式和抽象,从而实现可扩展的模型加载、跨框架兼容性以及跨 500 多种模型架构的统一接口。该架构实现了几个关键模式:惰性加载、基于映射的自动解析和框架抽象层。
本页介绍了基础架构组件。有关具体的模型实现,请参阅模型实现。有关训练基础设施,请参阅训练系统。有关生成功能,请参阅生成系统。有关管道抽象,请参阅管道系统。
Transformers 库实现了三个核心架构模式,这些模式使数百种模型类型能够实现可扩展性和灵活性。
使用 _LazyModule 进行惰性加载
基于映射的解析系统
框架抽象层
来源
该库的架构围绕三个基础类展开,这些类在所有模型实现中建立了通用接口和行为。
PretrainedConfig - 配置管理配置类层次结构
CONFIG_MAPPING_NAMES 在 src/transformers/models/auto/configuration_auto.py36-387 定义了从模型类型到配置类的映射
PreTrainedModel - 模型基类模型加载与状态管理
MODEL_MAPPING_NAMES 在 src/transformers/models/auto/modeling_auto.py32-357 将模型类型映射到基类模型
PreTrainedTokenizerBase - 分词接口分词器解析系统
TOKENIZER_MAPPING_NAMES 在 src/transformers/models/auto/tokenization_auto.py57-413 定义了分词器解析
来源
自动解析系统通过基于映射的查找和惰性实例化实现动态类解析,从而在 300 多种模型架构中实现统一接口。
_LazyAutoMapping - 核心解析引擎惰性自动映射架构
自动类解析过程
该系统使用 model_type_to_module_name() 函数将模型类型转换为 Python 模块路径
模块导入结构
该系统通过专用映射提供特定任务的自动类
多任务自动解析
来源
该库根据可用后端实现条件加载,从而在缺少依赖项时实现优雅降级。
后端可用性检查
缺失依赖项的虚拟对象模式
来自 src/transformers/utils/dummy_pt_objects.py573-654
动态导入结构生成
来自 src/transformers/__init__.py1015-1029
多框架模型支持
来源
该库通过抽象基类和共享通用接口的框架特定实现来支持跨框架兼容性。
基类架构
框架特定生成实现
来自 src/transformers/__init__.py530-547 显示框架特定生成导入
运行时框架检测
来源
该架构提供了定义良好的扩展点,可以通过既定模式添加新模型、组件和后端。
模型注册工作流程
来自 src/transformers/models/auto/configuration_auto.py532-603 中的模型注册模式
基于能力的Mixins
添加新框架支持
来源
核心架构依赖于几个处理常见操作的工具
该库维护一个已下载模型和文件的缓存,以避免重复下载。这通过 Hugging Face Hub 库进行管理,该库提供了下载和缓存文件的功能。
关键组件
cached_file:从缓存检索文件或下载文件get_checkpoint_shard_files:处理分片模型文件来源
权重初始化是模型创建的关键部分。该库提供了用于以下方面的实用工具:
来源
设备管理工具处理
来源
Transformers 库的核心架构为使用 Transformer 模型提供了灵活且可扩展的基础。其关键组件包括:
PreTrainedModel、PretrainedConfig、PreTrainedTokenizerBase)该架构使库能够支持数百种模型架构,同时为用户保持一致的接口。
来源