动手学深度学习17 使用和购买gpu

动手学深度学习16 Pytorch神经网络基础)

  • 5. GPU
  • colab
  • NVIDIA GPU
  • QA
    • 显存

5. GPU

课件: https://zh-v2.d2l.ai/chapter_deep-learning-computation/use-gpu.html

有GPU+装cuda。

把模型参数放到指定设备上。

# 5.6. GPU
# !nvidia-smi  
# 在命令行中,感叹号(!)通常用于执行系统命令或外部程序。在这个上下文中,
# `!nvidia-smi`表示你正在执行一个名为`nvidia-smi`的系统命令,它通常用于显示关于NVIDIA GPU的信息,比如当前使用情况、显存占用等。
# 能查看cuda版本。# 5.6.1. 计算设备 查看设备
import torch
from torch import nn
# cuda:0和cuda是等价的
print(torch.device('cpu'), torch.device('cuda'), torch.device('cuda:1'))
print(torch.cuda.device('cuda'))
# cpu cuda cuda:1
# torch.device('cpu'), torch.device('cuda'), torch.device('cuda:1')
# (device(type='cpu'), device(type='cuda'), device(type='cuda', index=1))
# 查询可用gpu的数量  nvidia-smi 查看  编号从0开始
print(torch.cuda.device_count()) # 1def try_gpu(i=0):"""如果存在,则返回gpu(i),否则返回cpu()"""if torch.cuda.device_count() >= i+1:return torch.device(f'cuda:{i}')return torch.device('cpu')def try_all_gpus():"""返回所有可用的GPU,如果没有GPU,则返回[cpu(),]"""devices = [torch.device(f'cuda:{i}') for i in range(torch.cuda.device_count())]return devices if devices else [torch.device('cpu')]print(try_gpu(), try_gpu(10), try_all_gpus()) # cpu cpu [device(type='cpu')]
# try_gpu(), try_gpu(10), try_all_gpus()
# (device(type='cpu'), device(type='cpu'), [device(type='cpu')])# 5.6.2. 张量与GPU
x = torch.tensor([1, 2, 3])
print(x.device)  # cpu 默认情况下,张量是在CPU上创建的 
# device(type='cpu')
# 无论何时我们要对多个项进行操作, 它们都必须在同一个设备上。 
# 例如,如果我们对两个张量求和, 我们需要确保两个张量都位于同一个设备上, 
# 否则框架将不知道在哪里存储结果,甚至不知道在哪里执行计算# 5.6.2.1. 存储在GPU上
X = torch.ones(2, 3, device=try_gpu())
print(X)
# X
# tensor([[1., 1., 1.],
#     [1., 1., 1.]], device='cuda:0')Y = torch.rand(2, 3, device=try_gpu(1)) # 只有1张卡 所以传1的话if判断不成立 所以用的是cpu
print(Y)
# tensor([[0.7767, 0.8478, 0.6001],
#     [0.4728, 0.8607, 0.5628]])# 5.6.2.2. 复制
# print(X+Y) # RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
Z = Y.cuda(0)
print(Y)
# tensor([[0.7767, 0.8478, 0.6001],
#     [0.4728, 0.8607, 0.5628]])
print(Z)
# tensor([[0.7767, 0.8478, 0.6001],
#     [0.4728, 0.8607, 0.5628]], device='cuda:0')
print(X+Z) # X+Y 会发生在XY所在的device中
# tensor([[1.7767, 1.8478, 1.6001],
#     [1.4728, 1.8607, 1.5628]], device='cuda:0')
# 假设变量Z已经存在于第二个GPU上。 如果我们还是调用Z.cuda(1)会发生什么? 它将返回Z,而不会复制并分配新内存。不会自己再copy一份自己。
print(Z.cuda(0) is Z) # True# 在CPU和GPU之间传数据是很慢的事情。# 5.6.3. 神经网络与GPU
net = nn.Sequential(nn.Linear(3,1))
# net.to(device) 挪到指定device上
net = net.to(device=try_gpu())
print(net(X))
# tensor([[0.5205],
#     [0.5205]], device='cuda:0', grad_fn=<AddmmBackward0>)
# 确认模型参数存储和模型、输入数据都在同一个GPU上。
print(net[0].weight.data.device) # cuda:0
# device(type='cuda', index=0)
cpu cuda cuda:1
1
cuda:0 cpu [device(type='cuda', index=0)]
cpu
tensor([[1., 1., 1.],[1., 1., 1.]], device='cuda:0')
tensor([[0.3054, 0.6903, 0.9338],[0.3610, 0.6394, 0.2725]])
tensor([[0.3054, 0.6903, 0.9338],[0.3610, 0.6394, 0.2725]])
tensor([[0.3054, 0.6903, 0.9338],[0.3610, 0.6394, 0.2725]], device='cuda:0')
tensor([[1.3054, 1.6903, 1.9338],[1.3610, 1.6394, 1.2725]], device='cuda:0')
True
tensor([[0.2109],[0.2109]], device='cuda:0', grad_fn=<AddmmBackward0>)
cuda:0

