Learning_RoadmapAI_Assistant_BasicsModel_Building_and_APIData_Governance_and_SecurityLLM_Book_IngestionTokenizationAttention_MechanismGPT_ArchitecturePretrainingFineTuningLoRAReasoning_Model_Book_IngestionStarTalent_ArchitectureLLM_Engineer_Handbook_CourseRAG_Building_BlocksLangChain_RunnableAI_Engineering_Chip_HuyenLLM_Ops_FinancePython_BootcampReference_Index
基础

《Build a Large Language Model (From Scratch)》— 知识吞噬

《Build a Large Language Model (From Scratch)》— 知识吞噬

作者: Sebastian Raschka (2025)

中文版: 401页, 7章 + 5附录

对应课程: course_A W1 (LLM全景) / course_D W1 (治理全景)

难度: ★★☆ (L2 基础)

> 这不是书评,而是把书的内容"吞噬"到我们的学习路径中。

> 每章提炼: 核心概念 → Python技术点 → 对应L4课程模块


总览: 一本书就是一条从"零"到"GPT"的完整路径

Ch1 理解LLM ─→ Ch2 文本处理 ─→ Ch3 注意力机制 ─→ Ch4 构建GPT ─→ Ch5 预训练 ─→ Ch6/7 微调

(是什么) (怎么做数据) (核心算法) (造出来) (训练) (调优)

对应我们的L4课程

| 书籍章节 | 核心Python技能 | 对应L4模块 | 实战价值 |

|---------|---------------|-----------|---------|

| Ch2 文本处理 | 分词(BPE)、嵌入、滑动窗口 | M4.2 数据合规 | 理解训练数据的"原子单位" |

| Ch3 注意力 | 自注意力、多头注意力、因果掩码 | Reference 模型审计 | 审计模型"在看什么" |

| Ch4 GPT架构 | LayerNorm、GELU、残差连接 | Reference Agent安全 | 理解模型内部结构 |

| Ch5 预训练 | 损失函数、训练循环、权重保存 | M4.1 治理体系 | 训练数据溯源审计 |

| Ch6 分类微调 | 分类头、微调、垃圾检测 | M4.1 模型审计 | 微调模型的合规检查 |

| Ch7 指令微调 | 指令数据、RLHF、评估 | M4.1 算法备案 | 对齐训练的安全审查 |

| Appendix E LoRA | 低秩适应、参数高效微调 | Reference AI运维 | 高效微调的工程标准 |


每章知识点提取

Ch1: 理解大型语言模型 (p.12-26)

| 概念 | 一句话 | 对应Python |

|------|--------|-----------|

| 预训练 + 微调范式 | 先在海量无标注数据上学语言规律,再在少量标注数据上适配任务 | 两个训练阶段,不同数据管道 |

| Transformer架构 | 只有解码器的GPT架构,自回归生成 | 因果注意力掩码 |

| Tokenization | 文本→数字ID的转换 | tiktoken / BPE算法 |

| Embedding层 | 每个token映射到高维向量 | nn.Embedding |

| 位置编码 | 告诉模型词的顺序 | 绝对位置编码 / RoPE |

L4映射: M4.1 治理体系需要理解"我们在治理什么"——这本书告诉你LLM到底是什么构成的。

Ch2: 处理文本数据 (p.27-64)

核心Python代码模式:

# BPE 分词器 (tiktoken)

import tiktoken

tokenizer = tiktoken.get_encoding("gpt2")

ids = tokenizer.encode("Hello, world!") # [15496, 11, 995, 0]

text = tokenizer.decode(ids) # "Hello, world!"

滑动窗口采样

def create_dataloader(text, batch_size=4, max_length=256, stride=128):

# stride < max_length → 有重叠的滑动窗口

# 每个样本: input_ids[0:256], target_ids[1:257]

pass # 见原书 列表2.6

| 概念 | Python实现 | L4对应 |

|------|-----------|--------|

| BPE分词 | tiktoken / tokenizers | M4.2 数据最小化原则 |

| 词嵌入 | nn.Embedding(vocab_size, emb_dim) | Reference: 数据表征 |

| 位置编码 | 正弦/可学习位置嵌入 | Reference: 模型审计 |

学完你能做: 自己写一个tokenizer,理解训练数据的切分方式——这对数据合规审计至关重要。

Ch3: 编码注意力机制 (p.64-107) ⭐ 全书最难也是最重要的章节

从简单到复杂的4步实现:

1. 简化自注意力 — 每个token关注所有其他token (无参数)

2. 带权重的自注意力W_q, W_k, W_v 三个权重矩阵

3. 因果注意力 — 加上掩码,只关注前面的token (GPT生成的关键)

4. 多头注意力 — 并行多个注意力头,捕捉不同关系

class CausalAttention(nn.Module):

def __init__(self, d_in, d_out, context_length, dropout, qkv_bias=False):

super().__init__()

self.W_query = nn.Linear(d_in, d_out, bias=qkv_bias)

self.W_key = nn.Linear(d_in, d_out, bias=qkv_bias)

self.W_value = nn.Linear(d_in, d_out, bias=qkv_bias)

self.dropout = nn.Dropout(dropout)

# 因果掩码: 上三角矩阵

mask = torch.triu(torch.ones(context_length, context_length), diagonal=1)

self.register_buffer('mask', mask) # 不参与训练

def forward(self, x):

b, num_tokens, d_in = x.shape

keys = self.W_key(x)

queries = self.W_query(x)

