· 预计阅读 5 分钟
更新于

模型训练流程图解(从 0 到 1 训练自己的 AI)


本篇解决什么

本篇是「小模型训练系列」第 1 篇:用工程视角梳理大模型训练从数据到参数更新的完整链路。

适合谁读

正在沿着「小模型训练系列」系统学习,希望把概念、工程和真实判断串起来的读者。

AI大模型训练

🧩 为何从「训练」开始?

在如今的大模型时代,绝大多数人能:

  • 调用 API
  • 写 Prompt
  • 做 RAG
  • 使用大模型做任务

但能同时做到下面三件事的人并不多:

  • 训练一个模型(至少跑通闭环)
  • 微调一个模型(并解释为什么有效/为什么翻车)
  • 把模型能力边界与系统架构边界分开讨论

后续常见场景包括:

  • 本地小模型训练
  • QLoRA 微调
  • 自建行业模型
  • 企业级 Agent 系统
  • 私域大模型
  • 多模型调度平台

所有这些,都离不开一个共同的底层心智模型:

理解大模型训练的完整流程,并能把它映射到真实工程代码。

这一篇,就是整个系列的入口:训练链路的主心骨。


🧭 一张能映射到代码的训练流程图(工程视角)

这不是泛泛科普,而是一条可以映射到代码的训练链路:

flowchart TB
  A["数据准备<br/>清洗 / 切分 / 去重"] --> B["Tokenizer<br/>文本变成 token id"]
  B --> C["Embedding<br/>token id 进入语义坐标系"]
  C --> D["Transformer<br/>Attention 建模上下文关系"]
  D --> E["Logits<br/>下一 token 的概率分布"]
  E --> F["Loss<br/>预测和答案的误差"]
  F --> G["Backprop<br/>把责任分回各层参数"]
  G --> H["Optimizer<br/>SGD / AdamW 小步更新"]
  H --> I["参数更新<br/>模型能力被慢慢塑形"]
  I --> J["下一批数据<br/>继续训练"]
  J -.-> A

这条链路贯穿模型训练的本质:

训练 = 用 Loss 持续逼迫参数更新,使预测分布更接近真实语言规律。


🧠 0. 先把「训练」映射到代码结构

在 PyTorch / HuggingFace 的训练代码中,本质模块就是:

  • Tokenizer:文本 → token id
  • Dataset / Dataloader:组织 batch、padding、mask
  • Forward:输入 → logits
  • Loss:logits 与 label 的误差
  • Backward:反向传播得到梯度
  • Optimizer.step():更新参数
  • Scheduler.step():调整学习率(决定收敛稳定性)
  • Checkpoint / Eval:保存模型、做评估、避免跑偏

后续所有“训练问题排查”,最终都会落在这些模块中的某一个。


🔍 1. 数学视角:本质就是预测「下一个 token」

输入一句话:

我今天想去吃

模型需要预测下一词(示意):

  • 火锅(0.82)
  • 烤肉(0.11)
  • 星巴克(0.05)
  • 其他(0.02)

很多「智能行为」的底层形式,都是:

P(tokenᵢ | token₁…tokenᵢ₋₁)
(条件概率预测)

目标只有一个:

让模型的预测更符合真实语言规律,从而获得泛化能力。

泛化能力决定模型是不是“像理解”,还是“像背诵”。


🔧 2. 工程视角:训练的五大核心步骤

① Tokenizer:文本进入数字世界的入口

模型不懂汉字、不懂英文,只懂数字 ID。

例子(示意):

我 爱 北京 天安门 → [1245, 98, 20301, 50231]

Tokenizer 的质量 = 模型训练上限之一。
因为 token 切分方式如果错了,后续再强都只能在错误切分上学习。


② Embedding:语言到数学空间的第一次映射

特点:

  • 把每个 token 映射成 d 维(如 768 / 2048 / 4096)向量
  • 语义相似 → 向量靠近
  • 提供可计算的“几何世界”,供后续 Transformer 建模

Embedding = 模型理解世界的「坐标系统」。


③ Transformer:注意力机制让模型变聪明

Attention 让模型知道:

  • 应该关注谁
  • 谁不重要
  • 如何从上下文抽取关键信息

例句:

“我昨天和我妈吵架了,我心情很不好。”

