MiniMind 学习笔记(二):Pretrain 导言——从零理解 LLM,先想清楚这几个问题

MiniMind 学习笔记(二):Pretrain 导言------从零理解 LLM,先想清楚这几个问题

学习 LLM 最容易犯的错误,就是一头扎进训练代码的局部细节里。这一章的目标不是立刻进入大模型细节,而是先回答一个更基础的问题:当我们说"从零开始理解一个 LLM 的预训练流程"时,到底需要先想清楚哪些问题?

文章目录

前言:为什么不能直接看代码?

在深入模型代码之前,有一个学习策略上的问题值得先想清楚。

直接进入训练代码,很容易陷入局部细节,比如:

  • 某个张量的 shape;
  • 某个配置项的含义;
  • 某一层具体的实现方式。

但如果没有先建立整体框架 ,这些局部细节很难真正串起来。所以正确的路径是:先从问题出发,建立整体认识,再逐步进入模型定义和代码实现。
#mermaid-svg-aeiajuSw66qLoY8T{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-aeiajuSw66qLoY8T .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-aeiajuSw66qLoY8T .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-aeiajuSw66qLoY8T .error-icon{fill:#552222;}#mermaid-svg-aeiajuSw66qLoY8T .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aeiajuSw66qLoY8T .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-aeiajuSw66qLoY8T .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aeiajuSw66qLoY8T .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aeiajuSw66qLoY8T .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-aeiajuSw66qLoY8T .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aeiajuSw66qLoY8T .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aeiajuSw66qLoY8T .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aeiajuSw66qLoY8T .marker.cross{stroke:#333333;}#mermaid-svg-aeiajuSw66qLoY8T svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aeiajuSw66qLoY8T p{margin:0;}#mermaid-svg-aeiajuSw66qLoY8T .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aeiajuSw66qLoY8T .cluster-label text{fill:#333;}#mermaid-svg-aeiajuSw66qLoY8T .cluster-label span{color:#333;}#mermaid-svg-aeiajuSw66qLoY8T .cluster-label span p{background-color:transparent;}#mermaid-svg-aeiajuSw66qLoY8T .label text,#mermaid-svg-aeiajuSw66qLoY8T span{fill:#333;color:#333;}#mermaid-svg-aeiajuSw66qLoY8T .node rect,#mermaid-svg-aeiajuSw66qLoY8T .node circle,#mermaid-svg-aeiajuSw66qLoY8T .node ellipse,#mermaid-svg-aeiajuSw66qLoY8T .node polygon,#mermaid-svg-aeiajuSw66qLoY8T .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aeiajuSw66qLoY8T .rough-node .label text,#mermaid-svg-aeiajuSw66qLoY8T .node .label text,#mermaid-svg-aeiajuSw66qLoY8T .image-shape .label,#mermaid-svg-aeiajuSw66qLoY8T .icon-shape .label{text-anchor:middle;}#mermaid-svg-aeiajuSw66qLoY8T .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-aeiajuSw66qLoY8T .rough-node .label,#mermaid-svg-aeiajuSw66qLoY8T .node .label,#mermaid-svg-aeiajuSw66qLoY8T .image-shape .label,#mermaid-svg-aeiajuSw66qLoY8T .icon-shape .label{text-align:center;}#mermaid-svg-aeiajuSw66qLoY8T .node.clickable{cursor:pointer;}#mermaid-svg-aeiajuSw66qLoY8T .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-aeiajuSw66qLoY8T .arrowheadPath{fill:#333333;}#mermaid-svg-aeiajuSw66qLoY8T .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aeiajuSw66qLoY8T .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aeiajuSw66qLoY8T .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aeiajuSw66qLoY8T .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-aeiajuSw66qLoY8T .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aeiajuSw66qLoY8T .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-aeiajuSw66qLoY8T .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aeiajuSw66qLoY8T .cluster text{fill:#333;}#mermaid-svg-aeiajuSw66qLoY8T .cluster span{color:#333;}#mermaid-svg-aeiajuSw66qLoY8T div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aeiajuSw66qLoY8T .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-aeiajuSw66qLoY8T rect.text{fill:none;stroke-width:0;}#mermaid-svg-aeiajuSw66qLoY8T .icon-shape,#mermaid-svg-aeiajuSw66qLoY8T .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aeiajuSw66qLoY8T .icon-shape p,#mermaid-svg-aeiajuSw66qLoY8T .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-aeiajuSw66qLoY8T .icon-shape .label rect,#mermaid-svg-aeiajuSw66qLoY8T .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aeiajuSw66qLoY8T .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-aeiajuSw66qLoY8T .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-aeiajuSw66qLoY8T :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ❌ 错误路径

