transformers速查表

📅 2026/7/31 13:26:37
transformers速查表
Hugging Face transformers 内置集成模型大全一、按任务大类划分最常用1. 自然语言理解/生成LLM大语言模型1Decoder-only 自回归生成模型对话、续写、写作GPT系列GPT2、GPTNeo、GPTNeoX、GPTJ、GPTBigCodeLLaMA家族LLaMA1/2、Llama3、CodeLlama、OpenLLaMAMistral家族Mistral-7B、Mixtral 8x7B MoEQwen通义千问Qwen1.5、Qwen2、Qwen-VL多模态Yi零一万物Yi-6B/9B/34BGLM家族GLM2、GLM3、ChatGLM、GLM4BLOOM/BLOOMZ多语言大模型FalconTII开源大模型Phi系列微软Phi-1/2/3小参数强能力模型Baichuan百川Baichuan2InternLM书生浦语InternLM1/2Aquila智源大模型2Encoder-only 编码器模型分类、语义向量、NER双向编码不做生成主打特征抽取BERT、RoBERTa、DistilBERT、ALBERT、MobileBERTDeBERTa、ELECTRAChinese-BERT、MacBERT中文优化XLM-RoBERTa跨语言3Encoder-Decoder 编解码模型翻译、摘要、复述T5、T5-v1.1、Flan-T5、mT5多语言T5BART、MBART多语言BARTPegasus摘要专用ProphetNet2. 多模态模型文本图像/音频图文理解/图文生成CLIP文本图像对比检索BLIP、BLIP-2图像描述、视觉问答VQALLaVA视觉大模型VLMQwen-VL、InternLM-XComposer国产多模态FlamingoDeepMind多模态PixtralMistral多模态ViT-GPT2简易图文生成图像生成类需配合diffuserstransformers仅加载编码器Stable Diffusion 文本编码器CLIPTextModelDALL·E 相关文本编码模块3. 视觉纯CV模型图像分类、检测、分割全部可用AutoModel加载ViTVision Transformer、DeiT、BEiT、MAESwin Transformer、ConvNeXtDETR、Deformable DETR目标检测SegFormer、UperNet语义分割DINOv2视觉特征提取4. 音频模型语音识别、语音合成、声音分类语音ASR识别Wav2Vec2、WavLM、HuBERTWhisperOpenAI多语言语音转文字SpeechT5TTS语音合成SpeechT5、VITS通过transformers加载权重音频分类ASTAudio Spectrogram Transformer5. 时序/其他小众模型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_namemeta-llama/Meta-Llama-3-8B-InstructtokenizerAutoTokenizer.from_pretrained(model_name)modelAutoModelForCausalLM.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. 基类父类所有模型都继承1PreTrainedModel所有模型顶层父类定义通用能力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()梯度检查点节省显存2EncoderDecoderModelT5/BART等编解码模型基类封装encoderdecoder联合前向。2. 按任务划分的建模实现类带ForXXX后缀最常用全部在modeling_xxx.py中实现本质是封装forward输出loss/logits2.1 自回归LLMDecoder-onlyAutoModelForCausalLM对应类LlamaForCausalLM.forward(input_ids, attention_mask, labelsNone)labels不为None时自动计算CrossEntropy损失训练用返回CausalLMOutputWithPastlogits、past_key_values、loss、hidden_states、attentions核心内部算子modeling代码里硬写词嵌入层Embedding每层TransformerBlockSelfAttentionRoPE、KV缓存、Sliding Window、MLP、RMSNorm/LayerNormLM头lm_headhidden_states - vocab logits2.2 编码器理解模型BERT/RoBERTaAutoModelForSequenceClassification文本分类forward返回分类losslogitsAutoModelForTokenClassificationNER实体抽取AutoModelForQuestionAnswering抽取式QAstart/end logits2.3 编解码生成模型T5/BARTAutoModelForSeq2SeqLMforward入参input_ids(编码器)、decoder_input_ids(解码器)、labels内部执行encoder编码 - decoder自回归解码 - 计算seq2seq损失2.4 多模态视觉建模类AutoModelForVision2SeqLLaVA/BLIP2视觉编码器LLM解码器联合forwardAutoModelForImageClassificationViT/Swin图像分类3. Modeling层关键底层函数/属性写模型必看forward()底层张量计算核心不做任何采样/解码只输出原始logits和KV缓存纯数学运算。入参高频past_key_valuesKV缓存增量解码核心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直接读取logitsCausalLMOutputWithPastdecoder-only输出带KVSeq2SeqLMOutput编解码模型输出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 ids2. GenerationMixin 核心公共方法可直接调用主入口generate()通用生成入口支持greedy/beam/top-p/top-k/contrastive等所有策略单独算法封装方法generate内部调用也可手动调用greedy_search()贪心搜索beam_search()普通束搜索beam_sample()带采样的束搜索group_beam_search()分组束搜索Diverse Beamconstrained_beam_search()约束生成指定必须出现某些tokencontrastive_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 LogitsWarper1LogitsProcessor 逻辑修正每一步对logits硬约束不改变分布形态基类LogitsProcessor批量放入LogitsProcessorList循环执行常用内置处理器ForcedBOSLogitsProcessor强制开头tokenForcedEOSTokenLogitsProcessor达到长度强制输出EOSNoRepeatNGramLogitsProcessor禁止n-gram重复经典防重复RepetitionPenaltyLogitsProcessor重复惩罚MinLengthLogitsProcessor最小生成长度没到长度屏蔽EOSPrefixConstrainedLogitsProcessor前缀约束生成HammingDiversityLogitsProcessorbeam内部多样性约束2LogitsWarper 概率分布重塑做随机采样用基类LogitsWarper作用缩放logits、改变概率分布TemperatureLogitsWarper温度系数 tt越小越确定越大越随机TopPLogitsWarper核采样累积概率截断TopKLogitsWarper只保留概率最高K个tokenTypicalLogitsWarper典型采样EpsilonLogitsWarperepsilon截断采样4. StoppingCriteria 停止判定器控制什么时候终止解码循环放入StoppingCriteriaListMaxLengthCriteria达到最大token长度停止EosTokenCriteria遇到EOS token停止StopStringCriteria匹配指定字符串停止需processor配合5. GenerationConfig 生成参数配置类GenerationConfig统一管理所有超参替代零散传参fromtransformersimportGenerationConfig gen_cfgGenerationConfig(max_new_tokens512,temperature0.7,top_p0.95,repetition_penalty1.1,do_sampleTrue,num_beams1)model.generate(**inputs,generation_configgen_cfg)6. 极简一句话区分两层职责Modeling层modeling只管输入张量→logitsKV缓存的神经网络计算纯前向不知道什么是采样、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文本生成/对话AutoModelForCausalLMGPT/Llama/Qwen/ChatGLM 续写、问答conversational对话机器人AutoModelForCausalLM带历史上下文多轮对话summarization文本摘要AutoModelForSeq2SeqLMT5/BART/PEGASUStranslation_xx_to_yy机器翻译AutoModelForSeq2SeqLMtranslation_en_to_zh、zh_to_enquestion-answering抽取式问答AutoModelForQuestionAnswering上下文抽取答案fill-mask掩码填空AutoModelForMaskedLMBERT/RoBERTa 完形填空token-classification实体识别NERAutoModelForTokenClassification人名、地名、组织机构、标签抽取named-entity-recognitionNER同上别名feature-extraction句向量抽取AutoModel获取hidden_states做语义向量、聚类2. 视觉 CV 任务任务名说明image-classification图片分类 ViT/Swinimage-segmentation图像分割语义/实例/全景object-detection目标检测 DETRdepth-estimation深度估计image-to-text图片字幕、看图说话 BLIP/BLIP2image-to-image图像到图像超分、风格化依赖diffusers3. 音频 Audio 任务任务名说明automatic-speech-recognitionASR语音转文字 Whisper/Wav2Vec2audio-classification音频分类、环境音识别text-to-speechTTS语音合成 SpeechT54. 多模态文档、特殊任务任务名用途document-question-answering文档图片OCR问答 LayoutLMvisual-question-answeringVQA视觉问答 BLIP2/LLaVAtable-question-answering表格问答5. pipeline 通用参数高频用法# 示例qa_pipepipeline(question-answering,modelbert-base-chinese,device0)pipepipeline(text-generation,modelQwen2-7B-Instruct,device_mapauto)二、utils 工具模块transformers.utils高频工具1. 工具包导入入口fromtransformersimportutils# 或按需导入fromtransformers.utilsimportlogging,check_min_version,send_example_telemetry2. 日志工具 logging最常用loggerlogging.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. 迁移加速工具绑定acceleratefromtransformers.utils.bitsandbytesimport(replace_with_bnb_linear,set_module_quantized_tensor_to_device)# 4/8bit量化底层替换Linear层工具9. 其他零散 utils 子模块transformers.utils.hubHugging Hub 下载、权限、令牌登录login()transformers.utils.dummy_pt_objects动态懒加载避免没装torch报错transformers.utils.genericadd_start_docstrings装饰器给函数加文档注释三、除了 utils配套高频辅助模块经常和pipeline/model混用1. Auto 自动加载族不算utils但必用AutoModel/AutoTokenizer/AutoConfig/AutoProcessor/AutoFeatureExtractor2. 数据处理 tokenizers / processorsDataCollatorForLanguageModeling预训练数据padding、maskDataCollatorForSeq2Seq摘要翻译数据整理BatchEncodingtokenizer返回的批量张量封装类3. 训练器 Trainer 配套工具fromtransformersimportTrainingArguments,Trainer,EarlyStoppingCallback4. 量化与设备映射工具fromtransformersimportBitsAndBytesConfig,device_map四、极简总结pipeline 开箱即用封装20任务覆盖NLP/CV/Audio/多模态底层调用AutoModelTokenizerGenerationutils 环境判断、版本校验、硬件检测、日志、分布式、量化底层替换、缓存文件管理工程化部署大量依赖。