pytorch multi-gpu train

记录一下pytorch如何进行单机多卡训练:

官网例程:https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html

下面以一个例子讲解一下,例如现在总共有8张卡,在第5、6、7三张卡上进行训练;

step 1:可视化需要用到的GPU

import os

os.environ["CUDA_VISIBLE_DEVICES"] = "5 , 6 , 7"

device = torch.device("cuda:0")  #注意多卡训练的时候,默认都先将model和data先保存在id:0的卡上(即实际的第5块卡),然后model的参数会复制共享到其他卡上,data也会平分成若干个batch到其他卡上(所以第一块卡上稍微耗费一点显存);

device_ids = [0 , 1 , 2] #注意device_ids必须从0开始,代码中的所有的device id都需要从0开始(这里的0代表第5块卡,1代表第6块卡,类推);

step 2:利用DataParallel对Model类进行封装

model = nn.DataParallel(model , device_ids = device_ids)

model.to(device)

step 3:

data.to(device)  #id:0卡上的数据再被平分成若干个batch到其他卡上

注意:晚上还有一些例程,需要对optimizer和loss利用DataParellel进行封装,没有试验过,但上面方法是参考官网例程,并经过实操考验;

原文地址:https://www.cnblogs.com/zf-blog/p/10599328.html

时间: 2024-11-11 20:03:47

pytorch multi-gpu train的相关文章

[转] pytorch指定GPU

查过好几次这个命令,总是忘,转一篇mark一下吧 转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU. 有如下两种方法来指定需要使用的GPU. 1. 类似tensorflow指定GPU的方式,使用CUDA_VISIBLE_DEVICES. 1.1 直接终端中设定: CUDA_VISIBLE_DEVICES=1 python my_script.py 1.2

Pytorch 多GPU训练-多计算节点并行-All you need

概述 本篇介绍多计算节点上的pytorch分布式训练.从环境配置到运行demo的所有步骤,step by step.没有理论原理,理论原理可以参考这里. 基础环境 多台linux计算节点,通过网络连接,不同主机之间可以相互ping通.网速越快越好,如果通信速度比较慢,就不用怎么考虑分布式训练. 所有linux计算节点都包含若干GPU,GPU数量可以不一致,但是所有GPU计算速度尽量一致,否则模型的同步时会等待大量时间(短板效应). 所有计算节点都拥有Pytorch运行环境,即都可以单独的运行训练

怎么用 pytorch 查看 GPU 信息

如果你用的 Keras 或者 TensorFlow, 请移步 怎么查看keras 或者 tensorflow 正在使用的GPU In [1]: import torch In [2]: torch.cuda.current_device() Out[2]: 0 In [3]: torch.cuda.device(0) Out[3]: <torch.cuda.device at 0x7efce0b03be0> In [4]: torch.cuda.device_count() Out[4]: 1

pytorch 多GPU 训练

import osos.environ['CUDA_VISIBLE_DEVICES'] = '0, 1, 2'import torch #注意以上两行先后顺序不可弄错 device = torch.device('cuda') model = DataParallel(model)model.to(device) 这样模型就会在gpu 0, 1, 2 上进行训练 原文地址:https://www.cnblogs.com/rabitvision/p/12218986.html

Pytorch中多GPU训练指北

前言 在数据越来越多的时代,随着模型规模参数的增多,以及数据量的不断提升,使用多GPU去训练是不可避免的事情.Pytorch在0.4.0及以后的版本中已经提供了多GPU训练的方式,本文简单讲解下使用Pytorch多GPU训练的方式以及一些注意的地方. 这里我们谈论的是单主机多GPUs训练,与分布式训练不同,我们采用的主要Pytorch功能函数为DataParallel而不是DistributedParallel,后者为多主机多GPUs的训练方式,但是在实际任务中,两种使用方式也存在一部分交集.

PyTorch 数据集类 和 数据加载类 的一些尝试

最近在学习PyTorch,  但是对里面的数据类和数据加载类比较迷糊,可能是封装的太好大部分情况下是不需要有什么自己的操作的,不过偶然遇到一些自己导入的数据时就会遇到一些问题,因此自己对此做了一些小实验,小尝试. 下面给出一个常用的数据类使用方式: def data_tf(x): x = np.array(x, dtype='float32') / 255 # 将数据变到 0 ~ 1 之间 x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 x = x.reshape((-1

Deep Residual Learning for Image Recognition (ResNet)

目录 主要内容 代码 He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]. computer vision and pattern recognition, 2016: 770-778. @article{he2016deep, title={Deep Residual Learning for Image Recognition}, author={He, Kaiming and Zhang,

conda pip 安装 dgl 并运行demo 出现:Segmentation fault (core dumped) 错误

安装dgl 并运行的时候,出现了如上错误,很是郁闷:使用 gdb python; run train.py 进行调试,发现是torch的问题:我猜测估计是torch 安装的版本过于新:于是重新安装 1.0.0 版本; 解决上述问题: dgl-cu90 0.4.1 torch 1.0.0 ~/Desktop/dgl/examples/pytorch/gcn$ python train.py --dataset cora --gpu 1 保持更新,更多内容请关注 cnblogs.com/xuyaow

tensorflow节点布放(device assignment of node)算法:simpler_placer

tensorflow v0.9中目前在用的devcie assignment算法是simple placer算法,相比于白皮书中cost model算法实现简单.simpler placer算法优先选择/gpu:0设备, 但不支持 multi gpu assignment. 白皮书提到的cost model可以根据设备资源代价.数据传输代价平衡分配设备,在v0.9版本中有部分实现,但还未开放使用,见 core/graph/costmodel.cc simple_placer的实现代码在文件pyt

实现能够在训练过程中手动更改学习率

在深度学习框架PyTorch一书的学习-第六章-实战指南和pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-在pytorch中使用 和 pytorch实现性别检测三篇文章的基础上写的这篇文章 之前我们使用的是: exp_lr_scheduler = optim.lr_scheduler.StepLR(optimizer_conv, step_size=3, gamma=0.1) 去自动递减学习率,但是这种方法还是十分死板的,希望实现能够手动根据收敛地效果去更改