把模型放到gpu上训练只需要设置三个地方即可:

(1) 指定训练设备device;

device = torch.device('cuda' if torch.cuda.is_available() else "cpu") 

        torch.device() 就是装torch.Tensor的一个地方 ;

'cuda' 这里如果没有指定具体的卡号,那么系统默认 cuda:0;

(2)实例化模型时候把模型加到device

model = NN(input_size, num_classes).to(device)

(3) 训练时候把特征和标签加到device, 测试时候也同样需要加到device;

data = data.to(device)
targets = targets.to(device) 

在多卡上并行计算

torch.nn.DataParallel()

torch.nn.DataParallel()具体的过程:大体就是将模型加载的每个卡上,数据平均分到每个卡上,原则上保证batch_size大于卡的数目就行;

  device = torch.device('cuda:2') #device = torch.device("cuda:1" if use_cuda else "cpu")  model = resnet19()  if torch.cuda.device_count() > 1: #10 print(torch.cuda.device_count())  model = nn.DataParallel(model, device_ids = [2,3,4])model.to(device)

这段代码运行之后占用的GPU是:0,2,3,4。为什么会占用0?

因为 即使我指定的卡没有0卡,他也会在0卡里面放参数和缓存;

如何避免这种现象呢?

改变默认的device_ids[0]指向的卡。默认device_ids[0]指向的就是0卡,只需要通过环境变量,让device_ids[0]指向其他卡片即可;

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "2, 3, 4" #仅有2,3,4(物理上)卡对程序可见,对应的逻辑上的卡号就算0,1,2......
device = torch.device('cuda') #device = torch.device("cuda:1" if use_cuda else "cpu")
model = resnet19()
if torch.cuda.device_count() > 1: #10 print(torch.cuda.device_count())  model = nn.DataParallel(model, device_ids = [0,1,2])
model.to(device)

参考:Pytorch | GPU | 将代码加载到GPU上运行_sunflower_level1的博客-CSDN博客_pytorch在gpu上运行

做记录方便自己看,希望大家去看原作者的,更简单易懂!!!

模型放到gpu上训练相关推荐

  1. PyTorch笔记: GPU上训练的模型加载到CPU/错误处理Attempting to deserialize object on a CUDA device but torch.cuda.is_a

    我之前在GPU上训练了一个模型,同时把模型的参数记录在resnet18_ultimate.pkl上 在本地的CPU上,我想把参数加载,于是一开始我是这么写代码的: import torch impor ...

  2. pytorch 如何将张量、类实例、函数放到GPU上

    调用".cuda()"函数,将tensor从GPU中取回到CPU中,只需调用".cpu()"即可 直接看代码: import torch import torc ...

  3. OpenAI 研究员最新博客:如何在多GPU上训练真正的大模型?

    [专栏:前沿进展]近年来,在大规模预训练语言模型的帮助下,许多NLP模型在基准测试任务中取得了更好的结果.如何训练大而深的神经网络是一个挑战,需要大量的GPU内存和很长的训练时间.本文回顾了几种流行的 ...

  4. 模型在gpu上反而速度变慢了_Tensorflow1.13.1+CUDA10.0+CuDNN7.4在GPU上训练模型

    在参加十五届全国大学生智能车竞赛时,电磁AI组别需要用到Tensorflow训练模型,CPU训练的速度实在太慢,于是打算用GPU训练,在此记录下配置环境的过程 安装Tensorflow 关于Pytho ...

  5. pytorch多gpu并行训练

    pytorch多gpu并行训练 link-web 转自:pytorch多gpu并行训练 - 知乎 目录(目录不可点击) 说明 1.和DataParallel的区别 2.如何启动程序的时候 2.1 单机 ...

  6. 在Google的GPU上永远免费训练您的机器学习模型

    训练你的模型是解决机器学习中耗费时间和成本最高的部分. 在GPU上训练您的模型可以让您的速度提升接近40倍,需要2天时间并将其转化为几个小时. 但是,这通常会花钱购买您的钱包. 有一天我偶然发现了一个 ...

  7. 在MNIST数据集上训练一个手写数字识别模型

    使用Pytorch在MNIST数据集上训练一个手写数字识别模型, 代码和参数文件 可下载 1.1 数据下载 import torchvision as tvtraining_sets = tv.dat ...

  8. 单个GPU无法训练GPT-3,但有了这个,你能调优超参数了

    视学算法报道 编辑:陈萍.小舟 模型越大,超参数(HP)调优成本越高,微软联合 OpenAI 提出 HP 调优新范式,单个 GPU 上就可以调优 GPT-3 超参数. 伟大的科学成就不能仅靠反复试验取 ...

  9. 《Deep Learning for Computer Vision with Python》阅读笔记-ImageNetBundle(第7章)-在ImageNet上训练VGGNet

    //2022.2.27日下午18:33开始学习笔记 7.在ImageNet上训练VGGNet 在本章中,我们将学习如何在ImageNet数据集上从零开始训练VGG16网络架构.卷积神经网络的VGG家族 ...

最新文章

  1. 任正非公开信深度解读:两年怎样改变了华为?
  2. 致敬YOLO!华科提出YOLOS:基于视觉Transformer的目标检测
  3. React Native初始化项目0.47.1报错
  4. android 长按缩放拖动_十年Android之路面试2000人,面试准备+内部泄露核心题(中高级)...
  5. Java并发编程笔记之LinkedBlockingQueue源码探究
  6. linux上怎么快速删除一个目录?
  7. 砥志研思SVM(四) 序列最小最优化算法(SMO)论文翻译
  8. webservice 心得
  9. 基于主机Overlay和自研虚拟化网关的VPC在360的落地
  10. Free MyBatis plugin下载安装及作用
  11. java实现微信公众号的模板消息推送
  12. 天津大学计算机学院网韩瑞泽,2018天津大学计算机学院考研拟录取名单
  13. html手机分辨率选择,怎么看手机分辨率(手机屏幕分辨率多少才合适?)
  14. 把图片隐藏进音频详细教程(含软件下载及使用方法)
  15. MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(六)变压器耦合栅极驱动
  16. html 晃动图标动画,SVG+CSS3 摇晃的铃铛动画图标
  17. 数字经济是如何崛起的?
  18. Firefox Crash后session内容的恢复
  19. 【LiteApp系列】埋点的设计
  20. 【软件测试】智能电视应用测试要求1

热门文章

  1. Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖
  2. Android设置壁纸的几种方案
  3. 弘辽科技:淘宝新店运营推广的几大技巧
  4. android中 textview.setVisibility(View.VISIBLE)失效问题
  5. Halcon-图像锐化(边缘处理)
  6. 盼望着,盼望着,东风来了,春天的脚步近了。
  7. 机械加工工艺规程的制订
  8. svn: E155007 和 svn: E155004
  9. 格雷希尔快速连接器GripSeal 密封性测试密封堵头 G15Pro系列使用说明
  10. 12月5日计算机考试浙江卷英语答案,英语b级试卷?2019年12月b级真题试卷。