主页

混合精度训练(AMP):从 FP32 到 BF16

关联阅读:FP8 训练 Float16Module 1. 为什么要降低精度 全精度(FP32)训练的问题: 显存:一个 1B 参数模型,FP32 参数占 4GB,再加上同等量级的梯度和优化器状态,显存开销达 16GB+; 带宽:FP32 比 BF16 多占 2× 带宽,矩阵乘法的吞吐受限于内存带宽时损失明显; 硬件利用率:A100/H100 的 Tensor Core 在 BF16/FP16 下的峰值算力是 FP32 的 2-4×。 2. 数值格式基础 格式 符号 指数 尾数 数值范围 特点 ...

阅读更多

TP 并行的通讯计算

张量并行(Tensor Parallelism, TP)就是为了处理“大权重”。 然而,TP 并非免费的午餐。它的核心矛盾在于:通过切分矩阵降低了显存消耗,却引入了极高频率的计算内通信。 1. 权重的切分(通信算子的引入) 本文涉及的 AllReduce / AllGather / ReduceScatter 通信原语基础:NCCL 通信原语 张量并行的核心是将线性层 $Y = XW$ 进行切分。根据切分方向的不同,引入了不同的通信算子。 1.1 列并行 (Column Parallelism) 列并行将线性层的输出维度切开:把权重 $W$ 按列切分为 \(W = [W_1, W_2]\) 于是每块 GPU 只负责产出一段输出特征: \(Y = XW = [XW_1,...

阅读更多

NCCL 通信原语 (Primitives)

NCCL(NVIDIA Collective Communication Library)提供 GPU 间的集合通信 API,所有操作均与 CUDA Stream 绑定,支持 PCIe、NVLink、InfiniBand 等多种互联。 1 Broadcast 从 root rank 广播数据到所有设备。 ncclResult_t ncclBroadcast(const void* sendbuff, void* recvbuff, size_t count, ncclDataType_t datatype, int root, ncclComm_t comm, cu...

阅读更多

LLM 数据的过滤、去重

本讲:深入 mechanics 过滤(filtering)的算法工具:如何从海量原始数据里找“像目标数据”的子集 过滤的应用:语言识别、质量过滤、毒性过滤 去重(deduplication):从精确重复到近似重复(Bloom filter、MinHash、LSH) 1. 过滤(Filtering)总览:Target vs Raw 基本问题(算法模块) 给定小但高质量的“目标数据” T 与海量“原始数据” R 目标:在 R 中找到一个子集 T',使其“更像” T(但不要求与 T 完全相同) 对过滤算法的要求(Desiderata) 能从 T 泛化:希望 T 与筛出的 T' 不同,但风格/分布相近 极快:必须在巨大 R 上跑,吞吐量是第一约束 ...

阅读更多

预训练数据集巡礼

本文是《LLM 数据的生产》的下篇,对主流预训练数据集做纵览。上篇讲训练阶段框架、法律与后训练数据,见 llm-data-produce。 4. 预训练数据巡礼(Pretraining) 目标:对主流模型的”数据配方”做一次纵览;观察到一个共性:大量工作集中在转换(HTML→文本)、过滤、去重、质量/毒性/PII控制。 4.1 BERT(2019):BooksCorpus + Wikipedia 论文:https://arxiv.org/pdf/1810.04805 BERT 训练数据由两部分组成: BooksCorpus(书籍) Wikipedia 一个容易忽略但很重要的点:BERT 训练时的序列单位是文...

阅读更多

LLM 数据的生产

数据不是凭空出现的,数据管线(收集→转换→过滤→去重→聚合)往往是决定模型能力与差异化的关键。 1. 核心观点:为什么数据最重要? Hot take:训练语言模型时,最重要的是把数据搞对。 一个理由:看公司披露的信息。 开源权重模型(例如 Llama 3)在架构、训练流程上可能比较透明,但对训练数据几乎不公开。 数据保密的两个主要原因: 竞争优势(数据是壁垒) 版权风险(数据来源可能涉及侵权) 历史对比: 基础模型之前:数据工作更多是“重标注”的监督学习。 现在:标注减少,但“筛选、清洗、策划、去重”的工作量依然巨大。 数据...

阅读更多

LLM 评估

0. 主题与结论预告 评测要回答的问题很朴素:在模型已经固定的情况下,它到底“好不好”? 不存在唯一正确的评测;必须先明确你想测量什么,再选择或设计评测。 不要只盯着汇总分数;要回到具体样本与模型预测,理解失败模式。 评测维度不止能力,还包括安全、成本、以及与真实使用场景的贴合度。 必须把“游戏规则”讲清楚:评的是方法,还是模型/系统(含提示词、工具、RAG、脚手架等)。 1. 分数与“氛围感” 1.1 基准分数 图:DeepSeek-R1 基准成绩 引用:DeepSeek-R1 论文(PDF)https://arxiv.org/pdf/2501.12948.pdf ...

阅读更多

LLM 推理(Inference)性能推导

1. 先把推理过程拆开:Prefill vs Decode 同一个模型,在推理时其实有两个阶段: Prefill(预填充):把 prompt 一次性喂进去,算出每层的隐藏状态,同时把 K/V 写入 KV Cache。这个阶段对 prompt 的 token 可并行,形态更像训练,通常更接近 compute-bound。 Decode(生成/解码):自回归逐 token 生成。每一步只处理 “当前 1 个 token”,需要读取(并更新)已有的 KV Cache。这个阶段通常 memory-bound,决定了 tokens/s。 2. 符号约定 2.1 变量的定义 为了方便推导,定义变量: B:batch size(并发请求数) S:上下文长度(pr...

阅读更多