当前位置: 首页 > news >正文

单机多卡训练

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

基于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)

相关文章:

单机多卡训练

参考几个不错的帖子(还没来得及整理): 基于pytorch多GPU单机多卡训练实践_多卡训练效果不如单卡-CSDN博客 关于PyTorch单机多卡训练_能用torch.device()实现多卡训练吗-CSDN博客 Pytorch多机多卡分布式训练 - 知乎 (zhihu.com) 当代研究生…...

数据库基础教程之数据库的创建(一)

双击打开Navicat,点击:文件-》新建连接-》PostgreSQL 在下图新建连接中输入各参数,然后点击:连接测试,连接成功后再点击确定。 点击新建数据库 数据库设置如下:...

Python教程:DataFrame列数据类型的转换

Pandas提供了多种数据类型转换方法。可以使用astype()函数来转换数据类型。例如,可以将字符串类型的列转换为整数类型的列: # Author : 小红牛 # 微信公众号:wdPython import pandas as pd# 创建包含字符串类型列的DataFrame df pd.DataFra…...

4-Python与设计模式--抽象工厂模式

4-Python与设计模式–抽象工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上, 有三类可以选择的上餐品: 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后&#…...

STM32 默认时钟更改 +debug调试

STM32时钟 文章目录 STM32时钟前言一、修改系统时钟二、DEBUG 前言 为什么我们要改STM32的时钟呢,打个比方在做SPI驱动的时候,需要16M的时钟,但是stm32默认是72的分频分不出来,这个时候我们就要改系统时钟了,那么怎么…...

转成String类型的几种方式

文章目录 1. String.valueOf()2. 包装类-toString()3. 使用字符串拼接4. 强制类型转换 (String) object5. 总结:6. 基本数据类型和包装类 1. String.valueOf() String.valueOf():基本数据类型或包装类都可以通过 String.valueOf() 方法转为字符串表示形…...

Android BSP 开发之六

1.设定Android settings中某个xml文件(包括其子项)或者某个Preference不被搜索到 设定某个xml文件(包括子项)不被搜索到 找到该xml文件对应的fragment java文件中的SEARCH_INDEX_DATA_PROVIDER,在该provider中对isPageSearchEnabled方法进行重写并…...

mybatis的使用,mybatis的实现原理,mybatis的优缺点,MyBatis缓存,MyBatis运行的原理,MyBatis的编写方式

文章目录 MyBatis简介结构图Mybatis缓存(一级缓存、二级缓存)MyBatis是什么?mybatis的实现原理JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?Mybatis优缺点优点缺点映射关系 MyBatis的解析和运行原理MyBatis的…...

Effective Modern C++(1.顶层const与底层const)

1.顶层const与底层const的定义 const修饰的变量不可以改变,那么他就是顶层const,如: const int a 10; 那么,对于 const int *const p new int(10); 第二个const就是顶层const,因为他修饰的是p;第一个…...

mmsegmentation学习笔记

mmsegmentation教程 下载预训练权重 github–>mmsegmentation–>model zoo–>XXX model(如:PSPNet)–>找到预选连权重与config的前缀一致:pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 (model) 了解配置文件 查看…...

RabbitMQ简易安装

一般来说安装 RabbitMQ 之前要安装 Erlang ,可以去Erlang官网下载。接着去RabbitMQ官网下载安装包,之后解压缩即可。 Erlang官方下载地址:Downloads - Erlang/OTP RabbitMQ官方下载地址:Downloading and Installing RabbitMQ —…...

Mac M1 安装Docker打包arm64的python项目的镜像包

1、首先安装Docker,到官网下载,选择apple chip版 Docker中文网 官网 2、双击下载的dmg文件,在弹出框中之间拖拽到右边 3、打开docker,修改国内镜像源,位置在配置-DockerEngine "registry-mirrors": ["…...

『OPEN3D』1.8 点云的配准理论

点云的配准是将不同的3D点云对齐成一个完成的点云模型;配准的目标是找到两帧点云之间的相对旋转(rotation)与平移(translation),使得两份点云中有重叠的区域能够完好拼接。 点云配准示例图(来自…...

Python数据结构

目录 5.1. 列表详解 5.1.1. 用列表实现堆栈 5.1.2. 用列表实现队列 5.1.3. 列表推导式 5.1.4. 嵌套的列表推导式 5.2. del 语句 5.3. 元组和序列 5.4. 集合 5.5. 字典 5.6. 循环的技巧 5.7. 深入条件控制 5.8. 序列和其他类型的比较 本章深入讲解之前学过的一些内容…...

突发!新华三总裁《致全体员工的一封信》,中高层全面降薪10%-20%!

* 你好,我是前端队长,在职场,玩副业,文末有福利! 精彩回顾:进了央企,拿了户口,却感觉被困住了。 11月23号,某社交平台爆出了新华三总裁于英涛的《致全体员工的一封信》&a…...

QIIME 2介绍

QIIME 2(Quantitative Insights Into Microbial Ecology 2)是一个用于分析和解释微生物组数据的开源生物信息学工具。它是QIIME的第二个版本,经过重新设计以提高灵活性、可扩展性和可重复性。 1. 关于QIIME 2的一些重要特征和概念&#xff1…...

Spring Cloud Gateway 的简单介绍和基本使用

前言 本文主要对Spring Cloud Gateway进行简单的概念介绍,并通过多模块编程的方式进行一个简单的实操。 文章目录 前言1 什么是网关(概念)2 微服务中的网关2.1 问题12.2 问题2 3 网关作用4 Spring Cloud Gateway组成5 Spring Cloud Gateway基…...

Leaflet结合Echarts实现迁徙图

效果图如下&#xff1a; <!DOCTYPE html> <html><head><title>Leaflet结合Echarts4实现迁徙图</title><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...

在mysql存储过程中间部分,使用游标遍历动态结果集(游标动态传参使用)

mysql游标动态传参实现&#xff08;动态游标&#xff09; 1.问题2.需求描述3.实现3.1.使用3.2.代码&#xff08;直接看这都可以&#xff09; 1.问题 众所周知&#xff0c;mysql存储过程功能是没有oracle的包功能强大的&#xff0c;但是在去O的趋势下&#xff0c;mysql存储过程的…...

全球SAR卫星大盘点与回波数据处理专栏目录

近年来&#xff0c;随着商业航天的蓬勃发展&#xff0c;商业SAR卫星星座成为美欧等主要航天国家的发展重点&#xff0c;目前已在全球范围内涌现出众多初创公司进军商业SAR领域&#xff0c;开始构建大规模商业微小SAR卫星星座&#xff0c;其所具有的创新服务能力将为传统的商业遥…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...