单机多卡训练

参考几个不错的帖子(还没来得及整理):

基于pytorch多GPU单机多卡训练实践_多卡训练效果不如单卡-CSDN博客

关于PyTorch单机多卡训练_能用torch.device()实现多卡训练吗-CSDN博客

Pytorch多机多卡分布式训练 - 知乎 (zhihu.com)

当代研究生应当掌握的并行训练方法(单机多卡) - 知乎 (zhihu.com)

Dataparallel 较慢,不推荐使用:

DataParallel 并行训练部分主要与如下代码段有关:

# main.py
import torch
import torch.distributed as distgpus = [0, 1, 2, 3]   # 
torch.cuda.set_device('cuda:{}'.format(gpus[0]))  # train_dataset = ...train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=...)model = ...
model = nn.DataParallel(model.to(device), device_ids=gpus, output_device=gpus[0])  #参与训练的 GPU 有哪些,device_ids=gpus;用于汇总梯度的 GPU 是哪个,output_device=gpus[0] optimizer = optim.SGD(model.parameters())for epoch in range(100):for batch_idx, (data, target) in enumerate(train_loader):images = images.cuda(non_blocking=True)  #target = target.cuda(non_blocking=True)...output = model(images)loss = criterion(output, target)...optimizer.zero_grad()loss.backward()optimizer.step()

平时可以直接使用内置的 Distributed: 

torch.distributed 并行训练部分主要与如下代码段有关

# main.py
import torch
import argparse
import torch.distributed as distparser = argparse.ArgumentParser()
parser.add_argument('--local_rank', default=-1, type=int,help='node rank for distributed training')
args = parser.parse_args()dist.init_process_group(backend='nccl')
torch.cuda.set_device(args.local_rank)train_dataset = ...
train_sampler = torch.utils.data.distributed.DistributedSampler(train_dataset)train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=..., sampler=train_sampler)model = ...
model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank])optimizer = optim.SGD(model.parameters())for epoch in range(100):for batch_idx, (data, target) in enumerate(train_loader):images = images.cuda(non_blocking=True)target = target.cuda(non_blocking=True)...output = model(images)loss = criterion(output, target)...optimizer.zero_grad()loss.backward()optimizer.step()

 在使用时,调用 torch.distributed.launch 启动器启动:

github完整代码:https://github.com/tczhangzhi/pytorch-distributed/blob/master/distributed.py

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 main.py

 以上主要参考:当代研究生应当掌握的并行训练方法(单机多卡) - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性,让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量,SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作,T-POP Incorporation 是泰国流行文化在全球舞台上的领…

【算法】快速选择算法