直接看训练代码
陷入局部细节

张量 shape / 配置项 / 单层实现
细节无法串联

学了就忘
✅ 正确路径

先建立整体框架
从核心问题出发

模型是什么 / 流程是什么
再进入细节

模型定义 → 代码实现
细节有处安放

真正理解

一、本章要回答的 7 个核心问题

这一章的第一部分,先介绍"模型是什么"这个概念,围绕下面 7 个问题展开:

  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,这个项目是如何把这些概念落实成可运行代码的?

这 7 个问题本身就是一条由浅入深的学习路线,可以画成下面这张知识地图:
#mermaid-svg-EwrmFUd1DuGDNw5m{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EwrmFUd1DuGDNw5m .error-icon{fill:#552222;}#mermaid-svg-EwrmFUd1DuGDNw5m .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EwrmFUd1DuGDNw5m .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EwrmFUd1DuGDNw5m .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EwrmFUd1DuGDNw5m .marker.cross{stroke:#333333;}#mermaid-svg-EwrmFUd1DuGDNw5m svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EwrmFUd1DuGDNw5m p{margin:0;}#mermaid-svg-EwrmFUd1DuGDNw5m .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster-label text{fill:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster-label span{color:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster-label span p{background-color:transparent;}#mermaid-svg-EwrmFUd1DuGDNw5m .label text,#mermaid-svg-EwrmFUd1DuGDNw5m span{fill:#333;color:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m .node rect,#mermaid-svg-EwrmFUd1DuGDNw5m .node circle,#mermaid-svg-EwrmFUd1DuGDNw5m .node ellipse,#mermaid-svg-EwrmFUd1DuGDNw5m .node polygon,#mermaid-svg-EwrmFUd1DuGDNw5m .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EwrmFUd1DuGDNw5m .rough-node .label text,#mermaid-svg-EwrmFUd1DuGDNw5m .node .label text,#mermaid-svg-EwrmFUd1DuGDNw5m .image-shape .label,#mermaid-svg-EwrmFUd1DuGDNw5m .icon-shape .label{text-anchor:middle;}#mermaid-svg-EwrmFUd1DuGDNw5m .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-EwrmFUd1DuGDNw5m .rough-node .label,#mermaid-svg-EwrmFUd1DuGDNw5m .node .label,#mermaid-svg-EwrmFUd1DuGDNw5m .image-shape .label,#mermaid-svg-EwrmFUd1DuGDNw5m .icon-shape .label{text-align:center;}#mermaid-svg-EwrmFUd1DuGDNw5m .node.clickable{cursor:pointer;}#mermaid-svg-EwrmFUd1DuGDNw5m .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-EwrmFUd1DuGDNw5m .arrowheadPath{fill:#333333;}#mermaid-svg-EwrmFUd1DuGDNw5m .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EwrmFUd1DuGDNw5m .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EwrmFUd1DuGDNw5m .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EwrmFUd1DuGDNw5m .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-EwrmFUd1DuGDNw5m .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EwrmFUd1DuGDNw5m .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster text{fill:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m .cluster span{color:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EwrmFUd1DuGDNw5m .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-EwrmFUd1DuGDNw5m rect.text{fill:none;stroke-width:0;}#mermaid-svg-EwrmFUd1DuGDNw5m .icon-shape,#mermaid-svg-EwrmFUd1DuGDNw5m .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EwrmFUd1DuGDNw5m .icon-shape p,#mermaid-svg-EwrmFUd1DuGDNw5m .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-EwrmFUd1DuGDNw5m .icon-shape .label rect,#mermaid-svg-EwrmFUd1DuGDNw5m .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EwrmFUd1DuGDNw5m .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-EwrmFUd1DuGDNw5m .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-EwrmFUd1DuGDNw5m :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ① 什么是 Language Model?

