pytorch 指定gpu训练与多gpu并行训练示例
一. 指定一个gpu训练的两种方法:
1.代码中指定
import torch torch.cuda.set_device(id)
2.终端中指定
CUDA_VISIBLE_DEVICES=1 python 你的程序
其中id就是你的gpu编号
二. 多gpu并行训练:
torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)
该函数实现了在module级别上的数据并行使用,注意batch size要大于GPU的数量。
参数 :
module:需要多GPU训练的网络模型
device_ids: GPU的编号(默认全部GPU,或[0,1] ,[0,1,2])
output_device:(默认是device_ids[0])
dim:tensors被分散的维度,默认是0
在保存模型时要注意要加上"module",例如:
network.module.state_dict()
以上这篇pytorch 指定gpu训练与多gpu并行训练示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
将Pytorch模型从CPU转换成GPU的实现方法
最近将Pytorch程序迁移到GPU上去的一些工作和思考 环境:Ubuntu 16.04.3 Python版本:3.5.2 Pytorch版本:0.4.0 0. 序言 大家知道,在深度学习中使用GPU来对模型进行训练是可以通过并行化其计算来提高运行效率,这里就不多谈了. 最近申请到了实验室的服务器来跑程序,成功将我简陋的程序改成了"高大上"GPU版本. 看到网上总体来说少了很多介绍,这里决定将我的一些思考和工作记录下来. 1. 如何进行迁移 由于我使用的是Pytorch写的模型,网上给
-
解决pytorch GPU 计算过程中出现内存耗尽的问题
Pytorch GPU运算过程中会出现:"cuda runtime error(2): out of memory"这样的错误.通常,这种错误是由于在循环中使用全局变量当做累加器,且累加梯度信息的缘故,用官方的说法就是:"accumulate history across your training loop".在默认情况下,开启梯度计算的Tensor变量是会在GPU保持他的历史数据的,所以在编程或者调试过程中应该尽力避免在循环中累加梯度信息. 下面举个栗子: 上代
-
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
听说pytorch使用比TensorFlow简单,加之pytorch现已支持windows,所以今天装了pytorch玩玩,第一件事还是写了个简单的CNN在MNIST上实验,初步体验的确比TensorFlow方便. 参考代码(在莫烦python的教程代码基础上修改)如下: import torch import torch.nn as nn from torch.autograd import Variable import torch.utils.data as Data import tor
-
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
如下所示: device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代码 model.to(device)#第二行代码 首先是上面两行代码放在读取数据之前. mytensor = my_tensor.to(device)#第三行代码 然后是第三行代码.这句代码的意思是将所有最开始读取数据时的tersor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上
-
pytorch多GPU并行运算的实现
Pytorch多GPU运行 设置可用GPU环境变量.例如,使用0号和1号GPU' os.environ["CUDA_VISIBLE_DEVICES"] = '0,1' 设置模型参数放置到多个GPU上.在pytorch1.0之后的版本中,多GPU运行变得十分方便,先将模型的参数设置并行 if torch.cuda.device_count() > 1: print("Let's use", torch.cuda.device_count(), "GPU
-
在pytorch中为Module和Tensor指定GPU的例子
pytorch指定GPU 在用pytorch写CNN的时候,发现一运行程序就卡住,然后cpu占用率100%,nvidia-smi 查看显卡发现并没有使用GPU.所以考虑将模型和输入数据及标签指定到gpu上. pytorch中的Tensor和Module可以指定gpu运行,并且可以指定在哪一块gpu上运行,方法非常简单,就是直接调用Tensor类和Module类中的 .cuda() 方法. import torch from PIL import Image import torch.nn as
-
关于pytorch多GPU训练实例与性能对比分析
以下实验是我在百度公司实习的时候做的,记录下来留个小经验. 多GPU训练 cifar10_97.23 使用 run.sh 文件开始训练 cifar10_97.50 使用 run.4GPU.sh 开始训练 在集群中改变GPU调用个数修改 run.sh 文件 nohup srun --job-name=cf23 $pt --gres=gpu:2 -n1 bash cluster_run.sh $cmd 2>&1 1>>log.cf50_2GPU & 修改 –gres=gpu:
-
pytorch使用指定GPU训练的实例
本文适合多GPU的机器,并且每个用户需要单独使用GPU训练. 虽然pytorch提供了指定gpu的几种方式,但是使用不当的话会遇到out of memory的问题,主要是因为pytorch会在第0块gpu上初始化,并且会占用一定空间的显存.这种情况下,经常会出现指定的gpu明明是空闲的,但是因为第0块gpu被占满而无法运行,一直报out of memory错误. 解决方案如下: 指定环境变量,屏蔽第0块gpu CUDA_VISIBLE_DEVICES = 1 main.py 这句话表示只有第1块
-
pytorch 指定gpu训练与多gpu并行训练示例
一. 指定一个gpu训练的两种方法: 1.代码中指定 import torch torch.cuda.set_device(id) 2.终端中指定 CUDA_VISIBLE_DEVICES=1 python 你的程序 其中id就是你的gpu编号 二. 多gpu并行训练: torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0) 该函数实现了在module级别上的数据并行使用,注意batch size要大于G
-
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
分类网络 import torch import torch.nn.functional as F from torch.autograd import Variable import matplotlib.pyplot as plt # 构造数据 n_data = torch.ones(100, 2) x0 = torch.normal(3*n_data, 1) x1 = torch.normal(-3*n_data, 1) # 标记为y0=0,y1=1两类标签 y0 = torch.zero
-
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
1, 创建pytorch 的Tensor张量: torch.rand((3,224,224)) #创建随机值的三维张量,大小为(3,224,224) torch.Tensor([3,2]) #创建张量,[3,2] 2, cpu上的tensor和GPU即pytorch创建的tensor的相互转化 b = a.cpu() # GPU → CPU a = b.cuda() #CPU → GPU 3, tensor和numpy的转化 b = a.numpy() # tensor转化为 numpy数组 a
-
pytorch算子torch.arange在CPU GPU NPU中支持数据类型格式
目录 正文 一. torch.arange() 和 torch.range() 的用法 二. torch.arange 支持的数据类型格式 正文 CPU(Central Processing Unit):中央处理器 GPU(Graphics Processing Unit):图形处理器 NPU(Neural Network Processing Unit):神经网络处理器,是基于神经网络算法与加速的新型处理器总称. 一. torch.arange() 和 torch.range() 的用法 py
-
keras 指定程序在某块卡上训练实例
场景:某台机器上有三块卡,想同时开三个程序,放到三块卡上去训练. 策略:CUDA_VISIBLE_DEVICES=1 python train.py就可以指定程序在某块卡上训练. 补充知识:keras指定GPU及显存使用量 指定GPU import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" 指定GPU和显存使用量 import os from keras.backend.tensorflow_backend import
-
PyTorch详解经典网络种含并行连结的网络GoogLeNet实现流程
目录 1. Inception块 2. 构造 GoogLeNet 网络 3. FashionMNIST训练测试 含并行连结的网络 GoogLeNet 在GoogleNet出现值前,流行的网络结构使用的卷积核从1×1到11×11,卷积核的选择并没有太多的原因.GoogLeNet的提出,说明有时候使用多个不同大小的卷积核组合是有利的. import torch from torch import nn from torch.nn import functional as F 1. Inception
-
Pytorch保存模型用于测试和用于继续训练的区别详解
保存模型 保存模型仅仅是为了测试的时候,只需要 torch.save(model.state_dict, path) path 为保存的路径 但是有时候模型及数据太多,难以一次性训练完的时候,而且用的还是 Adam优化器的时候, 一定要保存好训练的优化器参数以及epoch state = { 'model': model.state_dict(), 'optimizer':optimizer.state_dict(), 'epoch': epoch } torch.save(state, pat
-
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
禁用GPU设置 # 在import tensorflow之前 import os os.environ['CUDA_VISIBLE_DEVICES'] = '-1' CPU与GPU对比 显卡:GTX 1066 CPU GPU 简单测试:GPU比CPU快5秒 补充知识:tensorflow使用CPU可以跑(运行),但是使用GPU却不能用的情况 在跑的时候可以让加些选项: with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
随机推荐
- VB使用XMLHTTP实现Post与Get的方法
- 冒泡排序的原理及java代码实现
- java获取当前日期和时间的二种方法分享
- 用js提交表单解决一个页面有多个提交按钮的问题
- 给.net初学者的一些建议(共勉之)
- php使用simple_html_dom解析HTML示例
- jsp页面间传中文参数示例(页面传参数编码)
- JavaScript定义数组的三种方法(new Array(),new Array('x','y')
- Javascript setInterval的两种调用方法(实例讲解)
- php的POSIX 函数以及进程测试的深入分析
- python正常时间和unix时间戳相互转换的方法
- 如何实现某些页面只让特定的用户浏览?
- Java基于socket实现简易聊天室实例
- 详解java之redis篇(spring-data-redis整合)
- jquery下将选择的checkbox的id组成字符串的方法
- 详解Java中的迭代迭代器Iterator与枚举器Enumeration
- 远想互联为您提供30M免费空间服务
- Linux 内核空间与用户空间实现与分析
- Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】
- Python 实现一行输入多个值的方法