colab

免费GPU资源,每月限时。
在这里插入图片描述

NVIDIA GPU

云GPU比真实GPU贵5-6倍。
买新的不买旧的。8G内存就可以了。内存很贵。内存对深度学习不是那么有用。
找GPU。

QA

1: 显存比cpu内存要贵,越大越好,但越大越贵
2:gpu存在性能的上限,通过不断加核的数量突破摩尔定律。
3: 跑训练的时候显存不够用,但是把batchsize调小,cuda占用又变小, 可以把模型调小一点。
4:长时间满负荷对显卡没有影响,但是要注意显卡的温度,不要长时间高于80°。
5:有显卡,但是torch.cuda.device_count()=0 ,可能原因:1是可能cuda没装好,可以看下显卡信息nvidia-smi。2可能是装的cpu版本的pytorch,需要装成gpu版本的pytorch。
6:一般在net() work之前,把数据data放到设备上to gpu。数据格式的变化和读取可能不一定gpu设备上计算快。
7:to(device) 是model的组件 net().to(device), 是把模型或数据copy到gpu device 上。
8:gpu推理,就是inference,不在gpu上forward,不做训练–算梯度-。
9:GPU使用率69%-70%,使用率还可以。GPU速度不明显可以看看网络或者机器本身性能问题。
10:nvidia训练的模型,不建议在其他GPU上跑。
11:apple M1 gpu和cpu共用内存,都在一个芯片里面, 主要看内存带宽。
12: cuda 编译cuda的编译器。
13:GPU上的推理通常比训练好一些,不是内存的关键,可以把batchsize设置大一些。
14:自定义的网络结构,每次创建一个实例是会创建新的参数,不把同一个实例放在不同位置,是不会共享参数的。

显存

显存是指显卡上的内存,用于存储图形数据、纹理、帧缓冲区等信息。它在计算机图形处理和深度学习等领域中扮演着重要角色。以下是关于显存的具体介绍:

  1. 作用

    • 存储图像和视频数据:显存可以存储屏幕上显示的图像、视频和其他图形数据。
    • 加速图形处理:显存中存储了图形处理单元(GPU)需要的数据,可以加速图形渲染和处理过程。
    • 支持多显示器:显存可以同时存储多个显示器所需的图像数据,支持多显示器配置。
    • 训练深度学习模型:在深度学习中,显存用于存储模型参数、中间计算结果等,支持大规模模型的训练和推理。
  2. 类型

    • GDDR(Graphics Double Data Rate):主要用于显卡的显存,具有较高的带宽和传输速度,适合处理图形数据和计算任务。
    • HBM(High Bandwidth Memory):高带宽内存,提供更高的带宽和能效,常用于高性能计算和深度学习加速器。
  3. 容量

    • 显存容量通常以GB(Gigabyte)为单位,不同显卡型号的显存容量会有所不同,从几GB到数十GB不等。
    • 大容量显存适合处理大规模数据和复杂图形任务,如高分辨率图像处理、大规模模型训练等。
  4. 使用场景

    • 游戏:显存对于游戏性能至关重要,足够的显存可以存储大量的纹理、模型和渲染数据,提供流畅的游戏体验。
    • 深度学习:在深度学习中,显存用于存储神经网络的参数、中间结果和计算图,支持大规模模型的训练和推理。
    • 科学计算:对于需要大量计算和数据处理的科学计算任务,显存可以加速计算过程并提高计算效率。

