Arganzheng's Blog

stay hungry, stay foolish

现代 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 的结构选择 ...

现代 LLM 结构:从 GPT-2 到今天的演进(总纲)

Modern LLM Architecture: From GPT-2 to Today

系列总览。 从 GPT-2 的结构出发,沿着现代 LLM 的演进路线,读真实模型配置、拆解结构改动,再把它们换算成成本。 内容简介 本系列从 GPT-2 出发,回答现代 LLM 的结构改了什么、为什么改、代价是什么。先读真实配置、建立路线图和参数量基线,再以算量与访存为共同坐标,逐篇展开位置编码、Attention、长上下文、MoE、MTP、投机解码、多模态和数值格式。 缩写 本系列的 90 个缩写(展开) 缩写全称一句话解释 Adam adaptive moment estimation 按梯度一阶、二阶矩自适应步长的优化器 AMP automatic mixed precision 自动混合精度:部分算子用低精度跑 AW...

Transformer 原理与实现:系列总结与通关自测

Transformer Principles and Implementation: Series Recap and Self-Test

四篇正文沿着一条线,从静态结构走到可训练的 GPT。这里逐篇回顾,再把代码主线与容易混淆的概念收在一起,最后用几道题检查是否能把原理和实现连起来。本文不增加新技术内容;读完后可继续进入现代 LLM 结构系列。 一、总览 二、逐篇回顾 1. 第一篇:Transformer 长什么样:从一句话到下一个 token 核心问题:原始 Transformer 的 encoder-decoder 如何变成 GPT-2 的 decoder-only?一个 token 的编号进入 GPT-2,到词表上的一个概率分布出来,中间经过了哪些运算? 结论:本篇先从 GPT-2 small 的 decoder-only 总览看起,再回到原始 Transformer 论文:它是为机器...

Transformer 原理与实现(04):手搓 GPT(下)——nanoGPT train.py 与训一个会续写的模型

Building GPT by Hand, Part 2: train.py Line by Line, Then Train One on Shakespeare

本篇在系列中的位置。 《Transformer 原理与实现》系列的最后一篇。第 03 篇写好了模型,本篇写训练循环并在笔记本上训出会续写的模型;本系列到此回答完「GPT-2 怎么工作、怎么写」。接下来读《现代 LLM 结构:从 GPT-2 到今天的演进》,从今天的模型改了哪些结构开始。 上一篇的 model.py 定义了一个 GPT,但它的权重是随机数,输出是乱码。让它变成一个”会写东西”的模型,还差三样:数据(一段文本怎么变成模型能吃的整数数组)、训练循环(第二篇那一步”取 batch → 前向 → loss → 反向 → 更新”怎么写成能跑几十万步、能断点续训、能多卡的代码)、一次实际的训练(看着 loss 从 4.17 掉到 1.66、输出从乱码变成...

Transformer 原理与实现(03):手搓 GPT(上)——nanoGPT model.py 逐行解析

Building GPT by Hand, Part 1: Every Line of nanoGPT's model.py

本篇在系列中的位置。 第一段的第三篇。前两篇的结构图与动态线在这里落成 nanoGPT model.py 的 330 行;下一篇写训练循环并真正训一个模型,文末的 GPT-2 / Llama 对照表是第 05 篇的起点。完整地图见总纲。 前两篇画了 Transformer 的静态结构和 token 流过它的两条动态线。图看懂了,能不能写出来?这一篇的答案是 Andrej Karpathy 的 nanoGPT:model.py 一个文件、330 行、6 个类,完整定义了 GPT-2,能加载 OpenAI 的原版权重并给出和 HuggingFace 一样的输出。它是目前最好的”从图到代码”的范本——没有多余的抽象,每一行都对应前两篇的某个方框或某一步。 本篇...

Transformer 原理与实现(02):一个 token 的旅程——训练侧与推理侧

The Dynamic View: What Happens to a Token During Training and During Inference

本篇在系列中的位置。 《Transformer 原理与实现》系列的第二篇。第 01 篇给了静态结构,本篇讲 token 怎么流过它:训练侧的 teacher forcing 与反向,推理侧的 prefill、decode 与 KV cache;第 03 篇把这两条动态线对应到 nanoGPT 的代码。完整地图见总纲。 上一篇把 Transformer 的每个方框打开看了一遍,但那是一张静止的图。同一台机器在两种场合下的运转方式很不一样:训练时一句话的几千个 token 一起进去、几千个 loss 一起出来、梯度沿原路返回、几十亿参数各挪一小步;推理时先把用户的问题一次算完,然后一个字一个字往外吐,每吐一个字只算一个 token。不搞清这两条动态线,就解释不...

Transformer 原理与实现(01):Transformer 长什么样——从一句话到下一个 token

From the Original Transformer to the GPT-2 Decoder-only Stack

本篇在系列中的位置。 《Transformer 原理与实现》系列的第一篇。先看本系列要拆解的 GPT-2 small 总览,再回到 2017 年的 encoder-decoder Transformer,比较三条路线,最后逐个打开 GPT-2 的部件;下一篇让一个 token 在这张图上动起来,第 03 篇再把它写成代码。完整地图见总纲。 先从一张 GPT-2 small 的 decoder-only 结构图开始,再回到 2017 年的《Attention Is All You Need》,看 encoder-decoder 如何为翻译而设计、后来又分出哪三条路线。随后逐个打开模型部件,说明它们做什么、为什么在那里。 本文讲静态结构:把每个方框打开,说清...

Transformer 原理与实现:从论文到手搓 GPT-2(总纲)

Transformer Principles and Implementation: From the Paper to GPT-2

系列总览。 从 Transformer 的静态结构开始,沿着一个 token 的旅程,再亲手写出并训练 GPT-2 风格的小模型。本系列由四篇正文与一篇系列总结组成。 内容简介 Transformer 的结构图里每个部件为什么在那里?训练与推理的一次前向分别做什么?一个最小 GPT 如何从公式落到代码,再从随机权重训练成会续写的模型?四篇文章沿着同一条代码线回答这些问题。 缩写 本系列的 24 个缩写(展开) 缩写全称一句话解释 BART Bidirectional and Auto-Regressive Transformers Facebook 的 encoder-decoder 去噪预训练模型 BERT Bidirectio...

×