菜单

模型实现

相关源文件

此页面提供了 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

前馈网络(MLP)

大多数 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

模型架构的变体

虽然基本组件相似,但模型在其具体架构上有所不同。以下是一些关键变体:

仅解码器模型 vs 编码器-解码器模型

来源: 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

混合专家 (MoE) 模型

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 文档中每个模型家族的文档。