主页

Norm 的两种计算方式, LayerNorm vs RMSNorm

1 LayerNorm(层归一化) 1.1 提出背景 LayerNorm 是 Transformer(Vaswani et al., 2017)原始论文中使用的标准归一化方法 1.2 数学定义 \(y = \frac{x - \mathbb{E}[x]}{\sqrt{\mathrm{Var}[x]} + \epsilon} \times \gamma + \beta\) 其中: 对输入 $x \in \mathbb{R}^{d_{model}}$ 的每个样本(token 向量)进行归一化; 减去均值 $\mathbb{E}[x]$; 除以标准差 $\sqrt{\mathrm{Var}[x]}$; 然后再加上可学习的缩放参数 $\gamma$ 和偏置 $\bet...

阅读更多

Norm 的两种结构, Pre-Norm vs Post-Norm

1 Pre-Norm 与 Post-Norm 结构 所有现代的大语言模型(LMs)都采用 Pre-Norm 结构 左图为 Post-Norm 结构,即 LayerNorm 放在残差连接(addition)之后 也就是说,每个子层(Self-Attention 或 FFN)计算完,再执行 LayerNorm。 这种结构最早由 Vaswani et al., 2017《Attention is All You Need》 提出。 右图为 Pre-Norm 结构,即 先归一化,再执行子层计算,最后加残差。 这是后来为了解决深层网络训练时的 梯度消失 / 爆炸问题 而改进的版本 2 Pre-LayerNorm 的提出背景 “Pre-LayerNorm(预归一化)” 是 Tra...

阅读更多

优化器

1 Stochastic Gradient Descent (SGD) 1.1 更新公式: \[\theta_{t+1} = \theta_t - \eta , \nabla_\theta L(\theta_t)\] 其中: 符号 含义 $\theta_t$ 第 $t$ 步的参数(weights) $\eta$ 学习率(learning rate) $\nabla_\theta L(\theta_t)$ 当前参数下损失函数的梯度 含义: 每一步沿梯度反方向更新参数,步长由学...

阅读更多

get_batch:从采样到GPU传输

1 函数目的 def get_batch(data: np.array, batch_size: int, sequence_length: int, device: str) -> torch.Tensor: 该函数的核心功能是从连续序列数据 data 中随机采样若干长度为 sequence_length 的片段,组成一个batch张量并传输到指定设备(通常是GPU)。这是语言模型、RNN、Transformer等模型训练中最常见的mini-batch采样逻辑。 2 随机采样机制 2.1 生成随机起始位置 start_indices = torch.randint(len(data) - sequence_length, (batch_size,)) 这个代码: ...

阅读更多

torch的参数处理化特殊处理

1 nn.Parameter 的作用与原理 代码: w = nn.Parameter(torch.randn(input_dim, output_dim)) 1.1 含义 nn.Parameter 是 PyTorch 的特殊张量类型,用来定义 模型的可训练参数; 当你把它放在 nn.Module 中时,model.parameters() 会自动包含它; 它在反向传播时会自动累积 .grad。 等价于一个带标志的 tensor: param = torch.Tensor(...) param.requires_grad_(True) 1.2 参数与输入维度的关系 input_dim = 16384 output_dim = 32 x = nn.Para...

阅读更多

训练中使用FP8精度

FP8 精度 如图, NVIDIA H100 GPU 原生支持两种 FP8(8-bit floating point) 编码格式: 格式 名称含义 指数位 (E) 尾数位 (M) 数值范围 E4M3 4 位指数,3 位尾数 4 3 [-448, 448] E5M2 5 位指数,2 位尾数 5 2 [-57,344, 57,344] E4M3 与 E5M2 的差异 E4M3:精度更高、范围更小 ...

阅读更多

训练中的显存优化

1 LLM 训练中的显存占用 1.1 DDP 下的显存占用 在 DDP (Distributed Data Parallel) 训练模式下: 1.1.1 主要的显存 每张 GPU 都需要保存一份完整的 模型参数(Model Parameters)、梯度(Gradients) 和 优化器状态(Optimizer States)。 因此总显存开销与 GPU 数量线性相关,难以扩展到更大模型 1.1.2 其他的显存 1.1.2.1 临时缓冲区(Temporary Buffers) 在执行如 梯度 All-Reduce 或 梯度范数计算(Gradient Norm Computation) 时, 系统通常会将所有梯度融合到一个 单一的扁平缓冲区(flattened ...

阅读更多

MoE 模型

1. 引言 Intro 扩展 dense 模型难度越来越大。稀疏模型(Sparse Model)可以在不显著增加训练成本的情况下扩展模型规模。推理阶段仅激活部分参数,因此相比同等参数量的稠密模型,推理速度更快 2. Transformer 中的 MoE 结构 2.1 MoE 模块替换 FFN Transformer 中的 前馈网络(FFN) 替换为以下结构: 多个小专家(Experts):每个专家是一个独立的 FFN; 门控网络(Gating Network):根据输入 token 决定激活哪些专家 2.2 门控与专家计算公式 2.2.1 门控函数 \(G_\sigma(x) = \text{Softmax}(x \cdot W_g)\) 其中: ...

阅读更多