从预训练到持续对齐:大语言模型后训练全流程实战
PipelineLLM 是一个系统性的大语言模型(LLM)后训练学习项目,涵盖从监督微调(SFT)到偏好优化(DPO)、强化学习(RLHF/PPO/GRPO)再到持续学习(Continual Learning)的完整技术栈。
在大模型时代,预训练只是起点。一个真正可用、可信、可控的 LLM,需要经历:
预训练 → SFT(学会说话)→ DPO/RL(说得更好)→ 持续学习(与时俱进)
本项目以理论+实战的方式,带你走完这条完整的流水线。
- 作者注:
- 1)本项目与AI共同开发完成,部分文档和代码由AI撰写;
- 2)部分文档还在努力完善中,欢迎PR!
- 3)由于markdown的兼容性问题,在github上的md文档的有些公式可能显示有问题,读者可以下载到本地阅读(例如使用Typora浏览),我也会尽可能贴合github的格式需求,感谢谅解。
| 痛点 | PipelineLLM 的解决方案 |
|---|---|
| 碎片化学习,难以形成体系 | 7 天课程,环环相扣,从基础到前沿 |
| 理论与实践脱节 | 每个模块配套可运行代码 |
| 缺乏中文资料 | 全中文文档,适合中文开发者 |
| 不知道如何选择技术路线 | 对比分析 SFT/DPO/RL 的适用场景 |
| 持续学习被忽视 | 专门两天讲解 CL 及其在 LLM 中的应用 |
- 系统性:覆盖后训练全流程,理解技术间的依赖关系
- 实用性:基于 QLoRA 的单卡训练方案,4080 即可运行
- 前沿性:涵盖 GRPO、DAPO、GSPO、CPPO 等最新RL/CL算法
- 可扩展性:模块化设计,便于扩展和定制
PipelineLLM/
│
├── 📚 LLM_Background/ # 基础知识
│ ├── transformer/ # Transformer 从零实现
│ │ ├── transformer_model.py # 完整 Transformer(含交叉注意力)
│ │ └── simple_tokenizer.py # 简易分词器
│ └── gpu_mem/ # 显存计算与优化
│
├── 📖 LLM_Intro/ # LLM 架构入门
│ ├── llm_archs/ # 主流架构解析(GPT/LLaMA/DeepSeek)
│ └── llm_processes/ # 预训练与微调流程
│
├── 🎓 Post_train/ # 后训练核心课程
│ ├── Day 1_课程总览.md # 课程导览与学习路线
│ ├── Day 2_SFT 实战.md # 监督微调
│ ├── Day 3_偏好优化.md # DPO 理论与实践
│ ├── Day 4_强化学习(上).md # RL 理论基础
│ ├── Day 5_强化学习(下).md # LLM-RL 实战
│ ├── Day 6_持续学习.md # CL 经典方法
│ ├── Day 7 LLM与持续学习.md # LLM-CL 前沿
│ ├── Appendix_RL 算法总结.md # RL 算法速查表
│ │
│ ├── 🔧 sft_qlora/ # SFT 实战代码
│ │ ├── train.py # QLoRA 训练脚本
│ │ ├── config.py # 训练配置
│ │ └── merge_model.py # 权重合并
│ │
│ ├── 🎯 dpo/ # DPO 实战代码
│ │ ├── train_dpo.py # DPO 训练脚本
│ │ ├── mini_dpo.py # 极简 DPO 实现
│ │ └── dataset/ # 偏好数据处理
│ │
│ ├── 🎮 rlhf/ # 强化学习模块
│ │ ├── Qlearning/ # Q-Learning 入门
│ │ ├── PPO/ # PPO 算法实现
│ │ ├── GRPO/ # GRPO 算法实现
│ │ └── RewardModel/ # 奖励模型训练
│ │
│ └── 📄 papers/ # 参考论文
│
└── README.md # 本文件
| Day | 主题 | 核心内容 | 关键技术 |
|---|---|---|---|
| Day 2 | SFT 监督微调 | 让模型"学会说话" | QLoRA, Assistant-only Loss, Packing |
| Day 3 | 偏好优化 | 让模型"说得更好" | DPO, Bradley-Terry Model |
| Day | 主题 | 核心内容 | 关键技术 |
|---|---|---|---|
| Day 4 | RL 理论 | 理论武装 | MDP, Bellman, 策略梯度, PPO |
| Day 5 | LLM-RL | 实战落地 | RLHF, 奖励模型, GRPO, DAPO,GSPO |
| Day | 主题 | 核心内容 | 关键技术 |
|---|---|---|---|
| Day 6 | 持续学习 | 学新不忘旧 | EWC, LwF, iCaRL, MoE |
| Day 7 | LLM-CL | 终身学习 | CPT, CFT, CA, CPPO, InsCL |
# Python 版本
Python >= 3.10
# 核心依赖
torch >= 2.1.0
transformers >= 4.40.0
peft >= 0.10.0
trl >= 0.8.0
bitsandbytes >= 0.43.0
datasets >= 2.18.0
# 可选:加速训练
unsloth # 2x 加速
flash-attn # FlashAttention# 克隆项目
git clone https://github.com/your-username/PipelineLLM.git
cd PipelineLLM
# 创建虚拟环境
conda create -n pipelinellm python=3.10
conda activate pipelinellm
# 安装依赖
pip install torch transformers peft trl bitsandbytes datasets
pip install unsloth # 可选,加速训练# 1. SFT 训练
cd Post_train/sft_qlora
python train.py
# 2. DPO 训练
cd Post_train/dpo
python train_dpo.py
# 3. Q-Learning 可视化
cd Post_train/rlhf/Qlearning
python train_qlearning.py
# 4. 奖励模型训练
cd Post_train/rlhf/RewardModel
python train_reward_model.py| 技术 | 用途 | 显存节省 |
|---|---|---|
| QLoRA | 4-bit 量化 + LoRA | ~75% |
| Gradient Checkpointing | 用计算换显存 | ~30% |
| Flash Attention | 高效注意力计算 | ~20% |
| Packing | 减少 padding 浪费 | ~15% |
| 算法 | 文件位置 | 说明 |
|---|---|---|
| Transformer | LLM_Background/transformer/ |
从零实现,含交叉注意力 |
| LoRA | LLM_Intro/llm_processes/lora/ |
低秩适配详解 |
| Q-Learning | Post_train/rlhf/Qlearning/ |
RL 入门 |
| PPO | Post_train/rlhf/PPO/ |
策略优化核心算法 |
| GRPO | Post_train/rlhf/GRPO/ |
组内相对优化 |
| DPO | Post_train/dpo/ |
直接偏好优化 |
| Reward Model | Post_train/rlhf/RewardModel/ |
奖励模型训练 |
| 模型规模 | 训练方式 | 最低显存 | 推荐显存 |
|---|---|---|---|
| 4B | QLoRA | 8 GB | 12 GB |
| 8B | QLoRA | 12 GB | 16 GB |
| 14B | QLoRA | 18 GB | 24 GB |
| 72B | QLoRA | 48 GB | 80 GB |
本项目主要使用以下模型进行实验:
- Qwen3-1.7B/Qwen3-4B / Qwen3-8B:适合单卡LoRA训练
- Training language models to follow instructions with human feedback (InstructGPT)
- Direct Preference Optimization (DPO)
- Proximal Policy Optimization Algorithms (PPO)
- DeepSeekMath: Pushing the Limits of Mathematical Reasoning (GRPO)
- QLoRA: Efficient Finetuning of Quantized LLMs
- Overcoming catastrophic forgetting in neural networks (EWC)
- iCaRL: Incremental Classifier and Representation Learning
- Continual Learning for Large Language Models: A Survey
本项目采用 MIT 许可证 - 详见 LICENSE 文件
🎯 目标:让每个人都能训练出自己的 LLM
Made with ❤️ by Haoran
