Hugging Face transformers 内置集成模型大全
一、按任务大类划分(最常用)
1. 自然语言理解/生成(LLM大语言模型)
(1)Decoder-only 自回归生成模型(对话、续写、写作)
- GPT系列:GPT2、GPTNeo、GPTNeoX、GPTJ、GPTBigCode
- LLaMA家族:LLaMA1/2、Llama3、CodeLlama、OpenLLaMA
- Mistral家族:Mistral-7B、Mixtral 8x7B MoE
- Qwen(通义千问):Qwen1.5、Qwen2、Qwen-VL(多模态)
- Yi(零一万物):Yi-6B/9B/34B
- GLM家族:GLM2、GLM3、ChatGLM、GLM4
- BLOOM/BLOOMZ:多语言大模型
- Falcon:TII开源大模型
- Phi系列:微软Phi-1/2/3小参数强能力模型
- Baichuan(百川):Baichuan2
- InternLM(书生浦语):InternLM1/2
- Aquila:智源大模型
(2)Encoder-only 编码器模型(分类、语义向量、NER)
双向编码,不做生成,主打特征抽取
- BERT、RoBERTa、DistilBERT、ALBERT、MobileBERT
- DeBERTa、ELECTRA
- Chinese-BERT、MacBERT(中文优化)
- XLM-RoBERTa(跨语言)
(3)Encoder-Decoder 编解码模型(翻译、摘要、复述)
- T5、T5-v1.1、Flan-T5、mT5(多语言T5)
- BART、MBART(多语言BART)
- Pegasus(摘要专用)
- ProphetNet
2. 多模态模型(文本+图像/音频)
图文理解/图文生成
- CLIP:文本图像对比检索
- BLIP、BLIP-2:图像描述、视觉问答VQA
- LLaVA:视觉大模型VLM
- Qwen-VL、InternLM-XComposer:国产多模态
- Flamingo:DeepMind多模态
- Pixtral:Mistral多模态
- ViT-GPT2:简易图文生成
图像生成类(需配合diffusers,transformers仅加载编码器)
- Stable Diffusion 文本编码器CLIPTextModel
- DALL·E 相关文本编码模块
3. 视觉纯CV模型(图像分类、检测、分割)
全部可用AutoModel加载
- ViT(Vision Transformer)、DeiT、BEiT、MAE
- Swin Transformer、ConvNeXt
- DETR、Deformable DETR(目标检测)
- SegFormer、UperNet(语义分割)
- DINOv2(视觉特征提取)
4. 音频模型(语音识别、语音合成、声音分类)
语音ASR识别
- Wav2Vec2、WavLM、HuBERT
- Whisper(OpenAI,多语言语音转文字)
- SpeechT5
TTS语音合成
- SpeechT5、VITS(通过transformers加载权重)
音频分类
- AST(Audio Spectrogram Transformer)
5. 时序/其他小众模型
- TimeSeriesTransformer 时间序列预测
- LayoutLM、LayoutLMv2、LayoutXLM(文档OCR+版面理解,票据/合同抽取)
- Canine(字符级编码,超长文本)
二、按Auto类自动加载对应Model/Tokenizer/Processor
核心自动类(通用写法)
fromtransformersimport(AutoModelForCausalLM,# 自回归生成LLMAutoModelForSequenceClassification,# 文本分类AutoModelForQuestionAnswering,# 问答抽取AutoModelForSeq2SeqLM,# 翻译/摘要T5/BARTAutoModelForImageClassification,# 图像分类AutoModelForVision2Seq,# 图文生成LLaVA/BLIP2AutoProcessor,AutoTokenizer)三、极简使用示例(以Llama3为例)
fromtransformersimportAutoTokenizer,AutoModelForCausalLM model_name="meta-llama/Meta-Llama-3-8B-Instruct"tokenizer=AutoTokenizer.from_pretrained(model_name)model=AutoModelForCausalLM.from_pretrained(model_name)四、补充关键说明
- transformers只是模型架构代码:权重需要从Hugging Face Hub下载,框架只定义网络结构;
- 国产热门全覆盖:Qwen、ChatGLM、InternLM、Baichuan、Yi全部原生支持;
- MoE稀疏模型:Mixtral、GLM4-MoE可直接加载;
- 量化支持:配合
bitsandbytes、accelerate实现4/8bit加载; - 不包含:SD扩散模型主干、GAN、RLHF训练逻辑,这些在
diffusers、trl库。
transformers 两大核心模块:modeling 底层模型层 + generation 生成调度层
一、Modeling 层(modeling_*.py,模型网络结构、前向传播核心)
1. 基类父类(所有模型都继承)
(1)PreTrainedModel
所有模型顶层父类,定义通用能力:
fromtransformersimportPreTrainedModel核心内置方法:
.from_pretrained():加载本地/Hub权重、配置、分片、量化、设备映射.save_pretrained():保存模型权重+config.forward():强制子类重写,底层张量前向传播入口.parameters()/.named_parameters():获取参数用于训练优化.to(device)/.half()/.bfloat16():精度与设备迁移.eval()/.train():评估/训练模式切换(控制Dropout、BN).num_parameters():统计参数量.tie_weights():输入输出Embedding权重绑定(LLM标配).gradient_checkpointing_enable():梯度检查点节省显存
(2)EncoderDecoderModel
T5/BART等编解码模型基类,封装encoder+decoder联合前向。
2. 按任务划分的建模实现类(带ForXXX后缀,最常用)
全部在modeling_xxx.py中实现,本质是封装forward输出loss/logits:
2.1 自回归LLM(Decoder-only)
AutoModelForCausalLM对应类:
LlamaForCausalLM.forward(input_ids, attention_mask, labels=None)- labels不为None时自动计算CrossEntropy损失(训练用)
- 返回:
CausalLMOutputWithPast(logits、past_key_values、loss、hidden_states、attentions)
核心内部算子(modeling代码里硬写):
- 词嵌入层
Embedding - 每层TransformerBlock:SelfAttention(RoPE、KV缓存、Sliding Window)、MLP、RMSNorm/LayerNorm
- LM头
lm_head:hidden_states -> vocab logits
2.2 编码器理解模型(BERT/RoBERTa)
AutoModelForSequenceClassification:文本分类,forward返回分类loss+logitsAutoModelForTokenClassification:NER实体抽取AutoModelForQuestionAnswering:抽取式QA(start/end logits)
2.3 编解码生成模型(T5/BART)
AutoModelForSeq2SeqLM
forward入参:input_ids(编码器)、decoder_input_ids(解码器)、labels
内部执行:encoder编码 -> decoder自回归解码 -> 计算seq2seq损失
2.4 多模态视觉建模类
AutoModelForVision2Seq:LLaVA/BLIP2,视觉编码器+LLM解码器联合forwardAutoModelForImageClassification:ViT/Swin图像分类
3. Modeling层关键底层函数/属性(写模型必看)
- forward()
底层张量计算核心,不做任何采样/解码,只输出原始logits和KV缓存,纯数学运算。
入参高频:past_key_values:KV缓存,增量解码核心use_cache:是否返回KV缓存,generation依赖开启output_attentions/output_hidden_states:是否返回中间注意力、隐层
_update_model_kwargs_for_generation()
Model层给Generation层做参数迭代更新的钩子函数,每次生成1个token后,更新past_key_values、attention_mask、position_ids,几乎所有LLM都重写此方法。prepare_inputs_for_generation()
超级重要:给定上一轮outputs,裁剪input_ids、拼装KV缓存、构造下一轮模型输入张量,是连接modeling和generation的桥梁。_reorder_cache()
beam search/多batch时,对KV缓存按beam索引重排,保证缓存对齐。
4. Modeling输出数据结构(XXXOutput)
统一命名,generation直接读取logits:
CausalLMOutputWithPast:decoder-only输出(带KV)Seq2SeqLMOutput:编解码模型输出BaseModelOutputWithPastAndCrossAttentions:底层transformer层输出
二、Generation 层(generation/ 文件夹,解码采样、搜索算法调度)
入口:.generate()方法,定义在GenerationMixin类中,所有PreTrainedModel混入继承。
1. 顶层入口类与总流程
model.generate(...)# 来自 GenerationMixin.generate()完整执行链路:
- 预处理输入 → 调用
model.prepare_inputs_for_generation初始化首轮输入 - 进入迭代解码循环(while未到eos/max_length)
- 每一步调用
model.forward()拿到logits & past_key_values - 调用采样策略函数选出下一个token id
- 更新KV缓存、拼接新token,循环直到终止条件
- 后处理去掉padding、返回token ids
2. GenerationMixin 核心公共方法(可直接调用)
主入口
generate():通用生成入口,支持greedy/beam/top-p/top-k/contrastive等所有策略
单独算法封装方法(generate内部调用,也可手动调用)
greedy_search():贪心搜索beam_search():普通束搜索beam_sample():带采样的束搜索group_beam_search():分组束搜索(Diverse Beam)constrained_beam_search():约束生成(指定必须出现某些token)contrastive_search():对比搜索dola_search():DoLa深度层增强搜索(新版加入)
辅助工具方法
compute_transition_scores():计算每个生成token的对数概率_get_logits_processor():组装logits处理器列表_get_stopping_criteria():组装停止条件(max_len/eos/pad)_get_warper():组装温度、topk/topp采样扰动器
3. 生成两大核心组件(LogitsProcessor + LogitsWarper)
(1)LogitsProcessor 逻辑修正(每一步对logits硬约束,不改变分布形态)
基类:LogitsProcessor,批量放入LogitsProcessorList循环执行
常用内置处理器:
ForcedBOSLogitsProcessor:强制开头tokenForcedEOSTokenLogitsProcessor:达到长度强制输出EOSNoRepeatNGramLogitsProcessor:禁止n-gram重复(经典防重复)RepetitionPenaltyLogitsProcessor:重复惩罚MinLengthLogitsProcessor:最小生成长度,没到长度屏蔽EOSPrefixConstrainedLogitsProcessor:前缀约束生成HammingDiversityLogitsProcessor:beam内部多样性约束
(2)LogitsWarper 概率分布重塑(做随机采样用)
基类:LogitsWarper,作用缩放logits、改变概率分布:
TemperatureLogitsWarper:温度系数 t,t越小越确定,越大越随机TopPLogitsWarper:核采样,累积概率截断TopKLogitsWarper:只保留概率最高K个tokenTypicalLogitsWarper:典型采样EpsilonLogitsWarper:epsilon截断采样
4. StoppingCriteria 停止判定器
控制什么时候终止解码循环,放入StoppingCriteriaList:
MaxLengthCriteria:达到最大token长度停止EosTokenCriteria:遇到EOS token停止StopStringCriteria:匹配指定字符串停止(需processor配合)
5. GenerationConfig 生成参数配置类
GenerationConfig统一管理所有超参,替代零散传参:
fromtransformersimportGenerationConfig gen_cfg=GenerationConfig(max_new_tokens=512,temperature=0.7,top_p=0.95,repetition_penalty=1.1,do_sample=True,num_beams=1)model.generate(**inputs,generation_config=gen_cfg)6. 极简一句话区分两层职责
- Modeling层(modeling):只管输入张量→logits+KV缓存的神经网络计算,纯前向,不知道什么是采样、beam、循环;
- Generation层(generation):调用modeling的forward做循环迭代解码、搜索采样、缓存更新、终止判断,是上层调度器。
三、关键联动函数调用链路(一次generate完整栈)
model.generate() ├─ 初始化输入 → model.prepare_inputs_for_generation() ├─ 循环解码每一步: │ ├─ model.forward() 【modeling底层前向】 │ ├─ LogitsProcessorList() 修正logits │ ├─ LogitsWarperList() 缩放概率分布 │ ├─ 贪心/beam/采样选出next_token │ ├─ model._update_model_kwargs_for_generation() 更新KV、mask、pos_id │ └─ model._reorder_cache() beam场景缓存重排 └─ StoppingCriteria 判断退出循环transformers 完整 Pipeline 任务 + 核心 Utils 工具类/函数大全
一、全部内置 pipeline 任务(直接pipeline("task_name"))
1. 文本类 NLP 任务
fromtransformersimportpipeline| 任务字符串 | 任务名称 | 底层模型类 | 说明 |
|---|---|---|---|
text-classification | 文本分类 | AutoModelForSequenceClassification | 情感分析、二分类、多分类、毒性检测 |
sentiment-analysis | 情感分析 | 同上 | 分类子集,正负向 |
zero-shot-classification | 零样本分类 | AutoModelForSequenceClassification | 不用训练,自定义标签分类 |
text-generation | 文本生成/对话 | AutoModelForCausalLM | GPT/Llama/Qwen/ChatGLM 续写、问答 |
conversational | 对话机器人 | AutoModelForCausalLM | 带历史上下文多轮对话 |
summarization | 文本摘要 | AutoModelForSeq2SeqLM | T5/BART/PEGASUS |
translation_xx_to_yy | 机器翻译 | AutoModelForSeq2SeqLM | translation_en_to_zh、zh_to_en |
question-answering | 抽取式问答 | AutoModelForQuestionAnswering | 上下文抽取答案 |
fill-mask | 掩码填空 | AutoModelForMaskedLM | BERT/RoBERTa 完形填空 |
token-classification | 实体识别NER | AutoModelForTokenClassification | 人名、地名、组织机构、标签抽取 |
named-entity-recognition | NER | 同上 | 别名 |
feature-extraction | 句向量抽取 | AutoModel | 获取hidden_states做语义向量、聚类 |
2. 视觉 CV 任务
| 任务名 | 说明 |
|---|---|
image-classification | 图片分类 ViT/Swin |
image-segmentation | 图像分割(语义/实例/全景) |
object-detection | 目标检测 DETR |
depth-estimation | 深度估计 |
image-to-text | 图片字幕、看图说话 BLIP/BLIP2 |
image-to-image | 图像到图像(超分、风格化,依赖diffusers) |
3. 音频 Audio 任务
| 任务名 | 说明 |
|---|---|
automatic-speech-recognition | ASR语音转文字 Whisper/Wav2Vec2 |
audio-classification | 音频分类、环境音识别 |
text-to-speech | TTS语音合成 SpeechT5 |
4. 多模态文档、特殊任务
| 任务名 | 用途 |
|---|---|
document-question-answering | 文档图片OCR+问答 LayoutLM |
visual-question-answering | VQA视觉问答 BLIP2/LLaVA |
table-question-answering | 表格问答 |
5. pipeline 通用参数高频用法
# 示例qa_pipe=pipeline("question-answering",model="bert-base-chinese",device=0)pipe=pipeline("text-generation",model="Qwen2-7B-Instruct",device_map="auto")二、utils 工具模块(transformers.utils高频工具)
1. 工具包导入入口
fromtransformersimportutils# 或按需导入fromtransformers.utilsimportlogging,check_min_version,send_example_telemetry2. 日志工具 logging(最常用)
logger=logging.get_logger(__name__)logging.set_verbosity_error()# 只报错,屏蔽警告logging.set_verbosity_warning()logging.disable_progress_bar()# 关闭下载进度条3. 版本校验
check_min_version("4.45.0")# 低于该版本直接抛异常4. 环境、硬件检测工具
fromtransformers.utilsimport(is_torch_available,is_torch_cuda_available,is_torch_bf16_available,is_flash_attn_2_available,is_bitsandbytes_available,is_accelerate_available,is_apex_available,is_safetensors_available,torch_version,get_torch_device,)用途:自动判断是否可以开启BF16、FlashAttention2、4bit量化、safetensors加载。
5. 模型权重/文件工具
fromtransformers.utilsimport(cached_file,# 从缓存/hub拉取文件extract_commit_hash,find_in_cache,has_file,SAFE_WEIGHTS_INDEX_NAME,WEIGHTS_INDEX_NAME)6. 分布式、训练工具
fromtransformers.utilsimport(is_deepspeed_available,is_torch_xla_available,is_mpi_available,is_torch_distributed_available,get_rank,get_world_size,is_main_process,# 判断是否主进程打印日志)7. 安全、序列化工具
fromtransformers.utilsimport(secure_hash,strtobool,flatten_dict,nested_update,ModelOutput,# 统一输出容器(和CausalLMOutput同源))8. 迁移加速工具(绑定accelerate)
fromtransformers.utils.bitsandbytesimport(replace_with_bnb_linear,set_module_quantized_tensor_to_device)# 4/8bit量化底层替换Linear层工具9. 其他零散 utils 子模块
transformers.utils.hub:Hugging Hub 下载、权限、令牌登录login()transformers.utils.dummy_pt_objects:动态懒加载,避免没装torch报错transformers.utils.generic:add_start_docstrings装饰器,给函数加文档注释
三、除了 utils,配套高频辅助模块(经常和pipeline/model混用)
1. Auto 自动加载族(不算utils但必用)
AutoModel/AutoTokenizer/AutoConfig/AutoProcessor/AutoFeatureExtractor2. 数据处理 tokenizers / processors
DataCollatorForLanguageModeling预训练数据padding、maskDataCollatorForSeq2Seq摘要翻译数据整理BatchEncodingtokenizer返回的批量张量封装类
3. 训练器 Trainer 配套工具
fromtransformersimportTrainingArguments,Trainer,EarlyStoppingCallback4. 量化与设备映射工具
fromtransformersimportBitsAndBytesConfig,device_map四、极简总结
- pipeline= 开箱即用封装,20+任务覆盖NLP/CV/Audio/多模态,底层调用AutoModel+Tokenizer+Generation;
- utils= 环境判断、版本校验、硬件检测、日志、分布式、量化底层替换、缓存文件管理,工程化部署大量依赖。