LLM 本质仍是 Language Model
② 为什么先理解

Attention 和 Transformer?
③ Transformer 相比早期 NLP 模型

解决了什么问题?
④ LLM 由哪些模块组成?

Pretrain 流程什么样?
⑤ Embedding / Attention / FFN

/ Norm / RoPE 各做什么?
⑥ 结构选择为何影响

训练效果与推理效率?
⑦ MiniMind 如何把概念

落实成可运行代码?

  • 问题 ①~③ 是背景层:建立历史脉络和整体认识;
  • 问题 ④~⑥ 是结构层:拆解模型组成与各模块职责;
  • 问题 ⑦ 是实践层:回到项目本身落地。

二、QA 式的组织方式

这一章的组织方式会尽量按照 QA(Question-Answer)的形式展开。

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

这种"问题驱动"的写法,本质上是把"被动接收定义"变成"主动寻找答案"------带着问题读,每个知识点都有了安放的位置。

三、本章的四部分结构

目前这一章的模型部分先分为四个部分:
#mermaid-svg-oR8mymRkhe4AiuEq{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oR8mymRkhe4AiuEq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oR8mymRkhe4AiuEq .error-icon{fill:#552222;}#mermaid-svg-oR8mymRkhe4AiuEq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oR8mymRkhe4AiuEq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oR8mymRkhe4AiuEq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oR8mymRkhe4AiuEq .marker.cross{stroke:#333333;}#mermaid-svg-oR8mymRkhe4AiuEq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oR8mymRkhe4AiuEq p{margin:0;}#mermaid-svg-oR8mymRkhe4AiuEq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oR8mymRkhe4AiuEq .cluster-label text{fill:#333;}#mermaid-svg-oR8mymRkhe4AiuEq .cluster-label span{color:#333;}#mermaid-svg-oR8mymRkhe4AiuEq .cluster-label span p{background-color:transparent;}#mermaid-svg-oR8mymRkhe4AiuEq .label text,#mermaid-svg-oR8mymRkhe4AiuEq span{fill:#333;color:#333;}#mermaid-svg-oR8mymRkhe4AiuEq .node rect,#mermaid-svg-oR8mymRkhe4AiuEq .node circle,#mermaid-svg-oR8mymRkhe4AiuEq .node ellipse,#mermaid-svg-oR8mymRkhe4AiuEq .node polygon,#mermaid-svg-oR8mymRkhe4AiuEq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oR8mymRkhe4AiuEq .rough-node .label text,#mermaid-svg-oR8mymRkhe4AiuEq .node .label text,#mermaid-svg-oR8mymRkhe4AiuEq .image-shape .label,#mermaid-svg-oR8mymRkhe4AiuEq .icon-shape .label{text-anchor:middle;}#mermaid-svg-oR8mymRkhe4AiuEq .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oR8mymRkhe4AiuEq .rough-node .label,#mermaid-svg-oR8mymRkhe4AiuEq .node .label,#mermaid-svg-oR8mymRkhe4AiuEq .image-shape .label,#mermaid-svg-oR8mymRkhe4AiuEq .icon-shape .label{text-align:center;}#mermaid-svg-oR8mymRkhe4AiuEq .node.clickable{cursor:pointer;}#mermaid-svg-oR8mymRkhe4AiuEq .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oR8mymRkhe4AiuEq .arrowheadPath{fill:#333333;}#mermaid-svg-oR8mymRkhe4AiuEq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oR8mymRkhe4AiuEq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oR8mymRkhe4AiuEq .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oR8mymRkhe4AiuEq .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oR8mymRkhe4AiuEq .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oR8mymRkhe4AiuEq .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oR8mymRkhe4AiuEq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oR8mymRkhe4AiuEq .cluster text{fill:#333;}#mermaid-svg-oR8mymRkhe4AiuEq .cluster span{color:#333;}#mermaid-svg-oR8mymRkhe4AiuEq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oR8mymRkhe4AiuEq .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oR8mymRkhe4AiuEq rect.text{fill:none;stroke-width:0;}#mermaid-svg-oR8mymRkhe4AiuEq .icon-shape,#mermaid-svg-oR8mymRkhe4AiuEq .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oR8mymRkhe4AiuEq .icon-shape p,#mermaid-svg-oR8mymRkhe4AiuEq .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oR8mymRkhe4AiuEq .icon-shape .label rect,#mermaid-svg-oR8mymRkhe4AiuEq .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oR8mymRkhe4AiuEq .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oR8mymRkhe4AiuEq .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oR8mymRkhe4AiuEq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 对应
对应
对应
对应

  1. 背景部分
  2. 模型总览
  3. Attention 专题
  4. MiniMind 实践入口
    从 Language Model、Attention、

