主页

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)\) 其中: ...

阅读更多

高效参数微调

1 Parameter Efficient Fine-Tuning 概述 1.1 全参数微调成本 全参数微调(Full Parameter Fine-Tuning)在大模型上代价极高。 以半精度(FP16/BF16)微调参数规模为 $N$ 的模型为例,显存占用可按如下估算: 权重(Weights):$2 \text{ bytes} \times N$ 权重梯度(Gradients):$2 \text{ bytes} \times N$ 优化器状态(Optimizer States):$2 \times 2 \text{ bytes} \times N = 4 \text{ bytes} \times N$ 激活值(Activations):约为参数量的 $1\s...

阅读更多

LLM模型的量化策略

Low precision numbers in computer 1.1 LLM 的推理与训练成本 以典型大模型为例: Llama-70B 训练成本:39.3M H100-80GB GPU hours 推理显存需求:≈140GB GPU memory DeepSeek V3(671B 参数) 训练成本:2.8M H800 GPU hours 推理显存需求:>400GB GPU memory 大模型的训练与推理都极度依赖 GPU 计算与显存带宽,促使低精度计算成为主流优化方向。 1.2 模型量化(Model Quantizati...

阅读更多

分布式模型并行

1 模型并行训练概念(Model Parallel Training) 模型并行(Model Parallelism):将模型的计算(前向传播 / 反向传播 / 参数更新)分布到多个 GPU 上执行。 2 流水线PP并行 2.1 朴素模型并行(Naïve Model Parallel) 最原始的模型并行方式是:将模型的不同层分布到不同 GPU 上执行。 参考: https://siboehm.com/articles/22/pipeline-parallel-training 在模型定义的时候,针对于层数进行拆分 class ModelParallelResNet50(ResNet): def __init__(self, *args, **kwa...

阅读更多

分布式GPU训练

1 回顾大规模模型训练 1.1 扩大训练规模的策略 1.1.1 切分数据(Data Parallelism) Single Node Multi-GPU DDP(Distributed Data Parallel) Parameter Server 模式 1.1.2 切分模型(Model Parallelism) 模型并行(Model Parallel) 流水线并行(Pipeline Parallel, PP) 张量并行(Tensor Parallel, TP) 要点: 无论是数据并行还是模型并行,都需要跨 GPU 传递梯度(communicate gradients across GPUs)。 2 多卡通信 Multi-GPU Com...

阅读更多