如何训练一个大模型?从预训练到微调的完整路径
目录
训练一个大模型,到底在训练什么
很多人对”训练大模型”的想象是这样的:把海量资料丢进去,机器自己就变聪明了。
真实情况要具体得多。大语言模型(LLM)本质上是一个**“预测下一个 token”的函数**——给定一段文字,它输出下一个字出现的概率分布。所谓训练,就是用数据不断调整这个函数里的参数,让它预测得越来越准。
一旦预测能力足够强,模型就”顺带”学会了语法、事实、推理,甚至某种程度的”世界知识”。这也解释了一个反直觉的事实:模型并没有被显式教过”什么是法律”,它只是读得足够多。
所以训练大模型需要三样东西:数据、算力、算法。不同训练方式的区别,本质上就是在这三样东西上做不同的取舍。
下面按”从重到轻”的顺序,把主流方式逐一讲清楚。
大模型训练的三个阶段
严格来说,现代大模型的诞生要经过三个阶段,它们不是二选一,而是一条流水线:
| 阶段 | 英文 | 数据形态 | 目标 | 成本 |
|---|---|---|---|---|
| 预训练 | Pretraining | 海量无标注文本 | 学会语言与世界知识 | 极高 |
| 监督微调 | SFT | 指令-回答对 | 学会”听指令” | 中 |
| 对齐 | Alignment | 人类/AI 偏好数据 | 有用、诚实、无害 | 中 |
- 预训练:让模型通过”预测下一个词”读遍互联网级语料,打下通用能力底座。这一阶段烧掉了整个训练预算的绝大部分。
- 监督微调(SFT):预训练出来的叫”基座模型”,它只会续写,不会好好回答问题。用几万到几百万条”指令 → 理想回答”的数据教它,它才变成能对话的助手。
- 对齐:让模型的输出更符合人类偏好——更 helpful、更安全。RLHF、DPO 都属于这一层。
理解了这条流水线,后面的”方式”就好归类了。
方式一:从零预训练(From Scratch)
从随机初始化的参数开始,完整训练一个模型。
这是最彻底也最昂贵的方式:
- 数据:通常需要 1 万亿(1T)token 以上,来源是网页、书籍、代码、论文的混合语料
- 算力:动辄数千张 GPU 连续跑数月
- 成本:主流开源模型的预训练成本普遍在数百万到数千万美元量级
代表案例:LLaMA、Qwen、DeepSeek、Mistral 等开源模型的基座,都是这样来的。
对个人和小团队,从零预训练基本不可行。 但如果你想理解原理,有几个出色的”小规模复现”项目值得动手:
- nanoGPT / nanochat(Andrej Karpathy):几百行代码讲透 GPT 训练
- TinyStories:用极简英文故事训练出能讲连贯故事的微型模型
方式二:继续预训练(Continued Pretraining)
不换模型,只是拿一个现成的基座,用你的领域语料再”预训练”一段时间。
比如你有大量医疗病历、法律文书或私有代码,希望模型”补上”这部分知识,就可以用这些语料继续预训练。
- 保留原有能力,同时吸收领域知识
- 比从零预训练便宜,但依然会更新全部参数,算力门槛不低
- 适合有海量领域语料的团队,而不是只有几百条问答的个人
一个关键判断:“注入新知识”用继续预训练或 RAG,“改变行为/格式”用微调。
方式三:全量微调(Full Fine-tuning)
用指令数据把模型的全部参数都更新一遍。
- 效果上限高,模型能深度适配你的任务分布
- 代价是显存和算力:7B 模型的全量微调,通常需要数十 GB 显存和一堆工程优化
- 数据质量远比数量重要,几千条精心构造的指令,常常胜过几十万条噪声数据
如果你的数据量很大、任务和通用能力差异明显、又有充足算力,全量微调是值得的。
方式四:参数高效微调(PEFT)
这是个人和小团队训练”自己的小模型”最现实的入口。核心思路:冻结原模型的大部分参数,只训练一小部分新增参数。
LoRA
在原有的权重矩阵旁注入一对低秩矩阵,只训练这两个小矩阵。可训练参数往往只有原模型的 0.1%~1%,显存和时间大幅下降,效果却接近全量微调。
QLoRA
在 LoRA 基础上,先把基座模型量化到 4-bit,再挂 LoRA。这样单张 24GB 显卡就能微调 7B~13B 的模型,几乎是个人玩家的标配方案。
其他 PEFT 方法
| 方法 | 思路 | 特点 |
|---|---|---|
| LoRA | 注入低秩矩阵 | 最主流,效果/成本平衡好 |
| QLoRA | 4-bit 量化 + LoRA | 显存最省,单卡可玩 |
| Adapter | 插入小网络层 | 结构清晰,略增推理延迟 |
| Prefix / Prompt Tuning | 训练虚拟 token | 参数极少,能力上限有限 |
一个 LoRA 微调的核心代码大致长这样(基于 Hugging Face PEFT):
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=8, # 低秩维度
lora_alpha=16,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
model = get_peft_model(base_model, config)
model.print_trainable_parameters()
# trainable params: 4,194,304 || all params: 6,742,609,920 || 0.06%
不到 0.1% 的参数被训练,却能显著改变模型行为——这就是 PEFT 的魅力。
方式五:对齐训练
微调让模型”会回答”,对齐让模型”答得让人满意”。主流方法:
- RLHF(基于人类反馈的强化学习):先训练一个奖励模型来打分,再用 PPO 优化主模型。效果强,但流程复杂、训练不稳定,需要同时维护多个模型。
- DPO(直接偏好优化):直接拿”好回答 vs 坏回答”的偏好对来训练,跳过奖励模型和 PPO,实现简单、稳定,是当前最常用的对齐方法。
- GRPO(组相对策略优化):让模型对同一个问题生成一组回答,组内相互比较来算优势,省掉了价值网络。DeepSeek 的推理模型就是用它做强化学习的。
- RLAIF:用 AI 生成的反馈代替人类标注,降低偏好数据的获取成本。
一般建议:先做好 SFT,再考虑对齐。 基座没调好,直接上 RLHF 往往是浪费算力。
方式六:知识蒸馏(Distillation)
让大模型当老师,小模型当学生。
学生模型不仅学习标准答案(硬标签),还学习老师输出的完整概率分布(软标签),甚至学习老师的推理过程(思维链蒸馏)。
- 目标:用 7B 的成本,逼近 70B 在特定任务上的表现
- 常用于把大模型能力”压缩”到可本地部署的小模型
- 需要能访问老师的输出分布,或至少能批量拿到高质量推理数据
两个常被误当成”训练”的方法
- RAG(检索增强生成):把知识放进向量库,回答时检索出来喂给模型。完全不改参数。 想快速让模型掌握频繁变化的私有知识,RAG 通常比微调更划算、更易维护。
- Prompt Engineering:靠提示词引导模型。零训练成本,但能力受限于基座本身。
一句话区分:RAG 补知识,微调改行为,提示词调表达。
训练一个模型,还绕不开这些工程问题
- 数据:清洗、去重、质量过滤、领域配比、tokenizer 选择——数据决定上限
- 并行策略:数据并行(DP)、张量并行(TP)、流水线并行(PP)、ZeRO / FSDP 显存优化
- 训练框架:PyTorch、Hugging Face Transformers / TRL / PEFT、DeepSpeed、Megatron-LM
- 低门槛工具:Unsloth(提速省显存)、Axolotl、LLaMA-Factory(配置即用)
- 评估与推理:基准测试、以及 vLLM / Ollama 等部署方案
如果你只想训一个”自己的小模型”
给个人和小团队的推荐路线:
- 别碰从零预训练,那是大厂游戏
- 选一个开源小模型作基座:Qwen2.5-0.5B/1.5B/7B、Llama 3.2 1B/3B 都是好起点
- 先用 QLoRA 做 SFT,单卡就能跑起来
- 数据从几百到几千条高质量指令起步,先跑通再扩充
- 需要偏好对齐时,再上 DPO
- 始终保留一套固定的评估集,每次改动都对比
四个常见误区
- 数据越多越好:低质数据会拖垮模型,质量优先于数量
- 微调能注入新知识:微调更擅长改变行为和输出格式;灌知识优先考虑继续预训练或 RAG
- 全量微调一定强于 LoRA:在数据量不大时,LoRA 往往效果相当而成本低一个量级
- 训练完就结束了:评估、部署、迭代才是长期工作的大头
小结
训练大模型不是一招,而是一条光谱:
- 想要通用能力底座 → 从零预训练(大厂专属)
- 想补领域知识 → 继续预训练
- 想改变模型行为 → SFT 微调(全量或 LoRA/QLoRA)
- 想让输出更符合偏好 → DPO / GRPO 等对齐
- 想把大模型能力压小 → 蒸馏
- 想不改参数就用私有知识 → RAG
对绝大多数人来说,真正可行的起点是”开源小模型 + QLoRA 微调”。先跑通这条链路,你会发现训练一个模型,比想象中近得多。
相关推荐
训练和部署大模型,GPU 怎么选?
训练和推理对 GPU 的要求完全不同。本文讲清显存、算力、带宽、互联的区别,给出显存-能力对照、分场景选型、租还是买的判断,以及中国可买型号的注意点。
聊天场景如何选基座?一份可执行的选型清单
做聊天/陪伴类 AI 产品,选基座比选模型更重要。本文给出六个选型维度、要避开的“助手腔”陷阱、当前主流开源候选对比,以及一套三天选型对测方法。
SFT 是什么?搞懂监督微调:从数据集到训练自己的模型
SFT 是训练自己模型的第一步,也是最关键的一步。本文讲清 SFT 在训练流程中的位置、数据集格式、只对 assistant 算 loss、全量与 LoRA 的取舍,以及常见踩坑。