🧠 从零构建 LLM

GPT、Claude、Llama 背后的 5 阶段流水线 —— 不需要博士学位,代码 included

作者:Rahul (@sairahul1) · 整理时间:2026-06-15

💡核心洞察

大多数人以为构建 LLM 的关键是架构(Transformer、Attention)。不是。架构是公开的,所有人用同样的积木。真正的秘密在于:数据、训练和对齐。

架构只占一段代码。其他四个阶段才是 GPT-4 和业余模型的分水岭。

🔄5 阶段流水线全景

1
数据清洗
从 100 万 GB 垃圾到干净数据集
2
Tokenization
把文本切成模型能理解的碎片
3
预训练
预测下一个 token,学语言规律
4
对齐
从文本预测器变成有用助手
5
评估
证明它真的好用
"A great LLM is not trained. It is engineered. 5 stages. Not 1."

🧹Stage 1 — 数据清洗(模型真正的战场)

原始互联网文本是垃圾场。Common Crawl 有 2500 亿页面,但大部分是垃圾。

清洗流水线

提取干净文本
从 HTML
过滤有害内容
NSFW/隐私
去重
URL/文档/行
质量评分
维基百科标准
平衡配比
代码/书籍/科学

数据质量 > 数据数量 —— 每次都是这样。顶级实验室在数据清洗上的投入比模型设计还多。

最保密的不是架构,是清洗方法

✂️Stage 2 — Tokenization(模型的母语)

模型不读原始文本,它读 token。一个 token 不一定是完整单词,可能是词的一部分。

# 示例 "playing" → ["play", "ing"] "unbelievable" → ["un", "believ", "able"] "dog" → ["dog"] # 标准方法:BPE (Byte-Pair Encoding) # 从字符开始,反复合并最常见的组合 # 最终词汇表:32,000 ~ 100,000 tokens

经验法则

指标数值
1 token ≈0.75 个英文单词
1,000 tokens ≈750 个单词
100k 上下文窗口 ≈一本完整的小说

🏋️Stage 3 — 预训练(简单到 deceptive)

整个训练任务听起来太简单:

预测下一个 token。

给定 "The cat sat on the",预测 "mat"。在万亿级示例上重复这个过程,神奇的事情发生了:

没人教它这些。都是从下一个 token 预测中涌现出来的。

核心架构:Decoder-only Transformer

# 关键组件 class CausalSelfAttention(nn.Module): # 每个输入 token 关注所有之前的 token # Causal mask 防止偷看未来 class TransformerBlock(nn.Module): # Attention + FeedForward + Residual + LayerNorm class MiniLLM(nn.Module): # Embedding + Positional Encoding + N 层 Transformer + Output # 示例:44M 参数,6 层,8 头,512 维

训练循环

# 核心就三步 1. Forward: logits = model(input_ids) 2. Loss: cross_entropy(logits, target_ids) 3. Backward: optimizer.step() # Loss = 模型对真实下一个 token 的"惊讶程度" # Loss 越低 = 预测越准 = 模型在学语言

🎯Stage 4 — 对齐(从文本预测器到助手)

预训练后,模型很牛但没用。问它问题,它可能回复三个更多问题。因为预测下一个 token ≠ 理解你想要什么。

两步修复

4a
SFT 监督微调
教它回答的格式
4b
RLHF 人类反馈强化
教它什么算"好回答"

SFT:几千个例子就够了

知识已经在预训练模型里,SFT 只是教它用正确的格式表达

# SFT 数据格式 { "prompt": "Explain what an API is in simple terms.", "response": "An API is like a waiter in a restaurant..." } # 只需要几千个高质量对话对

RLHF:让模型学会"好"的标准

模型生成两个答案,人类选更好的。这些偏好训练出一个奖励模型,LLM 被优化来最大化这个奖励。

Without RLHF

流畅但不可靠
自信地错误
不知道说"我不知道"

With RLHF

有帮助、清晰、安全
学会"好回答"的含义
知道边界

📊Stage 5 — 评估(没有测量就是猜)

预训练阶段:Perplexity(困惑度)

衡量模型对真实文本的"惊讶程度"。越低越好。

时间最佳模型困惑度含义
2017~70 个可能 token几乎不懂
2023< 10 个可能 token非常精准

对齐后:人类基准测试

对齐后困惑度反而变差(分布变了),需要换指标:

MMLU
57 个学科多选题
Chatbot Arena
人类盲投选更好
AlpacaEval
LLM 评判 LLM,$10

评估真的很难。同一个模型,同一个基准,提示格式不同,分数能从 0.637 变成 0.488。没人完全解决了这个问题。

如何生成文本

# 生成循环 1. 编码 prompt → token IDs 2. 模型预测下一个 token 的概率分布 3. 用 temperature 控制随机性 4. 采样得到下一个 token 5. 拼接到输入,重复 # Temperature 控制 0.1 → 安全、可预测、重复 0.8 → 自然、多变、默认推荐 1.5 → 创意、惊喜、有时混乱

⚠️5 个致命错误

错误为什么致命
1 迷恋架构Transformer 是标准化的,架构是最不重要的部分
2 把数据当商品脏数据会封顶你的天花板,无论算力多强
3 跳过扩展数学模型太大而数据不够 = 欠训练浪费算力。最优比:~20 tokens/参数
4 只做到 SFT没有 RLHF,模型只会模仿,不懂人类真正偏好
5 对齐后还信困惑度SFT 后分布变了,困惑度失去意义,立即换人类基准

🚀5 个可立即落地的垂直 LLM

同一个流水线,换数据 = 换专家 = 换产品

💻 Niche 1 — 编程助手(最高影响力)

数据:GitHub Code + Stack Overflow + The Stack

训练对:代码补全、错误修复、自然语言→代码

效果:从教科书式回答 → 生产级代码(含指数退避重试)

可跑

🗄️ Niche 2 — SQL 生成器

数据:Spider (10k+ SQL) + WikiSQL (80k+ 对)

场景:非技术创始人用自然语言查数据库

可跑

⚖️ Niche 3 — 法律文档摘要

数据:Free Law Project + MultiLegalPile

输出: plain English 摘要 + 红旗标记 + 风险等级

可跑

🏥 Niche 4 — 医学症状解释

数据:PubMed (3500万) + MedQA

关键:每条回复必须带免责声明和升级信号

需谨慎

🛒 Niche 5 — 电商文案生成

数据:Top 1000 Shopify 店铺高转化文案

效果:从规格表 → 情感驱动的高转化文案

可跑

▶️最小可运行示例(15M 参数)

# 1. 安装依赖 pip install torch tokenizers datasets # 2. 获取数据(WikiText) from datasets import load_dataset dataset = load_dataset("wikitext", "wikitext-103-v1", split="train") # 3. 训练 tokenizer(BPE,8000 词汇) # 4. 构建 MiniLLM(256 维,4 层,8 头) # 5. 训练(几小时在笔记本 GPU) # 6. 生成文本 # 观察困惑度从 800 降到 50 —— 那就是模型在学语言

从 Google Colab 免费 GPU 开始。15M 参数,WikiText 数据集,几小时就能看到效果。

🎯一句话总结

架构是共享的。真正重要的东西不是。

两个实验室用完全相同的架构,产出天差地别的模型。区别在于:

数据质量
+
扩展数学
+
对齐深度
+
诚实评估

这才是 GPT-4 和业余模型的区别。