总的来说,显存在图形处理、深度学习和高性能计算等领域都起着重要作用,其容量和性能直接影响着相关任务的执行效率和效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

验证搜索二叉树

目录 题目 方法一 思路 优化 方法二 思维误区 递归关系推导 代码实现 题目 98. 验证二叉搜索树 难度&#xff1a;中等 给你一个二叉树的根节点root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含…

家电无缝连接的奥秘—通过酷开系统实现智能家居互联互通

智能家居是消费升级与技术升级的共同产物&#xff0c;是时代发展的必然结果&#xff0c;日渐深入人心也是大势所趋。酷开科技智慧AI&#xff0c;让智慧家居成为生活中的一部分&#xff0c;以酷开系统为中心&#xff0c;实现家庭内智能家居的连接&#xff0c;并可通过酷开系统进…

【教学类-55-03】20240512图层顺序挑战(三角形版)(6块三角形,420种叠放顺序)

作品展示 背景需求 分享Lab&#xff5c;更新啦&#xff5e;图层顺序挑战游戏 - 小红书 (xiaohongshu.com)https://www.xiaohongshu.com/discovery/item/62f21760000000000900ec6d?app_platformandroid&ignoreEngagetrue&app_version8.35.0&share_from_user_hidde…

【c++】set、map用法详解

set、map用法详解 1. 关联式容器2. 键值对2.1 &#xff1a;pair2.2&#xff1a;make_pair 3. 树形结构的关联式容器3.1&#xff1a;set构造函数find()erase()insert()count()lower_bound()upper_bound() 3.2&#xff1a;multiset3.3&#xff1a;map构造函数insert()operator[] …

【数据结构】浅谈

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、概念&#xff1a; 二、物理结构&#xff1a; 1、顺序存储结构&#xff1a; 2、链式存储结构&#xff1a; 3、数据索引存储结构: 4、数据散列存储结构&#xf…

现代制造之Cura切片

现代制造 有现代技术支撑的制造业&#xff0c;即无论是制造还是服务行业&#xff0c;添了现代两个字不过是因为有了现代科学技术的支撑&#xff0c;如发达的通信方式&#xff0c;不断发展的互联网&#xff0c;信息化程度加强了&#xff0c;因此可以为这两个行业增加了不少优势…

手把手教你用 spacy3 训练中文NER

文章目录 模型文件下载训练模型准备数据转化成 doc_bin 格式模型训练配置生成初始配置补全完整配置 开始训练 测试模型参考文献 模型文件下载 https://github.com/explosion/spacy-models/releases?qzh&expandedtrue 简单测试一下ner效果&#xff0c;发现根本不能用 训…

关于‘==’与equals的区别

我写的也不清楚&#xff0c;有兴趣的可以看这位大佬的文章链接&#xff0c;说的很清楚 https://www.cnblogs.com/Latiny/p/8099581.html#!comments 与 equals 方法 判断两个变量是否相等有两种方式&#xff1a;一种是利用 运算符&#xff0c;另一种是利用equals方法。 注意…

C#语音播报(通过CoreAudioAPI完成对扬声器的控制)

1&#xff0c;效果&#xff1a; 作用&#xff1a; 可对当前内容&#xff08;例如此例中的重量信息&#xff09;进行语音合成播报 。可设置系统扬声器音量与状态(是否静音),同时根据扬声器状态同步更新当前控件状态与值&#xff0c;实现强制PC扬声器按照指定的音量进行播报&…

MATLAB的Bar3函数调节渐变色(内附渐变色库.mat及.m文件免费下载链接)

一. colormap函数 可以使用colormap函数&#xff1a; t1[281.1,584.6, 884.3,1182.9,1485.2; 291.6,592.6,896,1197.75,1497.33; 293.8,596.4,898.6,1204.4,1506.4; 295.8,598,904.4,1209.0,1514.6];bar3(t1,1) set(gca,XTickLabel,{300,600,900,1200,1500},FontSize,10) set…

