Chapter 01
项目背景与定位
1.1 一句话定位
ColossalAI 是新加坡国立大学尤洋老师创立的 HPC-AI Tech 团队开源的、主打"低成本训练大模型"的国产分布式深度学习框架。它把 ZeRO、张量并行、流水线并行、序列并行、Gemini 异构内存等多种并行手段,通过一个统一的 Booster + Plugin API 抽象到一起,让用户只需要"换一行 plugin 就换一种并行策略"。
ColossalAI 在中文社区影响力很大,背后既有学术论文支撑(FastFold、Open-Sora、Colossal-LLaMA),也有商业公司在做产品化推广。
1.2 为什么会有 ColossalAI
ColossalAI 诞生于 2021 年左右,那时 DeepSpeed 已经有 ZeRO、Megatron-LM 已经有 TP/PP,但两者的取向都偏向"专家用法":
- DeepSpeed 用 JSON 配置,对 ZeRO 是一等公民、对 TP/PP 不那么自然;
- Megatron-LM 把张量并行写进了模型实现里,接入业务模型成本高;
- 大量用户的真实诉求是:"我有一台 8 卡 A100,想训个 13B 模型,最好不要从头写并行代码。"
ColossalAI 的答案是抽出一层 Booster:
plugin = GeminiPlugin(...) # 想换成 HybridParallelPlugin 就一行
booster = Booster(plugin=plugin)
model, optimizer, ... = booster.boost(model, optimizer, ...)
后面写训练循环时,模型和优化器看上去就是普通 PyTorch 对象,但底层已经被切分、被卸载、被流水线了。
1.3 它的"卖点矩阵"
| 模块 | 主打能力 | 类比 |
|---|---|---|
| Gemini | 把模型参数 / 梯度 / 优化器在 GPU↔CPU 之间动态搬运 | 类似 DeepSpeed ZeRO-3 + Offload |
| HybridParallelPlugin | DP + TP + PP + ZeRO 一锅炖,一份 config 切换 | 类似 Megatron 3D 并行 |
| ShardFormer | 自动识别 HF 模型的 attention/MLP,做 TP 切分 | 减少手写并行代码 |
| Chunk Manager | 把参数划成大小相近的 chunk,按 chunk 通信和卸载 | 自创概念 |
| ColossalChat / Open-Sora | 上层产品,分别针对 RLHF 和文生视频 | 类比 DeepSpeed-Chat |
1.4 设计哲学:易用性优先 + 中文社区友好
- 大量使用面向对象的 Plugin 抽象,外部用户感觉"看得懂、改得动";
- CLI 和示例脚本对中文用户友好,文档双语,issue 中文回复活跃;
- 跟 HuggingFace 模型库高度兼容:直接
from_pretrained一个 Llama / Qwen / Mistral,然后用ShardFormer自动并行; - 不过分追求"千亿模型极限性能"——在 8 卡 / 16 卡 / 32 卡这种"中小规模集群"上调优很到位。
这意味着它的精确定位是:"中型集群 + 想用主流开源模型 + 不想从零搞并行"的甜点区。
1.5 它适合用来做什么、不适合做什么
| 判断 | 典型场景 |
|---|---|
| ✅ 适合 | 一台到几台 8 卡服务器,要训 7B-70B 中文增强 / 行业模型 |
| 想用 HuggingFace 模型库的模型但需要 TP/PP | |
| 想跑 RLHF、文生图、文生视频,又不想把不同框架拼来拼去 | |
| 国内网络环境,希望文档、issue 都能用中文交流 | |
| ❌ 不适合 | 1000+ 卡集群,目标 SOTA 训练速度 |
| 想用 FP8 / TransformerEngine 极致硬件特性 | |
| 不在乎 plugin 抽象,宁愿直接读 Megatron 源码做精细控制 |
1.6 本书将怎么带你走完这趟旅程
- 第 2-3 章先解决"为什么我装完就 import 失败"以及"怎么从单卡 demo 跑到 8 卡";
- 第 4 章讲清楚
Booster + Plugin这套抽象; - 第 5-7 章逐个剖析三大杀手锏:Gemini 异构内存、HybridParallel 3D 并行、ShardFormer 自动并行;
- 第 8-9 章两个完整实战:中文 Llama 继续预训练 + ColossalChat RLHF;
- 第 10-12 章性能优化、调试和 checkpoint 转换;
- 第 13 章给一张源码地图。