Arganzheng's Blog

stay hungry, stay foolish

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

Floating-Point Formats, Numerical Stability and Mixed Precision

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

现代 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 换成专家。这一篇改的是另一样东西——训练目标。从第二篇起,模型学的一直是”看前文、预测下一个 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 等结构手段在第 01 篇。完整地图见总纲。 《Transformer 原理与实现(01):Transformer 长什么样——从一句话到下一个 token》的换序实验说明 attention 是集合运算——把输入 token 打乱,输出只是跟着换位置—...

现代 LLM 结构(02):前向的算量与访存量

FLOPs, Bytes and Roofline: Prefill versus Decode

本篇在系列中的位置。 现代 LLM 结构系列的第二篇,是后面所有专项共用的成本工具箱。第 01 篇数出了参数量,本篇把每个矩阵乘换成 FLOPs 与字节数,再放到 Roofline 上换算成时间:prefill 与 decode 为什么不同、decode 为什么受带宽限制、时间下界怎么算。第 03 篇起的每个专项都只算自己相对基线的增量,不再重讲这些定义。第八节「训练侧:激活值与 MFU」只在训练相关的篇目用到,第一遍可以跳过。完整地图见总纲。 本篇开始算账。第一篇把一个 decoder-only Transformer 拆到了能数出每一个参数的粒度,结论可以压缩成一个公式: \[N \approx L \cdot \left[ d \cdot (d +...

现代 LLM 结构(01):从 GPT-2 到 Llama——五处改动与参数量

Modern LLM Architecture (01): Five Changes from GPT-2 to Llama and Parameter Counting

本篇在系列中的位置。 现代 LLM 结构的第 01 篇,承接系列总纲,从 GPT-2 走到 Llama,先认出现代模型改动的五个位置,再读真实配置并逐项数出参数。 读完《Transformer 原理与实现》之后,GPT-2 的主干已经熟悉。现在拿到 Llama 的 config.json,哪些地方变了?这些变化分别解决什么问题,又怎样体现在模型参数量里? 一、总览:本文的章节安排 GPT-2 到 Llama 的五处结构变化 章 主题 内容 一 五处改动 从 GPT-2 的槽位出发理解 Llama 的结构选择 ...

×