十个完整模块,带领掌握微积分、线性代数和基础概率的工程师,从第一个损失函数一路走到训练、对齐和部署一个语言模型。
十个模块均已提供英文与简体中文版本。每个模块是独立单元,分为五次学习,计划活动约十小时。根据推导、重复实验和复习所需时间,每模块请预留 10–15 小时。每次学习都把阅读和动手结合在一起。
每个模块开头都有一份学习计划,列出各个学习单元及其用时。学完一项就勾选一项;你的进度保存在浏览器中。
请按顺序阅读各模块。第 06 模块需要第 02 和第 04 模块;第 08 和第 09 模块需要第 06 和第 07 模块。第 10 模块建立在第 06–09 模块之上,包括数值格式、贯穿案例和合并后的后训练模型。
十个模块及其依赖关系。基础部分(01–02)通向网络结构(03–06);Transformer(06)通向大语言模型(07),再分为预训练(08)、后训练(09)和推理(10)三个方向。
每个数字都有出处。 当一个模块说某种方法达到了某个准确率、需要多少 FLOPs 或占用多少 GB 内存时,它会说明这个数字是怎么得到的,让你可以自己重算一遍。
每种方法都会失效,正文会说明如何失效。 只讲技术、不讲其失效方式,那就是广告。每个模块都有一节讲常见问题,因为那正是工程师在凌晨三点最需要的一节。
熟悉微积分、线性代数和基础概率,但还没有做过机器学习的工程师和研究生。本系列的目标不是综述,而是让你读完之后能读懂一篇现代模型论文,理解一次训练究竟在对模型做什么,并凭判断而不是照搬配方来做与模型有关的工程决策。
所有实验只需要 Python 3.11 或更高版本以及一个虚拟环境。GPU 是可选的;Google Colab 是本地安装之外的免费选择。
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
pip install torch numpy scipy scikit-learn matplotlib
pip install transformers datasets tokenizers tiktoken huggingface_hub pandas pyarrow # Modules 07 to 10
第 07 至 10 模块会从 Hugging Face 下载小型开源模型,最大的约 1 GB;每个实验都会注明其下载大小。
向量用粗体小写字母表示,\mathbf{x};矩阵用粗体大写字母表示,\mathbf{W};标量用斜体,y。数据集记为 \mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^{N}。模型参数统一记为 \theta。损失记为 \mathcal{L}(\theta),其梯度记为 \nabla_\theta \mathcal{L}。对数据的期望记为 \mathbb{E}_{(\mathbf{x},y)\sim\mathcal{D}}。除非写作 \log_2,对数均为自然对数。张量形状写作 (B, T, d),分别表示 batch 大小、序列长度和宽度。代码使用 Python 和 PyTorch,并保持短到可以手动敲出来。
每个模块的结尾都列出其关键术语的英文和中文,方便用英文读论文、用中文讨论的读者。