目录
一、前言
对于很多数据量比较大且工作任务比较复杂的深度学习模型,只用一张GPU显卡训练太慢,我们就会想到用多张GPU来加速我们模型的训练。下面主要展示一台GPU服务器(3张3090GPU显卡)的应用实例,对于集群服务器(多机器)还是有所差异。
二、分布式训练的详细步骤
2.1 环境准备
2.1.1 硬件准备
- 至少需要一台多 GPU 的服务器,或者多台 GPU 服务器组成的集群。
- 确保各 GPU 支持 NCCL。
2.1.2 软件准备
如果是新手,建议自己建个虚拟的conda环境来操作,不建议直接用原来的env虚拟环境,因为不同的项目,适配的pytorch版本也不同,这个过程并不难。
- 安装 Anaconda,创建虚拟环境。
- 安装 PyTorch 和相关依赖(pytorch version >= 1.8.0)。
# 创建 Python 虚拟环境
conda create -n deep2 python=3.8 -y
conda activate deep2
# 安装 PyTorch(主要看CUDA版本,python版本来装pytorch)
conda install pytorch torchvision torchaudio pytorch-cuda=11.4 -c pytorch -c nvidia
# 安装你项目需要的包 Torch Geometric等
pip install torch-geometric===2.1.0(这个包一定要注意版本问题)
三、分布式训练的核心概念
3. 1 进程组初始化
1. 使用torch.distributed.init_process_group来初始化分布式环境。
2. backend推荐使用nccl(GPU通信)。
3. init_method指定进程组的通信方式,比如env://(通过环境变量通信)。