系统介绍 HuggingFace Transformers 中的 AutoModel 系列自动加载类:按任务类型划分的常用类及其用途、如何根据模型名称自动匹配架构与预训练权重,并给出文本生成等场景的加载与推理代码示例。
AutoModel 系列概述
Hugging Face 为开发者提供了丰富的预训练模型,覆盖各种自然语言处理任务,是一个非常棒的开源社区。为了简化模型的加载和使用,Hugging Face 中的 Transformers 库提供了一系列 AutoModel 类,这些类能够根据模型名称自动选择适当的模型架构和预训练权重。
AutoModel 系列包括多个自动化加载类,每个类对应不同的任务和模型类型。
主要的 **AutoModel** 类及其用途
以下是一些常见的 AutoModel 类及其主要用途,更多的内容可以参考官方文档 AutoModel 类的右边栏:
| 类名 | 描述 | 适用任务 |
|---|---|---|
AutoModel | 加载预训练的基础模型,不包含任何任务特定的头部。 | 特征提取、嵌入生成、自定义任务等 |
AutoModelForCausalLM | 加载带有因果语言建模头部的模型,适用于生成任务。 | 文本生成、对话系统、自动补全等 |
AutoModelForMaskedLM | 加载带有掩码语言建模头部的模型,适用于填空任务。 | 填空任务、句子补全、文本理解等 |
AutoModelForSeq2SeqLM | 加载适用于序列到序列任务的模型,带有编码器-解码器架构。 | 机器翻译、文本摘要、问答系统等 |
AutoModelForQuestionAnswering | 加载适用于问答任务的模型,带有专门的头部用于预测答案的起始和结束位置。 | 问答系统、信息检索等 |
AutoModelForTokenClassification | 加载用于标注任务(如命名实体识别)的模型。 | 命名实体识别、词性标注等 |
AutoModelForSequenceClassification | 加载用于序列分类任务的模型,带有分类头部。 | 文本分类、情感分析等 |
详细说明
AutoModelAutoModelForCausalLMAutoModelForMaskedLMAutoModelForSeq2SeqLMAutoModelForQuestionAnsweringAutoModelForTokenClassificationAutoModelForSequenceClassification实际代码示例
下面是使用不同 AutoModel 类的实际代码示例,展示它们在不同任务中的应用。其中的 Prompt 将使用英文,因为这些模型基本是训练在英文数据集上的。
示例 1:文本生成 (**AutoModelForCausalLM**)
1 | from transformers import AutoTokenizer, AutoModelForCausalLM |

示例 2:填空任务 (**AutoModelForMaskedLM**)
1 | import torch |

示例 3:序列到序列任务 (**AutoModelForSeq2SeqLM**)
1 | from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |

示例 4:问答系统 (**AutoModelForQuestionAnswering**)
1 | from transformers import AutoTokenizer, AutoModelForQuestionAnswering |

示例 5:命名实体识别 (**AutoModelForTokenClassification**)
1 | from transformers import AutoTokenizer, AutoModelForTokenClassification |

示例 6:文本分类 (**AutoModelForSequenceClassification**)
1 | from transformers import AutoTokenizer, AutoModelForSequenceClassification |

示例 7:特征提取 (**AutoModel**)
1 | from transformers import AutoTokenizer, AutoModel |
在这个示例中,我们使用 AutoModel 提取输入文本的特征表示(即最后一层的隐藏状态),这些特征可以用于计算文本之间的相似度、输入到自定义的分类器等。