目录 1.概述2.代码实现2.1.基于简单交换排序2.2.基于堆排序2.3.基于快速排序 3.应用 更多数据结构与算法的相关知识可以查看数据结构与算法这一专栏。 1.概述 (1)快速选择算法 (Quick Select Algorithm) 是一种用于在无序数组中寻找第 k 小(…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角,鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势,并详细介绍一些关键的鸿蒙开发技术和工具,以及它们对开发者个人和整个行业带来的深远影响。 首先,鸿蒙…

入侵redis之准备---VMware安装部署kail镜像服务器【详细包含云盘镜像】

入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 kail是一个很好玩的操作系统,不多说了哈 下载kail镜像 kail官网:https://www.kali.org/get-kali/#kali-platforms 百度云盘下载: 链接:https://pan.baidu.com/s/1PRjo…

django框架ORM

1、安装mysqlclient pip install mysqlclient2、创建文件models.py from django.db import modelsclass UserInfo(models.Model):name models.CharField(max_length32)password models.CharField(max_length64)age models.IntegerField(3)3、再settings中注册app INSTALLE…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能(Embodied Intelligence)指的是机器人或智能体通过感知、理解和交互来适应环境,并执行任务的能力。与传统的基于规则或符号的人工智能不同,具身智能强调将感…

基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现私人健身与教练预约管理系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应…

克服海外邮件收发难题,Coremail提供全方位解决方案

客户背景 某3C电子企业成立于2007年,总部位于深圳,公司在国内多个重点城市均设有研发和生产基地。作为一家规模庞大、技术领先的国家高新技术企业,该企业始终致力于锂离子电池的研究与发展,为新能源行业提供专业、系统的材料解决…

hello vtk 圆柱

VTK 可视化的流程及步骤 标题引入VTK库和初始化: 引入 VTK 库和 AutoInit 模块,以便使用 VTK 的渲染和交互功能 设置背景颜色和颜色对象: 使用 vtkNamedColors 设置背景颜色和演员颜色。 创建圆柱体源: 使用 vtkCylinderSou…

蓝桥杯-01简介

文章目录 蓝桥杯简介参考资源蓝桥杯官网第15届大赛章程一、概况(一)大赛背景和宗旨(二)大赛特色(三)大赛项目1.Java软件开发2.C/C程序设计3.Python程序设计4.Web应用开发5.软件测试6.网络安全7.嵌入式设计与…

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器1. 简介2. 软件下载安装:3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 …

CH02_交给子类

Template Method模式 组成模板的方法被定义在父类中,由于这些方法是抽象方法,所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的。唯一能知道的就是父类如何调用这些方法。 类图 说明 AbstractClass(抽象类) Abs…

vue项目中通过vuex管理数据

目录 1.前言: 2.vuex的基础用法: 1.构建与挂载vue 基础模板渲染 构建仓库 2.mutations的使用 1.介绍 ​编辑 2.案列: 3.传参 4.辅助函数mapMutations: 3.module分对象的写法 介绍 建立模块: 访问数据的方…

【VROC】看Intel VROC如何给NVMe SSD做RAID

在当今对硬盘性能要求越来越高的环境中,SATA和SAS接口由于自身的限制,其性能很难突破600MiB/s的瓶颈。因此,对于需要更高底层硬件性能的行业,如数据库等,对NVMe盘的需求越来越迫切。然而,NVMe盘直通到CPU&a…

三种常见的哈希结构

1.数组 2.set 使用序引用set头文件 unordered_set需引用unordered_set 3.map unordered_map需引用unordered_map头文件

error: ‘PixelPacket’ in namespace ‘Magick’ does not name a type

最近做一个项目需要配置ImageMagick库,本项目配置环境如下: ImageMagick version 7 Operating system, version and so on ubuntu 20.04 Descriptionerror: ‘PixelPacket’ in namespace ‘Magick’ does not name a type 这是在运行程序时候出现的问题…

[RK-Linux] recovery分区详解(二)

承接上一篇:[RK-Linux] recovery分区详解(一) 文章目录 四、SD 卡启动盘升级过程分析4.1 制作 SD 固件升级卡4.2 u-boot 执行4.3 recovery 执行五、恢复出厂设置四、SD 卡启动盘升级过程分析 4.1 制作 SD 固件升级卡 准备好 PC 机(windows 系统)、SD 卡、USB 读卡器。 SD…

优维低代码实践:搜索功能

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

使用C语言编写的算法,将原单链表根据字符类型拆分为三个单链表。其中,大写字母链表(upperList)、数字链表(digitList)和其他字符链表(otherList)分别用于存储相应类型的字符。 `Upper Case List`存储了大写字母A、C, `Digit List`存储了数字1、2、3, `Other List`存…

C语言数据结构-----栈和队列练习题(分析+代码)

前言 前面的博客写了如何实现栈和队列,下来我们来看一下队列和栈的相关习题。 链接: 栈和队列的实现 文章目录 前言1.用栈实现括号匹配2.用队列实现栈3.用栈实现队列4.设计循环队列 1.用栈实现括号匹配 此题最重要的就是数量匹配和顺序匹配。 用栈可以完美的做到…