LLM的decoding
1. 序列解码(Sequence Decoding )概览
大语言模型在生成文本时,需要从词汇表中逐个选择 token 来组成完整的序列。
核心问题是:如何选择最优的 token 序列。
1.1 四种主要策略
1.1.1 朴素方案:穷举搜索(Exhaustive Search)
思路:尝试所有可能的 token 组合,找到概率最高的序列
复杂度:
\(O(V^N)\)
其中
$V$:词汇表大小(通常几万到十几万)
$N$:序列长度
示例:词汇表 5 万,生成 10 个 token → (50000^{10}) 种可能
结论:完全不可行,计算成本天文数字。
1.1.2 贪心解码(Gr...
LLM的tokenizer
tokenizer 有多种计算token,进行转换的方式
1. Byte Pair Encoding (BPE)
1.1 BPE 算法概述
BPE 最早是为数据压缩提出的算法, 其核心思想是:
统计字节(或字符)对的频率
把频率最高的一对替换成一个新的”符号”
重复这个过程,不断合并频繁出现的对,形成越来越大的”词典”
需要注意的是,BPE 拆分的子单词不一定都具有语义意义
1.2 BPE 词表构建流程
1.2.1 初始化词表(Initialize vocabulary)
一开始,BPE 的词表只包含:
所有单个字符(例如英文字母 a-z,标点,空格等)
一个词尾标志(end-of-word symbol,通常用 </w> 或 ▁...
MFU估算
1. 浮点计算基础概念
1.1 FLOP(Floating Point Operation)
FLOP 表示一次基本的浮点运算,例如加法 $x + y$ 或乘法 $x \times y$。
1.2 FLOPs
FLOPs 表示“总共做了多少浮点运算”,即计算工作量的度量。
例如,训练 GPT-3 的总计算量约为:
\[3.14 \times 10^{23} \text{ FLOPs}\]
1.3 FLOP/s 或 FLOPS
FLOP/s(FLOPS) 表示“每秒能执行多少次浮点运算”,是硬件的速度指标。
例如:
NVIDIA A100:约 312 TFLOP/s
NVIDIA H100:约 1979 TFLOP/s(带稀疏性) ≈ 989 TFLOP/s...
Energon 多模态数据加载框架
1 主要功能
基于 WebDataset 的存储格式
采用 WebDataset 作为底层数据集存储方案,支持高效的顺序读取和分布式访问。
超大规模数据集处理
针对多机多卡训练场景深度优化,尤其DP并行,能够处理 PB 级别的超大规模数据集。
数据集混合
支持将多个异构数据集按权重混合或拼接,适用于多任务学习和课程学习场景。
状态管理
提供状态保存与恢复机制,确保训练可中断、可复现、可继续,保证数据迭代的完全一致性。
多模态数据支持
在同一训练流程中处理文本、图像、视频、音频等多种模态数据。
2 基础接口与基础组件
2.1 基础接口
2.2.1 单条数据加载
from megatron.energon import get_train_dataset, get_load...
FSDP 并行策略
1 训练过程中显存的组成
在大模型训练中,显存大致被三类数据占用:
P (Parameters):模型参数
G (Gradients):反向传播时的梯度
OS (Optimizer States):优化器的状态(如 Adam 的动量和方差信息)
典型的 Adam 优化器中,这三者的比例大致为 1 : 1 : 6
之所以 Optimizer States 占比高,是因为 Adam 需要为每个参数维护一阶矩(动量)和二阶矩(方差)的额外信息
例如,在 PyTorch 中优化器的典型构造如下:
optimizer = optim.Adam(model.parameters(), lr=0.001)
反向传播与参数更新的过程:
loss.backward...
dp 与 ddp 数据并行
1 DP (DataParallel) 并行
1.1 使用方式
PyTorch 最原始的 DP 并行实现非常简单:
import torch.nn as nn
# 简单的DP使用
model = nn.DataParallel(model, device_ids=[0, 1, 2, 3])
参数说明:
device_ids: 指定使用的 GPU 设备,不指定时默认使用所有可见 GPU
output_device: 默认是 device_ids[0](主卡),很多关键工作发生在这张卡上
1.2 原理解析
1.2.1 Parameter Server 概念
单机多卡的 DP 并行和分布式训练中的 Parameter Server 架构类似。
相关...
为什么相比于SFT训练,RL训练更依赖推理引擎
在大模型的训练中,常见的 RL(Reinforcement Learning)训练框架往往对推理引擎(如 vLLM、SGLang)依赖更强,甚至会将其作为安装和运行的必选组件。
核心原因很简单:SFT 在训练时只需要一次性计算 logits(Prefill),而 RL 的 rollout 阶段必须走完整的 Prefill + Decode 推理流程
1. Prefill vs Decode
在 Transformer 推理中,我们可以把计算过程分为两种模式:
阶段
输入内容
输出内容
并行性
Prefill
一次性输入整个序列(prompt + 已知目标...
IB 原生 RDMA 与 以太网卡 + RoCE 对比
1. IB 原生 RDMA 方案(InfiniBand 网卡)
IB = InfiniBand,是一种高速、低延迟、高带宽的数据中心互连技术,原生支持 RDMA,无需额外协议封装。
典型带宽:40Gbps、100Gbps、200Gbps 及更高。
主要应用于 高性能计算(HPC)、人工智能训练集群、分布式存储 等对延迟和吞吐极度敏感的场景。
常见 IB 网卡型号:
Mellanox ConnectX-6 (CX6)
Mellanox ConnectX-7 (CX7)
NVIDIA BlueField 系列 DPU(带 IB 接口)
优势:
原生 RDMA:直接在节点间读写内存,绕过 CPU,延迟可达微秒级。
带宽利用率极高,吞吐稳定。
在 HPC、A...
共计 167 篇文章,21 页。