Transformer 的发展脉络出发

建立整体认识
先不急着推公式

先回答:一个预训练模型

由哪些部分组成
最核心、也最容易在

概念和实现之间脱节的部分

单独展开
回到项目本身

看概念在代码和

训练流程里怎么落地

部分 定位 核心内容
1. 背景部分 建立整体认识 Language Model → Attention → Transformer 的发展脉络
2. 模型总览 宏观拆解 不急着推公式,先回答"一个预训练模型由哪些部分组成"
3. Attention 专题 攻坚核心 最核心、也最容易在概念和实现之间脱节的部分
4. MiniMind 实践入口 落地验证 概念在代码和训练流程里如何落地

其中 Attention 专题值得特别关注:它是整个 Transformer 的核心,也是"看懂公式"和"看懂代码"之间最容易脱节的地方,所以单独拿出来展开。

四、本章不讲什么:训练细节的边界

至于下面这些内容,不在本章展开,而是放到后续单独的部分:

  • 训练目标(training objective)
  • loss
  • 优化器(optimizer)
  • learning rate
  • 混合精度(mixed precision)

原因在于:这些内容一旦开始讲,重心就会从"模型是什么 "切换到"模型怎么训练",适合单独成节。
#mermaid-svg-I7OJxraNLHPmf5WM{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-I7OJxraNLHPmf5WM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-I7OJxraNLHPmf5WM .error-icon{fill:#552222;}#mermaid-svg-I7OJxraNLHPmf5WM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-I7OJxraNLHPmf5WM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-I7OJxraNLHPmf5WM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-I7OJxraNLHPmf5WM .marker.cross{stroke:#333333;}#mermaid-svg-I7OJxraNLHPmf5WM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-I7OJxraNLHPmf5WM p{margin:0;}#mermaid-svg-I7OJxraNLHPmf5WM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-I7OJxraNLHPmf5WM .cluster-label text{fill:#333;}#mermaid-svg-I7OJxraNLHPmf5WM .cluster-label span{color:#333;}#mermaid-svg-I7OJxraNLHPmf5WM .cluster-label span p{background-color:transparent;}#mermaid-svg-I7OJxraNLHPmf5WM .label text,#mermaid-svg-I7OJxraNLHPmf5WM span{fill:#333;color:#333;}#mermaid-svg-I7OJxraNLHPmf5WM .node rect,#mermaid-svg-I7OJxraNLHPmf5WM .node circle,#mermaid-svg-I7OJxraNLHPmf5WM .node ellipse,#mermaid-svg-I7OJxraNLHPmf5WM .node polygon,#mermaid-svg-I7OJxraNLHPmf5WM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-I7OJxraNLHPmf5WM .rough-node .label text,#mermaid-svg-I7OJxraNLHPmf5WM .node .label text,#mermaid-svg-I7OJxraNLHPmf5WM .image-shape .label,#mermaid-svg-I7OJxraNLHPmf5WM .icon-shape .label{text-anchor:middle;}#mermaid-svg-I7OJxraNLHPmf5WM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-I7OJxraNLHPmf5WM .rough-node .label,#mermaid-svg-I7OJxraNLHPmf5WM .node .label,#mermaid-svg-I7OJxraNLHPmf5WM .image-shape .label,#mermaid-svg-I7OJxraNLHPmf5WM .icon-shape .label{text-align:center;}#mermaid-svg-I7OJxraNLHPmf5WM .node.clickable{cursor:pointer;}#mermaid-svg-I7OJxraNLHPmf5WM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-I7OJxraNLHPmf5WM .arrowheadPath{fill:#333333;}#mermaid-svg-I7OJxraNLHPmf5WM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-I7OJxraNLHPmf5WM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-I7OJxraNLHPmf5WM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-I7OJxraNLHPmf5WM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-I7OJxraNLHPmf5WM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-I7OJxraNLHPmf5WM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-I7OJxraNLHPmf5WM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-I7OJxraNLHPmf5WM .cluster text{fill:#333;}#mermaid-svg-I7OJxraNLHPmf5WM .cluster span{color:#333;}#mermaid-svg-I7OJxraNLHPmf5WM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-I7OJxraNLHPmf5WM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-I7OJxraNLHPmf5WM rect.text{fill:none;stroke-width:0;}#mermaid-svg-I7OJxraNLHPmf5WM .icon-shape,#mermaid-svg-I7OJxraNLHPmf5WM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-I7OJxraNLHPmf5WM .icon-shape p,#mermaid-svg-I7OJxraNLHPmf5WM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-I7OJxraNLHPmf5WM .icon-shape .label rect,#mermaid-svg-I7OJxraNLHPmf5WM .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-I7OJxraNLHPmf5WM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-I7OJxraNLHPmf5WM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-I7OJxraNLHPmf5WM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 从零理解 LLM 预训练
本章:模型是什么?

