综合介绍
ColossalAI是由HPC-AI技术公司开发的开源平台,旨在为大规模AI模型的训练和推理提供高效、低成本的解决方案。通过支持多种并行策略、异构内存管理和混合精度训练,ColossalAI能够显著减少模型训练和推理的时间和资源消耗。无论是在数据并行、张量并行还是流水线并行等方面,ColossalAI都提供了强大的工具和库,帮助研究人员和开发者在多GPU集群上实现大规模模型的高效训练和推理。
功能列表
- 数据并行、张量并行、流水线并行等多种并行策略支持
- 混合精度训练和零冗余优化器(ZeRO)
- 异构内存管理,支持大模型的高效训练
- 支持多种领域特定模型,如Open-Sora、Colossal-LLaMA等
- 提供分布式训练和推理的用户友好工具
- 集成高性能内核、KV缓存、分页注意力和连续批处理等技术
- 通过配置文件实现并行训练的简便配置
- 提供丰富的示例和文档,助力快速上手
- 提供Docker镜像和从源码构建的多种安装方式
使用帮助
安装指南
从PyPI安装
您可以通过以下命令轻松安装Colossal-AI:
pip install colossalai
默认情况下,不会在安装过程中构建PyTorch扩展。如果需要构建PyTorch扩展,可以设置BUILD_EXT=1
:
BUILD_EXT=1 pip install colossalai
此外,我们每周都会发布nightly版本,允许您访问最新的未发布功能和bug修复。安装方式如下:
pip install colossalai-nightly
从源码安装
git clone https://github.com/hpcaitech/ColossalAI.git
cd ColossalAI
pip install .
默认情况下不会编译CUDA/C++内核。ColossalAI将在运行时构建它们。如果需要启用CUDA内核融合:
BUILD_EXT=1 pip install .
对于CUDA 10.2用户,可以手动下载cub库并将其复制到相应目录后再进行安装。
使用Docker
从DockerHub拉取镜像
您可以直接从DockerHub页面拉取Docker镜像。
自行构建镜像
cd ColossalAI
docker build -t colossalai ./docker
启动交互模式的容器:
docker run -ti --gpus all --rm --ipc=host colossalai bash
功能操作流程
数据并行
数据并行是将数据集划分成多个子集,并在多个GPU上并行训练模型。ColossalAI通过简化的数据并行配置文件,使得用户能够轻松实现数据并行训练:
from colossalai.nn.parallel import DataParallel
model = DataParallel(model)
张量并行
张量并行是将模型的参数张量划分成多个子张量,并在多个GPU上并行计算。ColossalAI提供了1D、2D、2.5D和3D张量并行的实现:
from colossalai.nn.parallel import TensorParallel
model = TensorParallel(model, parallel_mode='1D')
流水线并行
流水线并行是将模型分成多个阶段,每个阶段由一个或多个GPU执行。ColossalAI提供了简便的流水线并行配置:
from colossalai.pipeline.parallel import PipelineParallel
model = PipelineParallel(model, num_stages=4)
混合精度训练
混合精度训练通过在训练过程中使用16位浮点数(FP16)和32位浮点数(FP32)相结合,能够显著减少显存使用并加快训练速度:
from colossalai.amp import convert_to_amp
model, optimizer, criterion = convert_to_amp(model, optimizer, criterion)
零冗余优化器(ZeRO)
ZeRO优化器通过将优化器状态、梯度和参数分布到多个GPU上,显著减少了显存占用:
from colossalai.zero import ZeroOptimizer
optimizer = ZeroOptimizer(optimizer, model)
真实世界应用
Open-Sora
Open-Sora是ColossalAI为视频生成模型提供的一套完整解决方案,包括模型参数、训练细节和一键生成16秒720p高清视频的功能:
# 训练
python train.py
# 推理
python infer.py
详细信息请参见Open-Sora。
Colossal-LLaMA
Colossal-LLaMA提供了一个开源的领域特定大语言模型(LLM)解决方案,通过少量训练资金即可获得与主流大模型相当的效果:
# 训练
python train_llama.py
# 推理
python infer_llama.py
详细信息请参见Colossal-LLaMA。