在 https://huggingface.co/models 中有很多模型。Transformers库采用模块化和分层设计,将模型结构、配置、分词器(Tokenizer)和实用工具分离,使得模型调用、训练和扩展变得简单。核心代码位于src/transformers目录下。
Transformers库从v5.0开始发生重大架构变化,仅支持PyTorch,不再支持TensorFlow和JAX作为后端。
主要模块:
1.模型模块:参见models目录。
模型类按任务类型组织,所有模型均继承自PreTrainedModel基类(modeling_utils.py)。
所有模型支持from_pretrained()方法 ,可从本地或从Hugging Face Hub自动下载并加载预训练模型。
2.配置模块:
所有配置均继承自PretrainedConfig基类(configuration_utils.py)。处理所有模型配置通用的几个参数,以及加载、下载、保存配置文件的方法。
3.分词器模块:
分词器是自然语言处理(NLP)中负责将原始文本转换为模型可以理解的数值化输入。
所有slow tokenizers均继承自PreTrainedTokenizer基类(tokenization_utils.py)。
所有fast tokenizers均继承自PreTrainedTokenizerFast基类(tokenization_utils_fast.py)。
PreTrainedTokenizer和PreTrainedTokenizerFast的基类为PreTrainedTokenizerBase(tokenization_utils_base.py)。
4.训练模块:
Trainer(trainer.py)是一个简单但功能齐全的PyTorch训练和评估类。
5.推理模块:参见pipelines目录。
模型组织方式:每个模型通常遵循相似的组织模式
1.每个模型都有独立的子目录。参见models目录。
2.每个模型目录可能包含:假如模型名为xxx
(1).modeling_xxx.py:PyTorch模型实现
(2).modeling_tf_xxx.py:TensorFlow模型实现
(3).modeling_flax_xxx.py:JAX模型实现
(4).configuration_xxx.py:模型配置实现
(5).tokenization_xxx.py:slow分词器实现
(6).tokenization_xxx_fast.py:fast分词器实现
(7).image_processing_xxx.py:图像处理实现
(8).image_processing_xxx_fast.py:快速图像处理实现
(9).feature_extraction_xxx.py:特征提取实现
(10).modular_xxx.py:主要用于模块化和代码复用
Transformers库支持自动从Hugging Face Hub加载自定义模型。参见:https://huggingface.co/models
1.每个模型都对应一个独立的版本库(repo),这个版本库会包含若干标准文件/目录。
2.通过from_pretrained()方法下载/加载模型
3.模型中文件:在模型页面点击"Files and versions"标签页,如下图所示:

(1).README.md:模型介绍
(2)..gitattributes:Git LFS配置(用于大文件管理)
(3).config.json:模型配置文件,存储模型结构和超参数
(4).pytorch_model.bin/model.safetensors:存储模型权重;支持大模型分片(shard),支持将权重拆分成多个.bin/.safetensors文件,避免单个文件过大,加载时会把这些shard合并还原为完整模型
(5).tokenizer.json:分词器配置
(6).tokenizer_config.json:分词器配置参数
(7).added_tokens.json:扩展词表
(8).special_tokens_map.json:特殊令牌(token)映射
(9).vocab.json/merges.txt:词汇表
(10).generation_config.json:文本生成默认参数
(11).preprocessor_config.json:图像等模型的预处理配置
使用from_pretrained方法时执行流程:如模型PekingU/rtdetr_v2_r50vd
1.加载config.json得到配置对象
2.解析config.json,读取model_type字段:"model_type": "rt_detr_v2"
3.根据model_type,通过映射表(models/auto/modeling_auto.py)找到对应的models/rt_detr_v2中的modeling_rt_detr_v2.py和configuration_rt_detr_v2.py
4.实例化RTDetrV2ForObjectDetection类:config.json中的architectures字段
5.加载权重文件