You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ColossalAI/docs/run_demo_zh.md

3.2 KiB

快速上手

Colossal-AI是一个大规模深度学习系统其中包含高效的并行技术。该系统可以在多GPU的分布式系统上使用并行技术有效地加速模型训练同时该系统也可以运行在带有GPU的非分布式系统上。下面是ColossalAI的快速上手指南。

单GPU系统

在带有GPU的非分布式系统上进行模型训练时Colossal-AI可以达到当前的基线效率。这里我们给出一个Google Colab示例展现如何使用Colossal-AI与CIFAR10数据集在非分布式系统上训练一个LeNet模型。

多GPU系统

在多GPU的分布式系统上训练深度学习模型时Colossal-AI可以使用高效的并行技术来显著地加速训练过程这些技术将在下面的并行技术 章节中被详述。下面的代码将在拥有四个GPU的分布式系统上训练一个ViT模型其中HOST 变量为您分布式系统的IP地址。请注意下面的代码使用了Slurm作业调度系统。

HOST=xxx.xxx.xxx.xxx srun ./scripts/slurm_dist_train.sh ./examples/run_trainer.py ./configs/vit/vit_2d.py

./configs/vit/vit_2d.py是一个配置文件 Colossal-AI使用配置文件来定义训练过程中需要用到的参数比如模型类型、数据集、以及优化器、学习率调度器等。您可以通过编写配置文件的方式来训练不同的模型。./examples/run_trainer.py 是一个标准的训练脚本,具体代码已经附在下面。该脚本可以读入配置文件中的训练参数并训练模型。

import colossalai
from colossalai.core import global_context as gpc
from colossalai.logging import get_dist_logger
from colossalai.trainer import Trainer


def run_trainer():
    engine, train_dataloader, test_dataloader = colossalai.initialize()
    logger = get_dist_logger()
    logger.info("engine is built", ranks=[0])

    trainer = Trainer(engine=engine,
                      verbose=True)
    logger.info("trainer is built", ranks=[0])

    logger.info("start training", ranks=[0])
    trainer.fit(
        train_dataloader=train_dataloader,
        test_dataloader=test_dataloader,
        epochs=gpc.config.num_epochs,
        hooks_cfg=gpc.config.hooks,
        display_progress=True,
        test_interval=2
    )


if __name__ == '__main__':
    run_trainer()

上面代码中的model变量可以被替换为一个自定义的模型或者Model Zoo中一个事先定义的模型,以此来达到训练不同模型的目的,这里详述了如何进行这样的替换。

系统功能

Colossal-AI提供了一系列并行组件来加速您的模型训练我们在下面的章节提供了关于这些并行组件的介绍。我们的目标是使您的分布式深度学习模型开发像单卡深度学习模型开发那样方便。