Arganzheng's Blog

stay hungry, stay foolish

预训练:从 tokenizer 到训练配方(总纲)

Pretraining: Tokenizers, Scaling Laws, Data Pipelines and Training Recipes

内容简介 《预训练:从 tokenizer 到训练配方》是一组共五篇正文加一篇总结的系列文章,面向要做或要读懂一次预训练的算法工程师,以及要为一次预训练做容量与 I/O 规划的训练基础设施工程师。第一篇先在一台笔记本上把一次预训练从原始网页到能续写英文的模型完整走一遍,让后面四篇的每个公式与数字都有落脚的地方。它是《现代 LLM 结构:从 GPT-2 到今天的演进》那张成本表的训练侧:那十篇把 token 数、参数量、数据量当作给定的输入,算出模型每一步算多少、读多少、存多少;本系列讲这几个输入各自是怎么定下来的——tokenizer 决定 token 数,scaling law 决定参数量与数据量的分配,数据管线决定有多少 token 可用、怎么配,训练配方决定...

现代 LLM 结构:系列总结与通关自测

Modern LLM Architecture: Series Recap and Final Self-Test

十篇正文从 GPT-2 到今天的模型,回答现代 LLM 改了什么、为什么、花了什么——01 先读 Llama / DeepSeek / VLM 的真实配置并数出参数量,02 把参数量换成算量、字节与时间(后面所有专项共用的尺子),03–10 再逐项展开位置外推、attention 与 KV、长上下文结构、MoE、MTP、投机解码、多模态与浮点格式。量化与 LoRA 已并入算法地图的《高效推理与压缩》与《LoRA 专题》。完整路线见系列总纲。 本文不讲新内容,做三件事:把十篇正文压成一张表并逐篇回顾,把贯穿全系列的几条线拎出来,然后给一套三段式的通关自测——判断与计算、跨篇综合、面试题。各篇末尾的自测检验的是”这一篇读懂了没有”,这里检验的是”十篇能不能连起来用”。...

现代 LLM 结构(10):浮点格式、数值稳定性与混合精度

Floating-Point Formats, Numerical Stability and Mixed Precision

本篇在系列中的位置。 现代 LLM 结构系列的最后一篇。前面所有的字节数都默认每个数 2 字节,本篇讲这 2 字节里存了什么、换成 FP16 / FP8 会在哪里出数值问题、混合精度训练为什么能工作。它是两条线的交接处:训练状态的字节数接到《预训练》与《大规模训练工程》;把权重、激活与 KV 压到更少的位(量化)在算法地图的《高效推理与压缩》第 03 篇起。完整地图见总纲。 《Transformer 原理与实现》的《手搓 GPT(下)》里的 train.py 有两行一直没解释:torch.amp.autocast(dtype=bfloat16) 与 GradScaler(enabled=(dtype == "float16"))——为什么训练要用两种精度、...

现代 LLM 结构(09):多模态:vision encoder 的算量与 image token 的 KV 代价

Multimodal LLMs: The Cost of Vision Encoders and Image Tokens

本篇在系列中的位置。 现代 LLM 结构系列的第九篇。前面讲的都是文本模型的部件与成本,本篇先算输入侧的 vision encoder、connector、image token 与 KV,再看输出侧的离散图像自回归、diffusion、解耦生成和语音 token 成本。本篇只算账;视觉编码、语音、扩散模型与自回归图像生成的完整机制,见算法地图的《多模态》系列。完整地图见总纲。 前九篇讨论的模型只有一种输入:token id。它查一张 embedding 表得到向量,然后进入 decoder。这个前提决定了前面所有的账——参数量、FLOPs、KV cache——都只与 token 数有关,而 token 数由 tokenizer 决定。 多模态模型打破了...

现代 LLM 结构(08):投机解码——草稿、验证与收益条件

Speculative Decoding: Drafts, Verification and When It Pays Off

本篇在系列中的位置。 现代 LLM 结构系列的第八篇。第 02 篇算出 batch 小时 decode 受带宽限制、Tensor Core 大多空闲;第 07 篇的 MTP 模块给了一个现成的草稿来源。本篇不改结构、不改数值格式,改的是解码流程:先猜几个 token,再用一次前向验证,输出分布严格不变。LoRA 不在本系列:参数高效微调的账在《LoRA 专题》。完整地图见总纲。 第二篇算过 decode 的账:batch 为 \(B\) 时权重 GEMM 的算术强度约等于 \(B\),距 H100 的 ridge point 295 差两个数量级,每步时间被”把权重读一遍”钉在 4.8 ms 上,Tensor Core 几乎空转。第七篇的 MTP 模块在训...

