PyTorch中DistributedDataParallel使用笔记

1. 基本概念

在使用DistributedDataParallel时有一些概率必须掌握

多机多卡 含义
world_size 代表有几台机器,可以理解为几台服务器
rank 第几台机器,即第几个服务器
local_rank 某台机器中的第几块GPU
单机多卡 含义
world_size 代表机器一共有几块GPU
rank 第几块GPU
local_rank 第几块GPU,与rank相同

2. 使用方法

2.1. 修改主函数

在运行的时候,DistributedDataParallel会往你的程序中加入一个参数local_rank,所以要现在你的代码中解析这个参数,如:

python 复制代码
parser.add_argument("--local_rank", type=int, default=1, help="number of cpu threads to use during batch generation")

2.2. 初始化

python 复制代码
torch.distributed.init_process_group(backend="nccl")

os.environ["CUDA_VISIBLE_DEVICES"] = "0, 1, 2"  # 有几块GPU写多少

2.3. 设定device

python 复制代码
local_rank = torch.distributed.get_rank()
torch.cuda.set_device(local_rank)
global device
device = torch.device("cuda", local_rank)

我没用arg.local_rank,新定义了一个local_rank变量,是因为我更信任distributed.get_rank()这个函数

这里用torch.device来写,并且加了global,是因为后面模型和数据都要用到这个device,不会出错

2.4. 模型加载到多gpu

python 复制代码
model.to(device)  # 这句不能少,最好不要用model.cuda()
model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[local_rank], output_device=local_rank, find_unused_parameters=True)  # 这句加载到多GPU上

2.5. 数据加载到gpu

python 复制代码
数据.to(device)

2.6. 启动

python 复制代码
torchrun --nproc_per_node=4 --rdzv_endpoint=localhost:12345 train_cylinder_asym.py

参考文献

Pytorch并行计算(二): DistributedDataParallel介绍_dist.barrier_harry_tea的博客-CSDN博客

DistributedDataParallel多GPU分布式训练全过程总结 跟着做90%成功_BRiAq的博客-CSDN博客

相关推荐
视觉语言导航7 分钟前
哈工深无人机目标导航新基准!UAV-ON:开放世界空中智能体目标导向导航基准测试
人工智能·深度学习·无人机·具身智能
yzx9910138 分钟前
AI心理助手开发文档
人工智能·深度学习·机器学习
图灵学术计算机论文辅导24 分钟前
论文推荐|迁移学习+多模态特征融合
论文阅读·人工智能·深度学习·计算机网络·算法·计算机视觉·目标跟踪
zzywxc7872 小时前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
爱分享的飘哥3 小时前
第七十章:告别“手写循环”噩梦!Trainer结构搭建:PyTorch Lightning让你“一键炼丹”!
人工智能·pytorch·分布式训练·lightning·accelerate·训练框架·trainer
盛世隐者3 小时前
【深度学习】pytorch深度学习框架的环境配置
人工智能·pytorch·深度学习
AI视觉网奇4 小时前
音频分类模型笔记
人工智能·python·深度学习
CoovallyAIHub5 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·计算机视觉
没有不重的名么6 小时前
Tmux Xftp及Xshell的服务器使用方法
服务器·人工智能·深度学习·机器学习·ssh
lxmyzzs8 小时前
【图像算法 - 16】庖丁解牛:基于YOLO12与OpenCV的车辆部件级实例分割实战(附完整代码)
人工智能·深度学习·opencv·算法·yolo·计算机视觉·实例分割