transformers速查表
2026/7/31 13:26:33 网站建设 项目流程

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)

四、补充关键说明

  1. transformers只是模型架构代码:权重需要从Hugging Face Hub下载,框架只定义网络结构;
  2. 国产热门全覆盖:Qwen、ChatGLM、InternLM、Baichuan、Yi全部原生支持;
  3. MoE稀疏模型:Mixtral、GLM4-MoE可直接加载;
  4. 量化支持:配合bitsandbytesaccelerate实现4/8bit加载;
  5. 不包含:SD扩散模型主干、GAN、RLHF训练逻辑,这些在diffuserstrl库。

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+logits
  • AutoModelForTokenClassification: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解码器联合forward
  • AutoModelForImageClassification:ViT/Swin图像分类

3. Modeling层关键底层函数/属性(写模型必看)

  1. forward()
    底层张量计算核心,不做任何采样/解码,只输出原始logits和KV缓存,纯数学运算。
    入参高频:
    • past_key_values:KV缓存,增量解码核心
    • use_cache:是否返回KV缓存,generation依赖开启
    • output_attentions/output_hidden_states:是否返回中间注意力、隐层
  2. _update_model_kwargs_for_generation()
    Model层给Generation层做参数迭代更新的钩子函数,每次生成1个token后,更新past_key_valuesattention_maskposition_ids,几乎所有LLM都重写此方法。
  3. prepare_inputs_for_generation()
    超级重要:给定上一轮outputs,裁剪input_ids、拼装KV缓存、构造下一轮模型输入张量,是连接modeling和generation的桥梁。
  4. _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()

完整执行链路:

  1. 预处理输入 → 调用model.prepare_inputs_for_generation初始化首轮输入
  2. 进入迭代解码循环(while未到eos/max_length)
  3. 每一步调用model.forward()拿到logits & past_key_values
  4. 调用采样策略函数选出下一个token id
  5. 更新KV缓存、拼接新token,循环直到终止条件
  6. 后处理去掉padding、返回token ids

2. GenerationMixin 核心公共方法(可直接调用)

主入口
  1. generate():通用生成入口,支持greedy/beam/top-p/top-k/contrastive等所有策略
单独算法封装方法(generate内部调用,也可手动调用)
  1. greedy_search():贪心搜索
  2. beam_search():普通束搜索
  3. beam_sample():带采样的束搜索
  4. group_beam_search():分组束搜索(Diverse Beam)
  5. constrained_beam_search():约束生成(指定必须出现某些token)
  6. contrastive_search():对比搜索
  7. dola_search():DoLa深度层增强搜索(新版加入)
辅助工具方法
  1. compute_transition_scores():计算每个生成token的对数概率
  2. _get_logits_processor():组装logits处理器列表
  3. _get_stopping_criteria():组装停止条件(max_len/eos/pad)
  4. _get_warper():组装温度、topk/topp采样扰动器

3. 生成两大核心组件(LogitsProcessor + LogitsWarper)

(1)LogitsProcessor 逻辑修正(每一步对logits硬约束,不改变分布形态)

基类:LogitsProcessor,批量放入LogitsProcessorList循环执行
常用内置处理器:

  • ForcedBOSLogitsProcessor:强制开头token
  • ForcedEOSTokenLogitsProcessor:达到长度强制输出EOS
  • NoRepeatNGramLogitsProcessor:禁止n-gram重复(经典防重复)
  • RepetitionPenaltyLogitsProcessor:重复惩罚
  • MinLengthLogitsProcessor:最小生成长度,没到长度屏蔽EOS
  • PrefixConstrainedLogitsProcessor:前缀约束生成
  • HammingDiversityLogitsProcessor:beam内部多样性约束
(2)LogitsWarper 概率分布重塑(做随机采样用)

基类:LogitsWarper,作用缩放logits、改变概率分布:

  • TemperatureLogitsWarper:温度系数 t,t越小越确定,越大越随机
  • TopPLogitsWarper:核采样,累积概率截断
  • TopKLogitsWarper:只保留概率最高K个token
  • TypicalLogitsWarper:典型采样
  • 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. 极简一句话区分两层职责

  1. Modeling层(modeling):只管输入张量→logits+KV缓存的神经网络计算,纯前向,不知道什么是采样、beam、循环;
  2. 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文本生成/对话AutoModelForCausalLMGPT/Llama/Qwen/ChatGLM 续写、问答
conversational对话机器人AutoModelForCausalLM带历史上下文多轮对话
summarization文本摘要AutoModelForSeq2SeqLMT5/BART/PEGASUS
translation_xx_to_yy机器翻译AutoModelForSeq2SeqLMtranslation_en_to_zh、zh_to_en
question-answering抽取式问答AutoModelForQuestionAnswering上下文抽取答案
fill-mask掩码填空AutoModelForMaskedLMBERT/RoBERTa 完形填空
token-classification实体识别NERAutoModelForTokenClassification人名、地名、组织机构、标签抽取
named-entity-recognitionNER同上别名
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-recognitionASR语音转文字 Whisper/Wav2Vec2
audio-classification音频分类、环境音识别
text-to-speechTTS语音合成 SpeechT5

4. 多模态文档、特殊任务

任务名用途
document-question-answering文档图片OCR+问答 LayoutLM
visual-question-answeringVQA视觉问答 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_telemetry

2. 日志工具 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.genericadd_start_docstrings装饰器,给函数加文档注释

三、除了 utils,配套高频辅助模块(经常和pipeline/model混用)

1. Auto 自动加载族(不算utils但必用)

AutoModel/AutoTokenizer/AutoConfig/AutoProcessor/AutoFeatureExtractor

2. 数据处理 tokenizers / processors

  • DataCollatorForLanguageModeling预训练数据padding、mask
  • DataCollatorForSeq2Seq摘要翻译数据整理
  • BatchEncodingtokenizer返回的批量张量封装类

3. 训练器 Trainer 配套工具

fromtransformersimportTrainingArguments,Trainer,EarlyStoppingCallback

4. 量化与设备映射工具

fromtransformersimportBitsAndBytesConfig,device_map

四、极简总结

  1. pipeline= 开箱即用封装,20+任务覆盖NLP/CV/Audio/多模态,底层调用AutoModel+Tokenizer+Generation;
  2. utils= 环境判断、版本校验、硬件检测、日志、分布式、量化底层替换、缓存文件管理,工程化部署大量依赖。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询