模型放到gpu上训练
把模型放到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上训练相关推荐
- PyTorch笔记: GPU上训练的模型加载到CPU/错误处理Attempting to deserialize object on a CUDA device but torch.cuda.is_a
我之前在GPU上训练了一个模型,同时把模型的参数记录在resnet18_ultimate.pkl上 在本地的CPU上,我想把参数加载,于是一开始我是这么写代码的: import torch impor ...
- pytorch 如何将张量、类实例、函数放到GPU上
调用".cuda()"函数,将tensor从GPU中取回到CPU中,只需调用".cpu()"即可 直接看代码: import torch import torc ...
- OpenAI 研究员最新博客:如何在多GPU上训练真正的大模型?
[专栏:前沿进展]近年来,在大规模预训练语言模型的帮助下,许多NLP模型在基准测试任务中取得了更好的结果.如何训练大而深的神经网络是一个挑战,需要大量的GPU内存和很长的训练时间.本文回顾了几种流行的 ...
- 模型在gpu上反而速度变慢了_Tensorflow1.13.1+CUDA10.0+CuDNN7.4在GPU上训练模型
在参加十五届全国大学生智能车竞赛时,电磁AI组别需要用到Tensorflow训练模型,CPU训练的速度实在太慢,于是打算用GPU训练,在此记录下配置环境的过程 安装Tensorflow 关于Pytho ...
- pytorch多gpu并行训练
pytorch多gpu并行训练 link-web 转自:pytorch多gpu并行训练 - 知乎 目录(目录不可点击) 说明 1.和DataParallel的区别 2.如何启动程序的时候 2.1 单机 ...
- 在Google的GPU上永远免费训练您的机器学习模型
训练你的模型是解决机器学习中耗费时间和成本最高的部分. 在GPU上训练您的模型可以让您的速度提升接近40倍,需要2天时间并将其转化为几个小时. 但是,这通常会花钱购买您的钱包. 有一天我偶然发现了一个 ...
- 在MNIST数据集上训练一个手写数字识别模型
使用Pytorch在MNIST数据集上训练一个手写数字识别模型, 代码和参数文件 可下载 1.1 数据下载 import torchvision as tvtraining_sets = tv.dat ...
- 单个GPU无法训练GPT-3,但有了这个,你能调优超参数了
视学算法报道 编辑:陈萍.小舟 模型越大,超参数(HP)调优成本越高,微软联合 OpenAI 提出 HP 调优新范式,单个 GPU 上就可以调优 GPT-3 超参数. 伟大的科学成就不能仅靠反复试验取 ...
- 《Deep Learning for Computer Vision with Python》阅读笔记-ImageNetBundle(第7章)-在ImageNet上训练VGGNet
//2022.2.27日下午18:33开始学习笔记 7.在ImageNet上训练VGGNet 在本章中,我们将学习如何在ImageNet数据集上从零开始训练VGG16网络架构.卷积神经网络的VGG家族 ...
最新文章
- 任正非公开信深度解读:两年怎样改变了华为?
- 致敬YOLO!华科提出YOLOS:基于视觉Transformer的目标检测
- React Native初始化项目0.47.1报错
- android 长按缩放拖动_十年Android之路面试2000人,面试准备+内部泄露核心题(中高级)...
- Java并发编程笔记之LinkedBlockingQueue源码探究
- linux上怎么快速删除一个目录?
- 砥志研思SVM(四) 序列最小最优化算法(SMO)论文翻译
- webservice 心得
- 基于主机Overlay和自研虚拟化网关的VPC在360的落地
- Free MyBatis plugin下载安装及作用
- java实现微信公众号的模板消息推送
- 天津大学计算机学院网韩瑞泽,2018天津大学计算机学院考研拟录取名单
- html手机分辨率选择,怎么看手机分辨率(手机屏幕分辨率多少才合适?)
- 把图片隐藏进音频详细教程(含软件下载及使用方法)
- MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(六)变压器耦合栅极驱动
- html 晃动图标动画,SVG+CSS3 摇晃的铃铛动画图标
- 数字经济是如何崛起的?
- Firefox Crash后session内容的恢复
- 【LiteApp系列】埋点的设计
- 【软件测试】智能电视应用测试要求1
热门文章
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖
- Android设置壁纸的几种方案
- 弘辽科技:淘宝新店运营推广的几大技巧
- android中 textview.setVisibility(View.VISIBLE)失效问题
- Halcon-图像锐化(边缘处理)
- 盼望着,盼望着,东风来了,春天的脚步近了。
- 机械加工工艺规程的制订
- svn: E155007 和 svn: E155004
- 格雷希尔快速连接器GripSeal 密封性测试密封堵头 G15Pro系列使用说明
- 12月5日计算机考试浙江卷英语答案,英语b级试卷?2019年12月b级真题试卷。