系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

colossalai

ColossalAI 分布式训练:用 Gemini/ZeRO、张量并行和自动并行策略训练大模型

补充说明

ColossalAI 是一个分布式训练框架,提供 Gemini(显存管理)、ZeRO、张量并行、流水线并行、序列并行和自动并行策略。它适合在有限 GPU 上训练超出单卡显存的模型,也提供面向 Hugging Face 模型的轻量封装。和 DeepSpeed/FSDP 的目标重叠,但插件抽象和自动并行能力不同。

ColossalAI 的入口是 colossalai run 和 booster/plugin。选择插件前先明确瓶颈:显存不足优先 Gemini/ZeRO,单层算不动考虑张量并行,层数太多考虑流水线并行。不要一开始就开满所有并行策略,先用小模型验证正确性。

常用示例

# 安装
pip install colossalai

# 8 卡启动
colossalai run --nproc_per_node 8 train.py

# 多机:指定 hostfile
colossalai run --hostfile hosts --nproc_per_node 8 train.py
import colossalai
from colossalai.booster import Booster
from colossalai.booster.plugin import GeminiPlugin, HybridParallelPlugin

# 初始化分布式环境
colossalai.launch_from_torch()

# Gemini:面向显存优化的 ZeRO 风格插件
plugin = GeminiPlugin(placement_policy="auto", precision="bf16")
booster = Booster(plugin=plugin)

model, optimizer, criterion, dataloader, lr_scheduler = booster.boost(
    model, optimizer, criterion, dataloader, lr_scheduler
)

# 训练循环按 booster 的接口执行
# 混合并行:张量并行 + 数据并行
plugin = HybridParallelPlugin(
    tp_size=2, pp_size=1, num_microbatches=4, precision="bf16"
)
booster = Booster(plugin=plugin)

不同版本的 API 和插件参数会变化;以当前版本文档为准,先用单机 2 卡跑通再扩到多机。

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. Gemini 插件主要解决什么问题?
  2. 张量并行、流水线并行和数据并行分别适合什么瓶颈?
  3. 为什么并行训练后学习率/梯度累积要重新检查?
答案
  1. Gemini 通过分片参数/梯度/优化器状态和显存管理,降低单卡显存占用,支持超出单卡容量的模型训练。
  2. 数据并行适合吞吐扩展;张量并行切分单层矩阵,适合单层过大;流水线并行切分层,适合层数多、单卡放不下整个模型。
  3. 并行后全局 batch 和单卡 micro-batch 的关系变化,学习率和梯度累积步数要按全局 batch 重新计算,否则收敛行为会变。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令