预测下一词时重要的词:

  • 我妈
  • 昨天
  • 心情

Attention = 模型的「聚焦能力 + 关系建模能力」。


④ Logits & Loss:模型的「考试成绩」

  • Logits:预测的概率分布
  • Loss:预测 vs 真实答案的误差

Loss 越低 → 在训练分布上预测越准确。
但注意:Loss 下降不等于“能力提升”,需要配合评估看泛化。


⑤ 反向传播 & 梯度下降:模型真正被“炼”的过程

  • 反向传播告诉模型哪里错了
  • 梯度下降更新权重
  • 千万、亿级、百亿参数不断被修正

最终得到一个:

能生成语言、能复现模式、能在一定范围内泛化的模型。


⚙️ 3. 为什么训练如此昂贵?

不是 GPU 贵,而是“算得多 + 存得多 + 序列越长越爆炸”:

  1. Attention 复杂度近似 O(n²)
    序列越长,计算与显存压力快速上升。

  2. 反向传播显存需求显著高于推理
    训练需要保留更多中间激活用于求梯度,显存通常远高于推理阶段。

  3. 数据量巨大 + 训练步数巨大
    大模型训练依赖海量 token 与长期迭代,成本主要消耗在持续算力与通信上。

  4. 模型太深 + 并行更复杂
    层数更多、参数更多,会带来更长训练时间、更复杂的并行与更高稳定性要求。

这就是为什么训练 GPT / Claude 往往是上千万美金级别:
核心来自“序列长度 × 参数规模 × 训练步数”的乘法效应。


🚀 4. 为什么小模型训练可行?

因为出现了:

LoRA / QLoRA — 只训练极少量增量参数,让成本骤降

优势:

  • 只训练少量参数(增量权重)
  • 显存需求显著下降
  • 成本更低,单机可跑
  • 更适合做“领域适配”和“业务对齐”

一句话:

不需要大公司级别的算力,也能训练/微调出可用的领域模型能力。


🛠️ 5. 常见落地训练场景

多数实际项目不会训练 GPT-4,而是训练/微调:

  • 个人知识库 + PDF 模型
  • 企业流程(审批、采购、合同)模型
  • 工程代码模型
  • 对话人格 / 情感模型
  • 行业模型(医疗 / 法务 / 招投标 / 供应链)
  • Agent 基座模型
  • 知识图谱 + 向量空间融合
  • 自定义 Embedding
  • 模型蒸馏(大模型 → 小模型)

全部建立在今天这篇文章的知识之上。


✅ 本章核心结论

  1. 训练是一条工程流水线:Tokenizer → Embedding → Transformer → Loss → Backward → Update
  2. 模型“聪明”来自 Loss 驱动的参数更新,而不是“记忆更多文本”
  3. Embedding 定义语义坐标系,Attention 负责上下文关系建模
  4. 训练贵来自乘法效应:序列长度 × 参数规模 × 训练步数
  5. LoRA/QLoRA 让领域适配变成单机可做的工程实践
  6. 后续 RAG/Agent/行业模型,最终都绕不开训练与微调的底层心智模型

🧭 实践建议:最小闭环清单

  • 选一个能跑通的基座模型(小到可控)
  • 准备一份干净数据(哪怕 1 万条)
  • 跑通一次:训练/微调/保存/加载/评估
  • 记录三件事:loss 曲线、显存占用、样例输出差异

跑通一次完整闭环,才算从“会用模型”进入“会训练模型”的视角。


📌 下一篇预告

《Embedding:词是如何变成数学的?(向量空间的秘密)》会继续拆这条链路里的第一道“智能门槛”:

  • 为什么模型不能直接理解文字
  • token id 如何进入向量空间
  • 语义相似、方向变化、领域知识为什么都能被几何化
  • RAG、Agent 和行业模型为什么会被 Embedding 上限卡住

核心观点是:模型不是先“读懂文字”,而是先把世界投影成一个可计算的坐标系。

持续学习,持续记录,持续筛选

如果这篇对你有用,可以继续沿着主题读下去。

福星家和会长期记录 AI 技术、生活成长、真实好物与正向文化观察。产品体验、人物故事、教育内容、生活方式、文化作品和内容共创都欢迎邮件沟通,合作内容会清楚标注。