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 卡跑通再扩到多机。
hostfile、MASTER_ADDR/PORT、网卡和 NCCL 环境变量要一致;先跑 nccl-tests。合上页面,先回答,再展开对照。
小程序版
微信扫码,随时查命令