(model 是什么)
后续章节:模型怎么训练?

(model 怎么 train)
Language Model 脉络
模型组成: Embedding / Attention /

FFN / Norm / RoPE
MiniMind 代码落地
训练目标 / Loss
优化器 / Learning Rate
混合精度

这条边界很重要:先搞清楚"模型是什么",再去研究"模型怎么训练",两件事混在一起讲,两边都讲不透。

总结

这一章作为整个模型部分的导言,核心可以浓缩为三句话:

  1. 学习策略:不要直接扎进训练代码,先建立整体框架,再进入细节------否则局部细节无法串联;
  2. 问题驱动:围绕 7 个核心问题展开,从 Language Model 的本质,到 Transformer 解决的问题,再到 LLM 的模块组成与 MiniMind 落地;
  3. 章节边界:本章聚焦"模型是什么"(背景脉络、模型总览、Attention 专题、MiniMind 实践),而"模型怎么训练"(loss、优化器、学习率、混合精度)留给后续章节。

带着这些问题,接下来就可以正式进入背景部分:从 Language Model 的定义开始,一路走到 Transformer 的诞生。

参考

相关推荐
Carl_奕然5 小时前
【智能体】Loop 的四种设计模式之:Agent Loop(2026 最新版)
人工智能·设计模式·语言模型
艾莉丝努力练剑5 小时前
【AI大模型接入SDK】ChatSDK架构设计与实现
网络·c++·人工智能·学习·语言模型
user_admin_god9 小时前
第 10 篇:拼上下文与生成——预算、边界与防幻觉
java·人工智能·spring boot·语言模型
奇思妙想聪明勤奋的小羊6 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
IZero076 天前
Jev 与 Laya
python·语言模型
喜欢打篮球的普通人6 天前
MiniMind 快速上手(一):环境准备与项目结构
语言模型
Dawson Zhu6 天前
从 Jev 说起:快慢模型如何协同调度,以及这背后需要解决什么问题
人工智能·语言模型·架构·aigc·agi
大模型任我行7 天前
谷歌:“课程学习”融入扩散模型强化学习
人工智能·语言模型·自然语言处理·论文笔记
Dawson Zhu7 天前
大模型记忆系统设计:分层架构与关键技术解析
人工智能·语言模型·架构·aigc·agi