以下是针对Llama模型架构中各组件的功能解析,按模块分类说明其核心作用: ------ ### **核心工具函数** | 函数/常量 | 作用 | 与Qwen2的差异 | | :----------------------------: | :-----------------------------------: | :--------------------: | | `swiglu` | 实现SwiGLU激活函数:`x * silu(gate)` | Qwen2使用标准GLU | | `rms_norm_fused` | 启用融合的RMSNorm计算(CUDA优化) | 实现相同但配置参数不同 | | `__all__` | 定义模块的公开接口 | - | | `_get_interleave` | 生成交错注意力头索引(用于长序列) | Llama特有 | | `build_alibi_tensor` | 构建ALiBi位置偏置张量(相对位置编码) | Qwen2未使用 | | `get_triangle_upper_mask` | 生成因果上三角掩码 | 实现逻辑相同 | | `assign_kv_heads` | 分配KV头的索引(支持GQA/MQA) | - | | `parallel_matmul` | 并行矩阵乘法(张量并行) | - | | `scaled_dot_product_attention` | 核心注意力计算 | Llama支持更多掩码类型 | | `_make_causal_mask` | 动态生成因果掩码(考虑padding) | Qwen2更简化 | ### **归一化层** | 类/函数 | 作用 | 差异点 | | :------------: | :-------------------: | :-------------: | | `LlamaRMSNorm` | 带融合优化的RMS归一化 | 与Qwen2实现相同 | ### **位置编码(核心差异)** | 类 | 作用 | 特性 | | :-------------------------------------: | :------------------------: | :---------------: | | `LlamaRotaryEmbedding` | 基础RoPE实现 | - | | `LlamaLinearScalingRotaryEmbedding` | 线性缩放RoPE(扩展上下文) | Qwen2无此变体 | | `LlamaNTKScalingRotaryEmbedding` | NTK-aware缩放RoPE | 动态调整高频/低频 | | `LlamaDynamicNTKScalingRotaryEmbedding` | 动态NTK缩放(训练自适应) | Llama特有 | | `Llama3RotaryEmbedding` | Llama3专用RoPE | 改进的旋转策略 | ### **前馈网络** | 类 | 作用 | 差异 | | :--------: | :-----------------: | :------------: | | `LlamaMLP` | 使用SwiGLU的门控FFN | Qwen2用普通GLU | ### **注意力机制** | 类 | 核心改进 | 说明 | | :-----------------: | :----------------------------------------: | :------------: | | `LlamaAttention` | - 多版本RoPE支持 - ALiBi融合 - 动态NTK缩放 | 比Qwen2更复杂 | | `LlamaDecoderLayer` | 深度优化层实现 | 支持梯度检查点 | ### **预训练基础** | 类 | 关键功能 | 扩展性 | | :--------------------: | :--------------------------: | :-----------: | | `LlamaPretrainedModel` | - 多设备加载 - FLOPs计算工具 | 比Qwen2更完善 | ### **任务模块** | 类 | 用途 | 特色 | | :----------------: | :------------: | :---------------: | | `LlamaForCausalLM` | 语言建模 | 支持静态图导出 | | `ConcatMaskedLoss` | 多任务损失合并 | 处理padding的梯度 |