Files
wehub-resource-sync 2aaeece67c
Codestyle Check / Lint (push) Has been cancelled
Codestyle Check / Check bypass (push) Has been cancelled
Pipelines-Test / Pipelines-Test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:37:14 +08:00

88 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![img](https://i-blog.csdnimg.cn/blog_migrate/4757ad5c98d4344547227fc52684bac1.png)
是Qwen2模型中各组件和函数的详细作用说明,按模块分类整理:
### **核心工具函数**
| 函数/常量 | 作用 |
| :----------------------------: | :------------------------------------------------------: |
| `__all__` | 定义模块的公开接口,控制`from module import *`时的可见性 |
| `get_triangle_upper_mask` | 生成上三角因果注意力掩码(防止未来信息泄露) |
| `assign_kv_heads` | 分配Key/Value头的索引(用于GQA/MQA |
| `parallel_matmul` | 并行矩阵乘法(支持张量并行) |
| `scaled_dot_product_attention` | 实现缩放点积注意力核心计算 |
| `masked_fill` | 按掩码填充张量(如将padding位置设为负无穷) |
| `is_casual_mask` | 判断是否为因果注意力掩码 |
| `_make_causal_mask` | 创建因果注意力掩码(考虑padding) |
| `_expand_2d_mask` | 将2D掩码扩展为4D(适配多头注意力) |
| `repeat_kv` | 重复Key/Value头(用于GQA/MQA |
### **归一化层**
| 类/函数 | 作用 |
| :------------: | :------------------------------: |
| `Qwen2RMSNorm` | **RMS归一化层**(替代LayerNorm |
### **位置编码**
| 类/函数 | 作用 |
| :----------------------: | :--------------------------------: |
| `Qwen2RotaryEmbedding` | **旋转位置编码(RoPE)** |
| - `rotate_half` | 旋转向量的后半部分(RoPE核心操作) |
| - `apply_rotary_pos_emb` | 将旋转位置编码应用到注意力分数 |
### **前馈网络**
| 类/函数 | 作用 |
| :--------: | :---------------------------: |
| `Qwen2MLP` | **门控线性单元(GLU)前馈网络** |
### **注意力机制**
| 类/函数 | 作用 |
| :-----------------: | :------------------------------------------------: |
| `Qwen2Attention` | **多头注意力机制** |
| - `__init__` | 初始化Q/K/V投影层、输出层和RoPE |
| - `forward` | 处理输入序列,计算注意力分数并聚合值向量 |
| `Qwen2DecoderLayer` | **Transformer解码层** |
| - `__init__` | 组合自注意力层和前馈网络 |
| - `forward` | 执行:`LN -> Attention -> Add -> LN -> MLP -> Add` |
### **预训练基础**
| 类/函数 | 作用 |
| :--------------------: | :--------------------------------: |
| `Qwen2PretrainedModel` | **预训练模型基类** |
| - `config_class` | 关联的配置类(Qwen2Config |
| - `_get_name_mappings` | 定义参数名称映射(用于加载检查点) |
| - `_init_weights` | 参数初始化策略 |
| - `_get_model_flops` | 计算模型FLOPs |
### **主干模型**
| 类/函数 | 作用 |
| :---------------------------------: | :-----------------------: |
| `Qwen2Model` | **模型主干架构** |
| - `_prepare_decoder_attention_mask` | 生成解码器掩码 |
| - `forward` | 执行完整的Transformer堆栈 |
| `Qwen2ForCausalLM` | **因果语言模型** |
| - `prepare_inputs_for_generation` | 处理生成时的输入格式 |
| - `forward` | 计算语言建模损失 |
### **任务特定头部**
| 类 | 作用 |
| :------------------------------: | :----------------------: |
| `Qwen2LMHead` | 语言模型头部(词表投影) |
| `Qwen2ForSequenceClassification` | 序列分类任务适配 |
| `Qwen2ForTokenClassification` | 标记分类任务适配 |
| `Qwen2SentenceEmbedding` | 句子向量提取 |
### **训练相关**
| 类/函数 | 作用 |
| :-------------------------: | :------------------------: |
| `Qwen2PretrainingCriterion` | 预训练损失计算 |
| `recompute_training_full` | 激活重计算策略 |
| `create_custom_forward` | 为梯度检查点创建自定义前向 |