Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Pretrain 导言

这一章的目标,不是立刻进入大模型的细节,而是先回答一个更基础的问题:当我们说“从零开始理解一个 LLM 的预训练流程”时,到底需要先想清楚哪些问题?

我现在越来越觉得,直接进入训练代码很容易陷入局部细节,比如某个张量 shape、某个配置项、某一层的实现方式。但如果没有先建立整体框架,这些局部细节很难真正串起来。所以这一章会先从问题出发,再逐步进入模型定义和代码实现。

这一章我准备分成两个部分, 第一部分先介绍模型是什么这个概念,准备围绕下面这些问题展开:

  1. 什么是 Language Model?为什么说 LLM 本质上仍然是 Language Model?
  2. 为什么进入 LLM 之前,需要先理解 Attention 和 Transformer?
  3. Transformer 相比更早的 NLP 模型,到底解决了什么问题?
  4. 一个LLM在通常由哪些模块组成?它的Pretrain训练流程又是什么样子的?
  5. Embedding、Attention、FFN、Norm、RoPE 这些模块分别在做什么?
  6. 为什么很多模型结构上的选择,看起来像“工程细节”,但实际上会影响训练效果和推理效率?
  7. 如果把目光放回 MiniMind,这个项目是如何把这些概念落实成可运行代码的?

这一章的组织方式会尽量按照 QA 的形式展开。也就是说,每一节开头都会先列出一组核心问题,然后围绕这些问题组织内容,而不是一开始就按教科书式定义平铺直叙。

目前这一章模型部分先分为四个部分:

  1. 背景部分:从 Language Model、Attention、Transformer 的发展脉络出发,建立整体认识。
  2. 模型总览:先不急着推公式,而是先回答“一个预训练模型由哪些部分组成”。
  3. Attention 专题:把最核心、也最容易在概念和实现之间脱节的部分单独展开。
  4. MiniMind 实践入口:回到项目本身,看看这些概念在代码和训练流程里是怎么落地的。

至于训练目标、loss、优化器、learning rate、混合精度这些问题,我准备放到后续单独开一个部分单独展开。因为这些内容一旦开始讲,重心就会从“模型是什么”切到“模型怎么训练”,适合单独成节。