智慧园区能耗管控系统,3D可视化开发都需要哪些技术栈?

数据可视化&#xff1a; 数据可视化是将数据通过图表、图形、地图等可视化方式展示&#xff0c;使得数据更加直观、易于理解和分析。在智慧园区能耗管控系统中&#xff0c;可以使用各种图表库&#xff08;如Echarts、Highcharts&#xff09;和可视化工具&#xff08;如Tableau…

MES系统与WMS集成方法(满分100学习资料)

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于MES系…

常见排序算法——希尔排序

基本原理 希尔排序在插入排序的基础之上&#xff0c;将待排序序列分成组&#xff0c;分成 gap 个组&#xff0c;组的数量通过 length / 2 获得&#xff0c;比如6个元素的序列&#xff0c;那么就是 3 个组&#xff0c;每个组两个元素&#xff0c;然后将每个组的元素进行插入排…

ECharts系列:基本使用及配置项

目录 基本使用 配置项的写法与位置 配置项option包含属性 各个配置项属性大全 基本使用 在阅读本篇文章时请参考ECharts官网地址中的内容配合了解 首先我们知道ECharts图表中有许多类型&#xff0c;如折线图、柱状图、饼形图等&#xff0c;下面我以折线图为例讲解ECharts图…

文本检测模型 DBNet 一种基于分割算法的模型 对每个像素点进行自适应二值化,并将二值化过程与网络训练相结合 可微分二值化模块 概率图

文本检测模型 DBNet DBNet文本检测模型是一种基于分割算法的模型,其优化之处在于对每个像素点进行自适应二值化,并将二值化过程与网络训练相结合。 传统的文本检测方法通常将二值化作为一个后处理步骤,与网络训练分开进行。而DBNet则提出了一种可微分的二值化方法,即将文…

【全开源】Java同城预约月嫂服务上门服务本地服务源码APP+小程序+公众号+H5

特色功能&#xff1a; 预约服务&#xff1a;用户可以通过小程序在线预约月嫂服务&#xff0c;选择服务时间、服务类型、月嫂等信息&#xff0c;实现方便快捷的预约流程。在线咨询&#xff1a;用户可以通过小程序向月嫂或服务机构咨询相关问题&#xff0c;获得专业的解答和建议…

Linux修炼之路之基础指令(2)+shell命令及运行原理

目录 一&#xff1a;基础指令 7.rm指令 和 rmdir指令 8.*通配符 9.man指令 10.echo指令 11.cat 指令 12.cp 指令 13.mv指令 14.alias 指令 15.less more head tail wc-l 指令 16.date 时间相关的指令 17.cal指令 18. find which whereis 三个查找文件指令…

【全开源】Java俱乐部系统社区论坛商城系统源码-奔驰奥迪保时捷大众宝马等汽车俱乐部

特色功能&#xff1a; 会员中心&#xff1a;会员中心可以帮助企业更好地管理客户&#xff0c;包括设置积分商城、会员卡充值、个人汽车档案等功能&#xff0c;对不同的会员群体展开有针对性的营销&#xff0c;并维护和积累自己的粉丝群体。信息服务&#xff1a;负责定期发布新…

关于在ubuntu18.04中运行ORB_SLAM3时遇到的报错:段错误(核心已转储)的解决方法(踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、段错误&#xff08;核心已转储&#xff09;1. 已放弃(核心已转储)(1) 问题描述(2)原因分析 二、解决方法1. 解决方法一2. 解决方法二 总结 一、段错误&#xff…

【硬件模块】ESP-01SWiFi模块基于AT指令详解(WiFi,TCP/IP,MQTT)

ESP-01S ESP-01S是由安信可科技开发的一款Wi-Fi模块。其核心处理器是ESP8266&#xff0c;该处理器在较小尺寸的封装中集成了业界领先的Tensilica L106超低功耗32位微型MCU&#xff0c;带有16位精简模式&#xff0c;主频支持80MHz和160MHz&#xff0c;并集成了Wi-Fi MAC/BB/RF/P…