ColossalAI/docs/source/en/basics/initialize_features.md

2.0 KiB

Initialize Features

Author: Shenggui Li, Siqi Mai

Prerequisite:

Introduction

In this tutorial, we will cover the use of colossalai.initialize which injects features into your training components (e.g. model, optimizer, dataloader) seamlessly. Calling colossalai.initialize is the standard procedure before you run into your training loops.

In the section below, I will cover how colossalai.initialize works and what we should take note of.

Usage

In a typical workflow, we will launch distributed environment at the beginning of our training script. Afterwards, we will instantiate our objects such as model, optimizer, loss function, dataloader etc. At this moment, colossalai.initialize can come in to inject features into these objects. A pseudo-code example is like below:

import colossalai
import torch
...


# launch distributed environment
colossalai.launch(config='./config.py', ...)

# create your objects
model = MyModel()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
criterion = torch.nn.CrossEntropyLoss()
train_dataloader = MyTrainDataloader()
test_dataloader = MyTrainDataloader()

# initialize features
engine, train_dataloader, test_dataloader, _ = colossalai.initialize(model,
                                                                     optimizer,
                                                                     criterion,
                                                                     train_dataloader,
                                                                     test_dataloader)

The colossalai.initialize function will return an Engine object. The engine object is a wrapper for model, optimizer and loss function. The engine object will run with features specified in the config file. More details about the engine can be found in the Use Engine and Trainer in Training.