现代 LLM 结构(07):MTP——改训练目标而不改主干的多 token 预测

Multi-Token Prediction: Denser Supervision from the Same Data, and a Free Speculative Draft

本篇在系列中的位置。 现代 LLM 结构系列的第七篇,也是 DeepSeek-V3 三处改动(MLA、MoE、MTP)的最后一处。它不改主干,只增加训练时的模块与目标;训练出来的 MTP 模块在推理时可以当投机解码的草稿——下一篇就讲投机解码。完整地图见总纲。 前面几篇改的都是结构:换归一化、换位置编码、换 FFN、换 attention 的 K/V、把 FFN 换成专家。这一篇改的是另一样东西——训练目标。从 GPT-2 起,模型学的一直是”看前文、预测下一个 token”,每个位置只有一个正确答案、一份监督信号。MTP(multi-token prediction,多 token 预测)让每个位置额外预测后面第 2、第 3 个 token:同一批数据,...

现代 LLM 结构(06):MoE 的路由、激活参数量与通信形态

Mixture of Experts: Routing, Active Parameters and Communication Patterns

本篇在系列中的位置。 现代 LLM 结构系列的第六篇。前几篇改的是 attention 与位置,本篇改 FFN:一层换成多个专家加路由,结构上多了什么,成本上又如何拆成总参数、激活参数与 all-to-all 通信。完整地图见总纲。 到这里为止讨论的都是 dense 模型:每个 token 经过每一层时,会用到这一层的全部权重。参数量、每 token 算量、每步 decode 的权重读取量,三者之间只差一个常数——参数量 \(N\) 对应每 token \(2N\) FLOPs,对应每步读 \(N \times \text{bytes/elem}\) 字节。 混合专家(Mixture of Experts,MoE)把这三个数拆开了。DeepSeek-V3...

现代 LLM 结构(05):长上下文的成本与结构手段

The Cost of Long Context: KV Cache, Quadratic Prefill and Structural Remedies

本篇在系列中的位置。 现代 LLM 结构系列的第五篇。第 03 篇讲了位置能不能外推,第 04 篇讲了 KV cache 的账,本篇先算长上下文下 KV cache、prefill 与中间量各涨成什么函数,再比较线性 attention、SSM 与混合架构如何改变历史信息的保存方式。完整地图见总纲。 《现代 LLM 结构(03):位置编码与外推》回答了模型凭什么知道一个 token 在第几个位置、为什么用 8K 训练的 RoPE 模型不能直接推理 32K。但即使位置编码完全没问题,上下文长度 \(s\) 仍然受另一组限制:它同时进入 KV cache 的一次项和 attention 算量的二次项。Llama-3-70B 在 128K 上下文下,每个 tok...

现代 LLM 结构(04):Attention 变体与 KV cache

Attention Variants and the KV Cache: Deriving MHA, GQA, MQA and MLA

本篇在系列中的位置。 现代 LLM 结构系列的第四篇。第 01 篇讲了 GQA 为什么让 K/V 投影变窄,第 02 篇给了算术强度与 KV 读取的账,第 03 篇讲了 RoPE;本篇把 MHA → GQA → MQA → MLA 当作一条结构演进讲全,并同时算它们的成本:KV cache 的字节数、并发上限与 kernel 形态。完整地图见总纲。 第二篇讲了 KV cache 为什么有:causal 结构下旧 token 的 K、V 不随新 token 改变,算一次存下来,decode 每步只算一个 token。这一篇讲它为什么要省:Llama-3-8B 每个 token 的 KV 是 128 KiB,一个 8K 请求 1 GiB,一张 80 GB 的卡...

现代 LLM 结构(03):位置编码与外推

Positional Encoding and Extrapolation: RoPE Wavelengths and Context Extension

本篇在系列中的位置。 现代 LLM 结构系列的第三篇,也是第一个结构专项。第 01 篇只讲到 RoPE 为什么替代位置表,本篇讲位置编码本身:RoPE 的推导与波长、外推(在比训练时更长的序列上推理)为什么失败、各种长度扩展方法改了什么。下一篇的 MLA 要把 RoPE 从低秩压缩里解耦出来,需要这里的结论;上下文拉长之后的成本(KV cache、二次项 attention)与 sliding window 等结构手段在第 05 篇。完整地图见总纲。 《Transformer 原理与实现(01):Transformer 长什么样——从一句话到下一个 token》的换序实验说明 attention 是集合运算——把输入 token 打乱,输出只是跟着换位置—...

×