此页面提供了 Hugging Face Transformers 库中实现的模型架构的概述。它涵盖了模型实现的核心组件、它们的组织方式以及代码库中不同模型架构的结构。
有关使用这些模型进行推理的信息,请参阅 生成系统。有关训练模型详情,请参阅 训练系统。
Transformers 库实现了数百种模型架构,每种都在 src/transformers/models/ 目录中有自己的实现。虽然每种模型都有独特的特性,但它们也共享通用模式和基类,从而在整个库中实现一致的接口。
来源: src/transformers/models/llama/modeling_llama.py320-334 src/transformers/models/mistral/modeling_mistral.py258-271 src/transformers/models/gpt_neox/modeling_gpt_neox.py287-301
大多数基于 transformer 的模型共享相似的组件,尽管在架构上存在差异。以下是大多数模型实现中的关键组件:
每个模型系列都有一个继承自 PreTrainedModel 的基础模型类,它为所有模型提供了通用功能。
来源: src/transformers/models/llama/modeling_llama.py320-346 src/transformers/models/llama/modeling_llama.py477-509 src/transformers/models/mistral/modeling_mistral.py258-284 src/transformers/models/mistral/modeling_mistral.py450-482
注意力机制是 transformer 模型的核心。大多数模型实现了某种形式的自注意力。
来源: src/transformers/models/llama/modeling_llama.py197-264 src/transformers/models/mistral/modeling_mistral.py124-183 src/transformers/models/gemma/modeling_gemma.py191-258
大多数 transformer 模型在每个层中都包含前馈网络(通常称为 MLP)。
来源: src/transformers/models/llama/modeling_llama.py143-156 src/transformers/models/mistral/modeling_mistral.py36-49 src/transformers/models/gemma/modeling_gemma.py69-82
不同的模型使用不同的归一化技术。
来源: src/transformers/models/llama/modeling_llama.py51-69 src/transformers/models/mistral/modeling_mistral.py187-204 src/transformers/models/gpt_neox/modeling_gpt_neox.py197-204
模型使用不同的位置嵌入技术。
来源: src/transformers/models/llama/modeling_llama.py75-106 src/transformers/models/falcon/modeling_falcon.py105-136 src/transformers/models/gpt2/modeling_gpt2.py155-168 src/transformers/models/opt/modeling_opt.py54-79
虽然基本组件相似,但模型在其具体架构上有所不同。以下是一些关键变体:
来源: src/transformers/models/llama/modeling_llama.py197-264 src/transformers/models/gpt2/modeling_gpt2.py155-266
来源: src/transformers/models/llama/modeling_llama.py197-264 src/transformers/models/mistral/modeling_mistral.py124-183 src/transformers/models/falcon/modeling_falcon.py187-246
Mixtral 和 Qwen2-MoE 等模型使用混合专家架构
来源: src/transformers/models/mixtral/modeling_mixtral.py58-140 src/transformers/models/qwen2_moe/modeling_qwen2_moe.py60-88
让我们看看模型实现文件的典型结构
来源: src/transformers/models/llama/modeling_llama.py1-829 src/transformers/models/mistral/modeling_mistral.py1-760
每个模型架构通常实现几个特定任务的类
来源: src/transformers/models/llama/modeling_llama.py477-747 src/transformers/models/mistral/modeling_mistral.py450-760
前向传播是每个模型实现的核心。下面是仅解码器模型的典型流程
来源: src/transformers/models/llama/modeling_llama.py375-471 src/transformers/models/llama/modeling_llama.py510-583 src/transformers/models/mistral/modeling_mistral.py347-444
以下是 Transformers 库中最常用的一些模型家族的表格
| 模型系列 | 架构类型 | 主要功能 | 示例用例 |
|---|---|---|---|
| Llama | 仅解码器 | RoPE、分组查询注意力 | 文本生成、聊天 |
| Mistral | 仅解码器 | 滑动窗口注意力、RoPE | 高效文本生成 |
| GPT-2 | 仅解码器 | 学习到的位置嵌入 | 文本生成 |
| GPT-NeoX | 仅解码器 | 旋转嵌入、并行注意力/MLP | 文本生成 |
| Mixtral | 仅解码器 | 混合专家、滑动窗口 | 高效文本生成 |
| Gemma | 仅解码器 | RoPE、分组查询注意力 | 文本生成 |
| Falcon | 仅解码器 | 多查询注意力、ALiBi | 文本生成 |
| BERT | 仅编码器 | 双向注意力 | 分类、NER |
| T5 | 编码器-解码器 | 相对位置偏置 | 翻译、摘要 |
来源: src/transformers/models/llama/modeling_llama.py1-829 src/transformers/models/mistral/modeling_mistral.py1-760 src/transformers/models/gpt_neox/modeling_gpt_neox.py1-635 src/transformers/models/mixtral/modeling_mixtral.py1-376
库中的许多较新模型都采用模块化实现方法,模型代码从模块化模板生成
来源: src/transformers/models/mistral/modeling_mistral.py1-6 src/transformers/models/qwen2/modeling_qwen2.py1-6 src/transformers/models/phi3/modeling_phi3.py1-6
模型实现与其他 Transformers 库系统集成
来源: src/transformers/models/llama/modeling_llama.py28-45 src/transformers/models/mistral/modeling_mistral.py13-29 src/transformers/models/llama/modeling_llama.py477-509
Transformers 库中的模型实现遵循一致的模式,同时适应每个模型家族独特的架构特征。这种一致性使得可以通过统一的 API 轻松使用不同的模型,同时在需要时还可以访问模型特定的功能。
有关特定模型架构的更多详细信息,请参阅 Hugging Face 文档中每个模型家族的文档。