values = self.W_value(x)

attn_scores = queries @ keys.transpose(1, 2) # 点积

attn_scores.masked_fill_(self.mask.bool()[:num_tokens, :num_tokens], -torch.inf) # 掩码

attn_weights = torch.softmax(attn_scores / keys.shape[-1]0.5, dim=-1) # 缩放

attn_weights = self.dropout(attn_weights)

context_vec = attn_weights @ values # 加权和

return context_vec

L4映射**: 审计时需要理解注意力机制——"模型在生成这句话时关注了训练数据中的哪些部分"

Ch4: 从零实现GPT模型 (p.108-148)

GPT模型的核心组件栈:

GPTModel

├── TokenEmbedding (nn.Embedding)

├── PositionalEmbedding (nn.Embedding)

├── TransformerBlock × n_layers

│ ├── MultiHeadAttention

│ ├── LayerNorm (RMSNorm变体)

│ ├── FeedForward (Linear → GELU → Linear)

│ └── Dropout + 残差连接

└── Output Layer (Linear, 映射回vocab_size)

关键参数 (我们的 Qwen3.5-9B vs GPT-2对比):

| 参数 | GPT-2 Small | GPT-3 175B | Qwen3.5-9B |

|------|-----------|-----------|-----------|

| 参数量 | 124M | 175B | 9B |

| 层数 | 12 | 96 | 约40 |

| 注意力头 | 12 | 96 | 32 |

| 嵌入维度 | 768 | 12288 | 4096 |

| 上下文长度 | 1024 | 2048 | 8192 |

L4映射: Reference 模型审计——知道模型结构后,能理解审计范围(每一层都可能有问题)

Ch5: 预训练 (p.149-194)

训练流程:

for epoch in range(num_epochs):

for batch in dataloader:

logits = model(batch['input_ids'])

loss = torch.nn.functional.cross_entropy(

logits.view(-1, logits.size(-1)),

batch['target_ids'].view(-1)

)

optimizer.zero_grad()

loss.backward()

optimizer.step()

关键概念:

L4映射: M4.2 训练数据合规——预训练数据的来源、版权、去重都是合规审查点

Ch6-Ch7: 微调 (p.194-284)

两种微调方式:

| 方式 | 目的 | 数据 | L4对应 |

|------|------|------|--------|

| 分类微调 (Ch6) | 情感分析/垃圾检测 | 标注分类数据 | M4.1 模型审计—输出分类审核 |

| 指令微调 (Ch7) | 让模型遵循指令 | 指令-回答对 + RLHF | M4.1 算法备案—对齐训练安全 |

LoRA (Appendix E) — 参数高效微调:

# LoRA: W' = W + A @ B, 其中A和B是低秩矩阵

训练时只更新A,B, 冻结W

from peft import LoraConfig, get_peft_model

lora_config = LoraConfig(r=8, lora_alpha=32, target_modules=["q_proj", "v_proj"])

model = get_peft_model(base_model, lora_config)

L4映射: 微调模型的合规要求不同于基座模型——需要额外的安全评估和审计日志


附录: Python预备知识

这本书的附录A是整个学习的"前置依赖":

| 附录内容 | 你需要会的Python | 在我们的notebook能找到 |

|---------|----------------|---------------------|

| A.2 张量 | NumPy基础 | 01_AI_Assistant_Basics |

| A.3 计算图 | 自动微分概念 | 02_Model_Building |

| A.5 神经网络 | nn.Module, nn.Linear | 02_Model_Building |

| A.6 数据加载器 | DataLoader, Dataset | 03_Data_Governance |

| A.7 训练循环 | backward(), step() | 05_Pretraining (待创建) |

> 建议: 如果PyTorch不熟,先看附录A再读Ch3-5。


本书与L4课程的完整映射表

| 书籍内容 | L4课程位置 | 实操notebook |

|---------|-----------|-------------|

| Ch1 LLM概述 | M4.1 Part 1 治理全景 | 00_Learning_Roadmap |

| Ch2 分词/嵌入 | M4.2 Part 3 训练数据合规 | 待创建: 04_Tokenization |

| Ch3 注意力机制 | Reference 模型审计 | 待创建: 05_Attention_Mechanism |

| Ch4 GPT架构 | Reference 模型审计 | 待创建: 06_GPT_Architecture |

| Ch5 预训练 | M4.2 数据溯源 | 待创建: 07_Pretraining |

| Ch6 分类微调 | M4.1 模型审计 | 待创建: 08_FineTuning |

| Ch7 指令微调 | M4.1 算法备案 | 02_Model_Building_API |

| Appx E LoRA | Reference AI运维 | 待创建: 09_LoRA |


> 下一步: 从Ch2开始,逐个创建配套notebook,把书中的Python代码跑在本地Qwen3.5-9B上。

> 先跑 01_AI_Assistant_Basics.ipynb 热手,然后决定从哪章切入。

代码
# 验证: 检查本地环境是否满足这本书的需要
import sys, torch

print(f"Python: {sys.version}")
print(f"PyTorch: {torch.__version__}")
print(f"MPS available: {torch.backends.mps.is_available()}")
print(f"GPU: {torch.backends.mps.is_built()}")
print()
print("这本书需要: PyTorch + NumPy + tiktoken + tensorboard")
print("我们已经有的: ✓ PyTorch ✓ MPS ✓ httpx ✓ jupyter-ai")
print("需要安装: tiktoken, tensorboard (用 pip install)")