PyTorch中DistributedDataParallel使用笔记

这篇具有很好参考价值的文章主要介绍了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,所以要现在你的代码中解析这个参数,如:

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

2.2. 初始化

torch.distributed.init_process_group(backend="nccl")

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

2.3. 设定device

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

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

数据.to(device)

2.6. 启动

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博客 文章来源地址https://www.toymoban.com/news/detail-724275.html

到了这里,关于PyTorch中DistributedDataParallel使用笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇

    一、 写在前面 随着深度学习技术的不断发展,模型的训练成本也越来越高。训练一个高效的通用模型,需要大量的训练数据和算力。在很多非大模型相关的常规任务上,往往也需要使用多卡来进行并行训练。在多卡训练中,最为常用的就是分布式数据并行(DistributedDataPara

    2024年04月15日
    浏览(39)
  • Pytorch DistributedDataParallel(DDP)教程二:快速入门实践篇

    一、简要回顾DDP 在上一篇文章中,简单介绍了Pytorch分布式训练的一些基础原理和基本概念。简要回顾如下: 1,DDP采用Ring-All-Reduce架构,其核心思想为:所有的GPU设备安排在一个逻辑环中,每个GPU应该有一个左邻和一个右邻,设备从它的左邻居接收数据,并将数据汇总后发送

    2024年04月15日
    浏览(44)
  • Python小知识 - 【Python】如何使用Pytorch构建机器学习模型

    【Python】如何使用Pytorch构建机器学习模型 机器学习是人工智能的一个分支,它的任务是在已有的数据集上学习,最终得到一个能够解决新问题的模型。Pytorch是一个开源的机器学习框架,它可以让我们用更少的代码构建模型,并且可以让模型训练的过程更加简单。 首先,我们

    2024年02月09日
    浏览(36)
  • Pytorch Dataset类的使用(个人学习笔记)

    训练模型一般都是先处理 数据的输入问题 和 预处理问题 。 Pytorch提供了几个有用的工具: torch.utils.data.Dataset类 和 torch.utils.data.DataLoader类。 流程是先把 原始数据 转变成 torch.utils.data.Dataset类 , 随后再把得到 torch.utils.data.Dataset类 当作一个参数传递给 torch.utils.data.DataLoader类

    2024年02月05日
    浏览(43)
  • PyTorch学习笔记(十三)——现有网络模型的使用及修改

     以分类模型的VGG为例   设置为 False 的情况,相当于网络模型中的参数都是初始化的、默认的 设置为 True 时,网络模型中的参数在数据集上是训练好的,能达到比较好的效果 CIFAR10 把数据分成了10类,而 vgg16 模型把数据分成了 1000 类,如何应用这个网络模型呢? 方法1:把最

    2024年02月12日
    浏览(42)
  • 【NLP相关】PyTorch多GPU并行训练(DataParallel和DistributedDataParallel介绍、单机多卡和多机多卡案例展示)

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 当下深度学习应用越来越广泛,训练规模也越来越大,需要更快速的训练速

    2024年02月04日
    浏览(42)
  • 机器学习框架PyTorch

    机器学习框架PyTorch PyTorch简介 第一个PyTorch应用 PyTorch API PyTorch基本概念 使用PyTorch的流程 PyTorch张量 PyTorch数据集和数据加载器 PyTorch转换 TensorBoard PyTorch 自动求导(Autograd) torchvision数据集 PyTorch模型构建 PyTorch模型优化 PyTorch构建神经网络 PyTorch构建多层感知机(MLP) PyTorch构

    2024年02月01日
    浏览(38)
  • PyTorch机器学习与深度学习技术方法

    近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受到越来越多科研人员的关注和喜爱。 Python基础知

    2024年02月02日
    浏览(46)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十六):自定义网络层、保存/加载参数、使用GPU

    自定义网络层很简单,三步即可完成 继承类:nn.Module 定义初始化函数:__init__中定义需要初始化的代码 定义向前传播函数:forward 1)定义网络层

    2024年02月13日
    浏览(47)
  • 机器学习7:pytorch的逻辑回归

            逻辑回归模型是处理分类问题的最常见机器学习模型之一。 二项式逻辑 回归只是逻辑回归模型的

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包