Colossal-AI is a unified deep learning system for large-scale parallel training and inference. It lets you scale a model that runs on your laptop to a multi-GPU cluster by changing only a few lines of code. Instead of rewriting your training loop for every parallelism strategy, you pick a plugin (a parallelism recipe) and wrap your model, optimizer, dataloader, and scheduler with a single Booster object.
This guide shows you how to install Colossal-AI, launch distributed jobs, train models with each parallelism strategy, run accelerated inference, and use the higher-level applications (chat/RLHF, domain LLM fine-tuning, MoE, evaluation, and retrieval-augmented Q&A).
Note
Colossal-AI runs on Linux only. The installer raises an error on Windows. If you are on Windows, use the Windows Subsystem for Linux (WSL). See Troubleshooting.
Table of Contents
- Quick Start
- Requirements
- Installation
- Launching Distributed Jobs
- The Booster Training Workflow
- Choosing a Parallelism Plugin
- Optimizers
- Saving and Loading Checkpoints
- Mixed Precision, LoRA, and Memory Tricks
- Accelerated Inference
- Applications
- Common Tasks (Recipes)
- Troubleshooting
- FAQ
- Command & API Reference
1. Quick Start
The smallest possible Colossal-AI training script. It initializes the distributed environment, wraps your model in a Booster with a plugin, and runs a normal-looking PyTorch loop.
import colossalai
from colossalai.booster import Booster
from colossalai.booster.plugin import TorchDDPPlugin
from colossalai.nn.optimizer import HybridAdam
# 1. initialize the distributed environment (reads RANK/WORLD_SIZE/MASTER_ADDR from env)
colossalai.launch_from_torch()
# 2. build your model, optimizer, criterion, dataloader, scheduler as usual
model = MyModel()
optimizer = HybridAdam(model.parameters(), lr=1e-3)
criterion = lambda outputs, targets: torch.nn.functional.cross_entropy(outputs, targets)
dataloader = ...
lr_scheduler = ...
# 3. pick a plugin and create the Booster
plugin = TorchDDPPlugin()
booster = Booster(plugin=plugin)
# 4. boost everything — this injects the parallelism strategy
model, optimizer, criterion, dataloader, lr_scheduler = booster.boost(
model, optimizer, criterion, dataloader, lr_scheduler
)
# 5. train with a standard loop, but use booster.backward(...) instead of loss.backward()
for epoch in range(10):
for inputs, targets in dataloader:
inputs, targets = inputs.cuda(), targets.cuda()
outputs = model(inputs)
loss = criterion(outputs, targets)
booster.backward(loss, optimizer)
optimizer.step()
lr_scheduler.step()
optimizer.zero_grad()
Launch it on 4 GPUs of your current machine:
colossalai run --nproc_per_node 4 train.py
Distributed environment is initialized, world size: 4
Tip
The only structural difference from a single-GPU PyTorch script is steps 3–4 (choose a plugin, call
booster.boost) and usingbooster.backward(loss, optimizer)instead ofloss.backward(). To scale up, you change the plugin, not the loop.
2. Requirements
| Requirement | Minimum |
|---|---|
| Operating system | Linux (Windows via WSL only) |
| Python | >= 3.7 |
| PyTorch | >= 2.2 |
| CUDA | >= 11.0 |
| NVIDIA GPU compute capability | >= 7.0 (V100 / RTX 20-series and newer) |
Important
The pip package installs without compiling any CUDA/C++ kernels by default. Fused kernels (required by fused optimizers such as
FusedAdam) are either built at runtime on first use or built at install time when you setBUILD_EXT=1. See Installation.
3. Installation
Install from PyPI
Stable (no kernel build)
pip install colossalai
By default no PyTorch extensions are compiled. CUDA kernels are built lazily the first time you use a feature that needs them.
Stable (build kernels now)
BUILD_EXT=1 pip install colossalai
Compiles the fused CUDA/C++ kernels during installation. Use this if you want fused optimizers available immediately or want to fail fast on a broken toolchain.
Nightly
pip install colossalai-nightly
A weekly build that tracks main, giving you unreleased features and fixes.
Install from source
git clone https://github.com/hpcaitech/ColossalAI.git
cd ColossalAI
# install without building kernels (built lazily at runtime)
pip install .
# OR install and compile CUDA/C++ kernel fusion now
BUILD_EXT=1 pip install .
Successfully installed colossalai-0.5.0
Note
If you are on CUDA 10.2 you must manually download the NVIDIA
cublibrary before building. See the Admin Guide for the exact commands and build internals.
Verify your installation
colossalai check -i
#### Installation Report ####
...
CUDA Version: ...
PyTorch Version: ...
CUDA extensions: ...
4. Launching Distributed Jobs
Colossal-AI ships a launcher CLI, colossalai run, that starts one process per GPU and wires up the torch.distributed environment variables your script reads with colossalai.launch_from_torch().
Single node
# 4 GPUs on this machine, default port 29500
colossalai run --nproc_per_node 4 train.py
# 4 GPUs at a custom port
colossalai run --nproc_per_node 4 --master_port 29550 train.py
Multiple nodes
By host list
colossalai run --host host1,host2 --master_addr host1 --nproc_per_node 4 train.py
By hostfile
A hostfile lists one hostname per line:
worker-0
worker-1
worker-2
colossalai run --hostfile ./hostfile --master_addr host1 --nproc_per_node 4 train.py
Subset of hostfile
# only these hosts
colossalai run --hostfile ./hostfile --master_addr host1 --include host1,host2 --nproc_per_node 4 train.py
# all hosts except these
colossalai run --hostfile ./hostfile --master_addr host1 --exclude host2 --nproc_per_node 4 train.py
Warning
--includeand--excludeare mutually exclusive — using both prints an error and exits. Both are only effective together with--hostfile.
Initializing the environment inside your script
Pick the launch_* helper that matches how the job is started:
| Launcher | Use when started by | Reads from environment |
|---|---|---|
colossalai.launch_from_torch() |
colossalai run / torchrun |
RANK, LOCAL_RANK, WORLD_SIZE, MASTER_ADDR, MASTER_PORT |
colossalai.launch_from_slurm(host, port) |
SLURM (srun) |
SLURM_PROCID, SLURM_NPROCS |
colossalai.launch_from_openmpi(host, port) |
OpenMPI (mpirun) |
OMPI_COMM_WORLD_RANK, OMPI_COMM_WORLD_LOCAL_RANK, OMPI_COMM_WORLD_SIZE |
colossalai.launch(rank, world_size, host, port) |
Manual / custom | You supply everything |
# torchrun / colossalai run
colossalai.launch_from_torch(seed=42)
# SLURM
colossalai.launch_from_slurm(host="node01", port=29500, seed=42)
Tip
Set
seed=in the launch call to make every process use the same random seed. The default is1024.
5. The Booster Training Workflow
The Booster is the central API. It takes your ordinary PyTorch objects and a plugin, and returns "boosted" versions that transparently apply the chosen parallelism, mixed precision, and checkpointing strategy.
from colossalai.booster import Booster
from colossalai.booster.plugin import GeminiPlugin
plugin = GeminiPlugin(placement_policy="auto")
booster = Booster(plugin=plugin)
model, optimizer, criterion, dataloader, lr_scheduler = booster.boost(
model, optimizer, criterion, dataloader, lr_scheduler
)
The methods you actually call
| Method | What it does |
|---|---|
booster.boost(model, optimizer, criterion, dataloader, lr_scheduler) |
Wraps and returns all five objects with the plugin's strategy applied. Only model is required; the rest are optional. |
booster.backward(loss, optimizer) |
Runs the backward pass. Use this instead of loss.backward() — it routes through the optimizer so gradient scaling/sharding works. |
booster.execute_pipeline(data_iter, model, criterion, optimizer) |
Runs a fused forward+backward step. Required when your plugin uses pipeline parallelism (see below). |
booster.no_sync(model=..., optimizer=...) |
Context manager that skips gradient sync — use it for gradient accumulation. Supported by DDP and Low-Level ZeRO-1. |
booster.enable_lora(model, lora_config=...) |
Wraps the model with LoRA adapters (uses Hugging Face PEFT). |
booster.save_model / load_model / save_optimizer / load_optimizer / save_lr_scheduler / load_lr_scheduler |
Checkpoint I/O that understands sharded/distributed state. See Checkpoints. |
Pipeline-parallel loops are different
When your plugin enables pipeline parallelism (pp_size > 1), do not write the normal model(input) / booster.backward(...) pattern. Use execute_pipeline, which drives the forward and backward micro-batch schedule for you:
outputs = booster.execute_pipeline(
data_iter, # iter(dataloader) or iter([batch])
model,
criterion=lambda outputs, inputs: outputs.loss,
optimizer=optimizer,
return_loss=True,
return_outputs=False,
)
loss = outputs["loss"] # only populated on the last pipeline stage
optimizer.step()
optimizer.zero_grad()
Caution
Mixing the conventional
loss.backward()path with a pipeline-parallel plugin causes incorrect results or runtime errors. Pick one:execute_pipelinefor pipeline plugins,booster.backwardfor everything else.
6. Choosing a Parallelism Plugin
The plugin decides how your model is distributed. All plugins share the Booster interface, so swapping strategies is a one-line change. Pick based on model size and the kind of parallelism you need.
| Plugin | Strategy | Best for |
|---|---|---|
TorchDDPPlugin |
Plain PyTorch DistributedDataParallel | Models that fit on one GPU; pure data parallelism |
TorchFSDPPlugin |
PyTorch Fully Sharded Data Parallel | Sharded data parallelism using native PyTorch FSDP |
LowLevelZeroPlugin |
ZeRO stage 1 or 2 (shard optimizer / + gradients) | Medium models; cut optimizer-state memory with little code change |
GeminiPlugin |
ZeRO-3 with heterogeneous (CPU/NVMe) memory management | Very large models on limited GPU memory; automatic offload |
HybridParallelPlugin |
Tensor + pipeline + sequence + ZeRO, composed | Largest models; full 3D/4D parallelism for transformers |
MoeHybridParallelPlugin |
Hybrid parallelism + expert parallelism | Mixture-of-Experts models |
TorchDDPPlugin — start here
from colossalai.booster.plugin import TorchDDPPlugin
plugin = TorchDDPPlugin()
Pure data parallelism. Every GPU holds a full model replica. Good when the model fits comfortably in GPU memory and you just want more throughput.
LowLevelZeroPlugin — shrink optimizer memory
from colossalai.booster.plugin import LowLevelZeroPlugin
# stage 1 shards optimizer states; stage 2 also shards gradients
plugin = LowLevelZeroPlugin(stage=2, precision="bf16", cpu_offload=True)
Tip
cpu_offload=Truemoves optimizer state to CPU RAM, freeing GPU memory at the cost of some speed — a good first lever when you hit out-of-memory.
GeminiPlugin — train models bigger than one GPU
from colossalai.booster.plugin import GeminiPlugin
plugin = GeminiPlugin(
placement_policy="auto", # let Gemini decide what lives on GPU vs CPU
precision="bf16",
offload_optim_frac=1.0, # offload all optimizer state to CPU
)
Gemini implements ZeRO-3 with a chunk-based memory manager that automatically moves parameters between GPU and CPU (and optionally NVMe) so you can train models far larger than a single GPU's memory.
HybridParallelPlugin — the full toolbox
from colossalai.booster.plugin import HybridParallelPlugin
plugin = HybridParallelPlugin(
tp_size=2, # tensor parallel degree (required)
pp_size=2, # pipeline parallel degree (required)
zero_stage=1,
precision="bf16",
enable_all_optimization=True, # turn on fused norm / flash attention / etc.
num_microbatches=4, # needed when pp_size > 1
)
tp_size × pp_size × (data-parallel degree, inferred from world size) must divide your total GPU count. With pp_size > 1, use execute_pipeline (see above) and set num_microbatches or microbatch_size.
Note
enable_all_optimization=Trueswitches on Shardformer's transformer optimizations (fused normalization, flash attention, JIT fusion). It works best with standard Hugging Face transformer architectures.
MoeHybridParallelPlugin — Mixture of Experts
from colossalai.booster.plugin import MoeHybridParallelPlugin
plugin = MoeHybridParallelPlugin(
tp_size=1, pp_size=1, ep_size=4, # ep_size = expert-parallel degree (required)
precision="bf16",
)
The full option table for every plugin (dozens of tuning knobs each) is in the Admin Guide → Plugin Configuration Reference.
7. Optimizers
Colossal-AI provides drop-in optimizers, several of which are required to unlock memory savings. Import them from colossalai.nn.optimizer.
| Optimizer | Notes |
|---|---|
HybridAdam |
Adam that runs on both CPU and GPU — the recommended optimizer for Gemini/ZeRO with offload. |
CPUAdam |
Adam computed on CPU; pairs with CPU offload. |
FusedAdam, FusedLAMB, FusedSGD |
Fused-kernel versions (need BUILD_EXT=1 or runtime build). |
Lamb, Lars |
Large-batch optimizers. |
GaLoreAdamW, GaLoreAdamW8bit, GaLoreAdafactor |
GaLore low-rank gradient projection (memory-efficient). |
Adafactor, CAME |
Memory-efficient adaptive optimizers. |
DistributedLamb, DistributedCAME, DistributedAdaFactor, DistGaloreAwamW |
Distributed (tensor-parallel-aware) variants. |
from colossalai.nn.optimizer import HybridAdam
optimizer = HybridAdam(model.parameters(), lr=1e-3)
Important
When you use a fused optimizer such as
FusedAdam, the fused CUDA kernel must be available. Either install withBUILD_EXT=1or let Colossal-AI build it at runtime (the first step will pause to compile).
8. Saving and Loading Checkpoints
Always save and load through the Booster, not torch.save/torch.load — only the Booster understands sharded and distributed state produced by ZeRO/tensor-parallel plugins.
# save (sharded, HF-transformers-style folder)
booster.save_model(model, "ckpt/model", shard=True, size_per_shard=1024, use_safetensors=True)
booster.save_optimizer(optimizer, "ckpt/optimizer", shard=True)
booster.save_lr_scheduler(lr_scheduler, "ckpt/scheduler.pt")
# load
booster.load_model(model, "ckpt/model")
booster.load_optimizer(optimizer, "ckpt/optimizer")
booster.load_lr_scheduler(lr_scheduler, "ckpt/scheduler.pt")
| Argument | Meaning |
|---|---|
shard=True |
Write a multi-file sharded checkpoint (a directory). shard=False writes a single file. |
size_per_shard |
Max shard size in MB (default 1024). Only used when shard=True. |
use_safetensors=True |
Save in the .safetensors format (requires the safetensors package). |
use_async=True |
Save asynchronously to overlap I/O with compute. |
Tip
Sharded + safetensors checkpoints are directly compatible with the Hugging Face ecosystem, making it easy to share or resume models.
9. Mixed Precision, LoRA, and Memory Tricks
Mixed precision
Most plugins control precision through their precision= argument ("fp16", "bf16", and on supported plugins "fp8"). If you are not using a plugin that controls precision, set it on the Booster directly:
booster = Booster(mixed_precision="bf16")
Valid Booster precision strings: "fp16" (PyTorch AMP), "fp16_apex" (NVIDIA Apex), "bf16", "fp8".
LoRA fine-tuning
from peft import LoraConfig
lora_config = LoraConfig(task_type="CAUSAL_LM", r=8, lora_alpha=32, lora_dropout=0.1)
model = booster.enable_lora(model, lora_config=lora_config)
# ... train ...
booster.save_lora_as_pretrained(model, "ckpt/lora_adapter")
Note
LoRA requires the Hugging Face
peftlibrary and a plugin that supports LoRA. You can also passquantize=Trueto combine LoRA with 4-bit (QLoRA-style) quantization.
Gradient accumulation
with booster.no_sync(model=model): # skip gradient all-reduce
for micro_batch in accumulation_steps[:-1]:
loss = criterion(model(micro_batch), targets)
booster.backward(loss, optimizer)
# final micro-batch outside no_sync triggers the sync
For more memory-saving features — NVMe offload, gradient checkpointing, lazy initialization, sequence parallelism — see the Admin Guide.
10. Accelerated Inference
Colossal-Inference provides a high-throughput inference engine with continuous batching, paged KV-cache, tensor/pipeline parallelism, speculative decoding, and CUDA-graph capture.
from colossalai.inference import InferenceConfig, InferenceEngine
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")
config = InferenceConfig(
max_batch_size=8,
max_input_len=256,
max_output_len=256,
dtype="fp16",
tp_size=1,
do_sample=True,
temperature=0.8,
top_k=50,
top_p=0.95,
)
engine = InferenceEngine(model, tokenizer, config, verbose=True)
outputs = engine.generate(prompts=["Tell me about large-scale model training."])
print(outputs)
Frequently used InferenceConfig fields:
| Field | Default | Purpose |
|---|---|---|
max_batch_size |
8 |
Maximum concurrent requests. |
max_input_len / max_output_len |
256 / 256 |
Prompt and generation length caps. |
dtype |
torch.float16 |
Compute dtype ("fp16", "bf16", "fp32"). |
tp_size / pp_size |
1 / 1 |
Tensor / pipeline parallel degree for inference. |
do_sample, temperature, top_k, top_p |
False, 1.0, 50, 1.0 |
Sampling controls. |
use_cuda_graph |
False |
Capture CUDA graphs to cut kernel-launch overhead. |
use_spec_dec |
False |
Enable speculative decoding. |
enable_streamingllm |
False |
StreamingLLM attention for very long conversations. |
The complete InferenceConfig field list is in the Admin Guide.
11. Applications
Beyond the core library, the applications/ directory ships complete, runnable solutions. Each has its own requirements.txt.
ColossalChat — ChatGPT-style RLHF
A full RLHF pipeline (applications/ColossalChat, package coati) supporting supervised fine-tuning and several preference-optimization algorithms:
- SFT (supervised fine-tuning)
- PPO (reward model + policy optimization)
- GRPO (group relative policy optimization, including a distributed Ray-based reasoning pipeline in
coati/distributed) - DPO, KTO (direct/Kahneman-Tversky preference optimization)
The distributed reinforcement-learning entry point is rl_example.py:
python rl_example.py \
--model Qwen/Qwen2.5-7B \
--dataset data.jsonl \
-t 4 -i 4 \ # 4 trainer workers, 4 inferencer workers
-b vllm \ # inference backend
-a GRPO \ # algorithm
-ibs 8 -tbs 8 \ # inference / train batch sizes
-e 1 # episodes
Note
ColossalChat's RL training uses Ray to coordinate separate trainer and inferencer pools. Install its requirements (
pip install -r applications/ColossalChat/requirements.txt), which includeray,transformers,vllm, andfastapi.
Colossal-LLaMA — domain LLM pretraining & fine-tuning
applications/Colossal-LLaMA provides scripts to continue-pretrain and fine-tune LLaMA-family models on your own corpus, including tokenizer extension and dataset preparation utilities.
ColossalMoE — Mixture-of-Experts training
applications/ColossalMoE demonstrates training MoE models (e.g. Mixtral) with expert parallelism via MoeHybridParallelPlugin.
ColossalEval — model evaluation
applications/ColossalEval runs dataset-based and GPT-graded evaluation across standard benchmarks (MMLU, CMMLU, AGIEval, GAOKAO, CEval, and more).
ColossalQA — retrieval-augmented Q&A
applications/ColossalQA builds a LangChain-based RAG system over your documents, with a web UI demo (examples/webui_demo).
Tip
Ready-made model training examples (LLaMA 1/2/3, GPT, BERT, OPT, PaLM, Grok-1, Mixtral, DeepSeek, ViT, Stable Diffusion, DreamBooth) live under
examples/. They are the fastest way to see a complete, working configuration for a specific model.
12. Common Tasks (Recipes)
Train a model too big for one GPU
import colossalai
from colossalai.booster import Booster
from colossalai.booster.plugin import GeminiPlugin
from colossalai.nn.optimizer import HybridAdam
colossalai.launch_from_torch()
plugin = GeminiPlugin(placement_policy="auto", precision="bf16", offload_optim_frac=1.0)
booster = Booster(plugin=plugin)
model = build_large_model()
optimizer = HybridAdam(model.parameters(), lr=1e-4)
model, optimizer, *_ = booster.boost(model, optimizer)
colossalai run --nproc_per_node 8 train.py
Combine tensor + pipeline parallelism for a transformer
from colossalai.booster.plugin import HybridParallelPlugin
plugin = HybridParallelPlugin(tp_size=2, pp_size=2, zero_stage=1,
precision="bf16", num_microbatches=8,
enable_all_optimization=True)
Drive training with booster.execute_pipeline(...) because pp_size > 1.
Resume training from a sharded checkpoint
booster.load_model(model, "ckpt/model")
booster.load_optimizer(optimizer, "ckpt/optimizer")
booster.load_lr_scheduler(lr_scheduler, "ckpt/scheduler.pt")
Run multi-node training over a hostfile
colossalai run --hostfile ./hostfile --master_addr worker-0 --nproc_per_node 8 train.py
Run with Docker
cd ColossalAI
docker build -t colossalai ./docker
docker run -ti --gpus all --rm --ipc=host colossalai bash
Warning
Building the image requires the NVIDIA Container Runtime to be the default Docker runtime (the build compiles CUDA kernels). See the Admin Guide for details.
13. Troubleshooting
Error: Windows is not supported yet. Please try again within the Windows Subsystem for Linux (WSL).
- Cause: You are installing on native Windows. Colossal-AI's installer (
setup.py) explicitly blocks Windows. - Solution: Install and run inside WSL2 with a CUDA-capable Linux distribution, or use a Linux machine / container.
- Prevention: Use the provided Docker image, which is Linux-based.
Error: [extension] PyTorch is not found while BUILD_EXT=1. You need to install PyTorch first in order to build CUDA extensions
- Cause: You set
BUILD_EXT=1but PyTorch is not installed in the active environment. - Solution:
pip install torch(matching your CUDA version) before installing Colossal-AI withBUILD_EXT=1. - Prevention: Install PyTorch first, or omit
BUILD_EXT=1and let kernels build lazily at runtime.
Error: [extension] Could not find any kernel compatible with the current environment.
- Cause: No prebuilt kernel matches your CUDA/GPU; the build environment is incomplete.
- Solution: Ensure
ninjaand a matching CUDA toolkit are installed, then reinstall withBUILD_EXT=1. SetTORCH_CUDA_ARCH_LISTto your GPU's architecture if auto-detection fails. - Prevention: Use the official Docker image.
Error: Could not find {VAR} in the torch environment ... (or SLURM/OpenMPI variant)
- Cause: You called
launch_from_torch()/launch_from_slurm()/launch_from_openmpi()but the expected environment variables are not set — usually because the script was started directly withpythoninstead of throughcolossalai run/torchrun/srun/mpirun. - Solution: Launch the script with the matching launcher (e.g.
colossalai run --nproc_per_node N train.py). - Prevention: Match the
launch_from_*helper to your launcher.
Error: Cannot find index file in {checkpoint} / No weigth is loaded into the model.
- Cause: Loading a sharded checkpoint directory that is missing its index file, or pointing at the wrong path.
- Solution: Point
load_modelat the directory produced bysave_model(..., shard=True), which contains the index file. For single-file checkpoints, pass the file path. - Prevention: Always load with the same
shardsemantics you used to save.
Error: device type must be cuda for nccl backend
- Cause: Pipeline parallelism point-to-point communication ran on a non-CUDA tensor with the NCCL backend.
- Solution: Move data to CUDA before the step and ensure your accelerator is a GPU; NCCL requires CUDA tensors.
Error: AssertionError: torch.distributed is not initialized, please use colossalai.launch to create the distributed environment
- Cause: You created a plugin/Booster before initializing the distributed environment.
- Solution: Call
colossalai.launch_from_torch()(or anotherlaunch_*) before building plugins.
Out-of-memory (CUDA OOM)
- Solutions, in order of escalation:
- Switch from
TorchDDPPlugintoLowLevelZeroPlugin(stage=2). - Add
cpu_offload=True. - Move to
GeminiPluginwithoffload_optim_frac/offload_param_frac. - Add tensor/pipeline parallelism via
HybridParallelPlugin. - Use
bf16precision and a memory-efficient optimizer (Adafactor,CAME, GaLore).
- Switch from
Important
Several open issues track plugin-combination edge cases (e.g. certain optimizers with
LowLevelZeroPlugin+ smallinitial_scale+ CPU offload, oruse_fp8=Trueshape mismatches). If you hit an assertion deep inside a plugin, check the project's GitHub issues for your exact combination before assuming a bug in your code.
14. FAQ
Q: Do I have to rewrite my training loop to use Colossal-AI?
No. Keep your PyTorch loop. Add colossalai.launch_from_torch(), wrap your objects with booster.boost(...), and call booster.backward(loss, optimizer) instead of loss.backward(). To change parallelism, change the plugin.
Q: Which plugin should I start with?
Start with TorchDDPPlugin if the model fits on a GPU. Move to LowLevelZeroPlugin when optimizer memory is tight, GeminiPlugin when the model itself doesn't fit, and HybridParallelPlugin for the largest transformer models.
Q: What's the difference between colossalai.launch and Booster?
launch sets up the distributed process group (one-time, at startup). Booster wraps your model/optimizer with the parallelism strategy (per training script). You use both.
Q: Do I need to build CUDA kernels?
Not for basic use — they build lazily at runtime. Build them at install time with BUILD_EXT=1 if you want fused optimizers immediately or want to detect toolchain problems early.
Q: Can I run on Windows? Only through WSL2. Native Windows is blocked by the installer.
Q: How do I save a checkpoint that Hugging Face tools can read?
Use booster.save_model(model, path, shard=True, use_safetensors=True) — it writes an HF-transformers-style sharded safetensors folder.
Q: Which precisions are supported?
fp16, bf16, and fp8 (plugin-dependent), plus Apex fp16 via "fp16_apex" on the Booster.
Q: How do I do LoRA / QLoRA fine-tuning?
booster.enable_lora(model, lora_config=...) with a peft.LoraConfig; add quantize=True for 4-bit QLoRA-style training.
Q: What models have ready-made examples?
LLaMA 1/2/3, GPT, BERT, OPT, PaLM, Grok-1, Mixtral, DeepSeek, ViT, Stable Diffusion, and DreamBooth — under examples/.
Q: How is inference different from training?
Use InferenceEngine + InferenceConfig from colossalai.inference, not the Booster. It adds continuous batching, paged KV-cache, and speculative decoding.
Q: Is there a CLI to check my environment?
Yes: colossalai check -i prints an installation/compatibility report.
15. Command & API Reference
CLI: colossalai
| Command | Purpose |
|---|---|
colossalai run [OPTIONS] SCRIPT [ARGS] |
Launch distributed training on one or more nodes. |
colossalai check -i |
Print an installation and environment compatibility report. |
colossalai run options
| Option | Type | Default | Description |
|---|---|---|---|
-H, -host, --host |
str | None |
Comma-separated hostnames to launch on (host1,host2). |
--hostfile |
str | None |
Path to a hostfile (one hostname per line). |
--include |
str | None |
Only use these hosts (with --hostfile). Mutually exclusive with --exclude. |
--exclude |
str | None |
Do not use these hosts (with --hostfile). |
--num_nodes |
int | -1 |
Total worker nodes to use (with --hostfile). |
--nproc_per_node |
int | None |
Number of GPUs (processes) per node. |
--master_port |
int | 29500 |
Port for torch.distributed communication. |
--master_addr |
str | 127.0.0.1 |
IP of node 0. Inferred via hostname -I if unset. |
--extra_launch_args |
str | None |
Extra torch launcher args, e.g. arg1=1,arg2=2 → --arg1=1 --arg2=2. |
--ssh-port |
int | None |
SSH port for multi-node connections. |
-m |
str | None |
Run a library module as a script (terminates the option list). |
Public Python API
| Symbol | Description |
|---|---|
colossalai.launch(rank, world_size, host, port, backend="nccl", local_rank=None, seed=1024, verbose=True) |
Initialize the distributed environment manually. |
colossalai.launch_from_torch(backend="nccl", seed=1024, verbose=True) |
Initialize from torchrun/colossalai run environment variables. |
colossalai.launch_from_slurm(host, port, backend="nccl", seed=1024, verbose=True) |
Initialize from SLURM environment variables. |
colossalai.launch_from_openmpi(host, port, backend="nccl", seed=1024, verbose=True) |
Initialize from OpenMPI environment variables. |
colossalai.booster.Booster(device=None, mixed_precision=None, plugin=None) |
High-level training wrapper. |
colossalai.booster.plugin.* |
TorchDDPPlugin, TorchFSDPPlugin, LowLevelZeroPlugin, GeminiPlugin, HybridParallelPlugin, MoeHybridParallelPlugin. |
colossalai.nn.optimizer.* |
HybridAdam, CPUAdam, FusedAdam, FusedLAMB, FusedSGD, Lamb, Lars, Adafactor, CAME, GaLore + distributed variants. |
colossalai.inference.InferenceEngine / InferenceConfig |
Accelerated inference. |
For architecture, the complete configuration reference, deployment, security, and internals, see the Admin Guide.