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

news2024/11/19 3:17:19

动手学深度学习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()) # 1

def 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.coloradmin.cn/o/1663992.html

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

相关文章

无限视差滚动(轮播)

无限视差滚动 无限视差滚动(轮播&#xff09;可以给用户一种无限滚动的感觉&#xff0c;视觉效果非常的好。话不多说&#xff0c;先来看效果 这边因为得控制GIF图片大小在5MB以内&#xff0c;导致看着不太丝滑 这种效果在国外用得很多&#xff0c;不过最近几年国内也慢慢开始使…

融合Transformer与CNN,实现各任务性能巅峰,可训练参数减少80%

论文er看过来&#xff0c;今天给各位推荐一个热门创新方向&#xff1a;CNNTransformer。 众所周知&#xff0c;CNN通过多层卷积自动学习空间层级特征&#xff0c;能够有效提取图像局部特征。而Transformer通过自注意力机制全局建模&#xff0c;能够有效处理长距离依赖关系。 …

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

Hi3516标准系统入门&#xff08;IDE方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会出现…

静态分析-RIPS-源码解析记录-01

token流扫描重构部分&#xff0c;这一部分主要利用php的token解析api解析出来的token流&#xff0c;对其中的特定token进行删除、替换、对于特定的语法结构进行重构&#xff0c;保持php语法结构上的一致性 解析主要在lib/scanner.php中通过Tokenizer这个类来实现,也就是在main…

视频号小店做店的最新最全攻略,小白也能快速上手轻松变现!

大家好&#xff0c;我是电商花花。 从开始接触视频号小店到现在已经两年多时间了&#xff0c;关于视频号小店也有不少经验和感触。 最近越来越多的人开始进入视频号小店的电商赛道&#xff0c;有人日均销售额做到几万甚至十几万。 想在视频号上变现赚钱&#xff0c;但是苦于…

APP广告转化流程对广告变现收益有影响吗?

对接广告平台做广告变现的APP开发者都清楚&#xff0c;广告变现的价格、收益不是一成不变的&#xff0c;经常会遇到eCPM波动对广告收益产生较大影响。 导致APP收益产生波动的因素包括&#xff1a;用户质量、广告类型、广告平台的资源波动、广告预算的季节性、广告展示量级等。…

R语言数据探索与分析-中国GDP回归分析与预测

首先读取数据&#xff1a; 将GDP列转换为常规数字格式 # 可视化GDP数据 # 查看数据结构 # 确保数据类型是正确的 第一张图片展示了中国2002年到2021年间的GDP增长趋势&#xff0c;这是一个时间序列图&#xff0c;其中横轴表示年份&#xff0c;纵轴表示GDP&#xff08;单位未…

springcloud alibaba微服务框架涉及的技术

一、微服务架构中核心模块及其使用技术总览 二、各模块详细说明 1、注册中心 该模块主要功能为 自动提供服务的注册与发现&#xff0c;集中式管理服务&#xff0c;让 服务调用端发现服务&#xff0c;让服务提供端注册服务&#xff0c;倘若没有注册中心&#xff0c;那客户端就…

Acwing2024蓝桥杯FloodFill

AcWing 687. 扫雷 模拟以下样例(10X10): 把扫雷地图转变为数字记录的地图:地雷记作-1,其余表示8个方向有几个地雷,完成后如下图: 接着搜索所有0联通块(为红色矩形),并且把联通块附近不是地雷的点(红色圆形)全标记为-1,如下图: 而答案就是当前该图中大于0的数的数目之和,再加上…

GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用教程

原文链接&#xff1a;GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247603080&idx1&sn3e0d7015a2a717c320ebea3a673388ee&chksmfa82126fcdf59b795c7e2cea575470d42480ab809b926be5f94633eac…

国产银河麒麟V10SP1系统下搭建TiDB数据库操作步骤图文

开发目的&#xff1a;在国产银河麒麟系统中搭建TiDB数据库运行环境。 开发工具&#xff1a;银河麒麟系统V10SP1TiDBMySql数据库8.0。 具体步骤&#xff1a; 1、在VmWare虚拟机中安装好国产银河麒麟V10Sp1操作系统。 2、打开终端命令&#xff0c;安装TiDB相关软件&#xff1…

张驰咨询:AI与六西格玛——携手共进,非彼此替代

在历史的洪流中&#xff0c;技术与方法的演进如同波澜壮阔的画卷&#xff0c;不断书写着人类文明的篇章。六西格玛&#xff0c;作为一种追求极致品质与效率的方法论&#xff0c;是现代工业文明中的瑰宝。而当我们面对AI&#xff08;人工智能&#xff09;这一新时代的产物时&…

安卓模拟器Frida环境搭建 (mumu+adb+frida)

安卓模拟器Frida环境搭建 &#xff08;mumuadbfrida&#xff09; mumu模拟器安装adb与frida下载mumuadbfrida配置一般的报错实战 针对apk抓包问题&#xff0c;有的时候Android9已经不适用于现在的需求&#xff0c;需要更高的Android版本&#xff0c;mumu模拟器提供了Android12的…

【经验总结】Vue2中的全局变量(store

需求场景 需要在vue中存储一个可变的&#xff0c;可读写的全局变量在不同的js、页面中均可调用和读写 技术&#xff1a;使用vue的store 用法总结 一、定义变量 1、找到vue的/src/store路径&#xff0c;在modules文件夹下创建文件&#xff08;这里便于测试创建demo.js&…

Linux下安装JDK并配置环境变量

一、Oracle官网下载jdk 1、官网地址 https://www.oracle.com/java/technologies/downloads/#java17 2、命令下载 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 3、解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz 4、配置环境变量 ec…

HarmonyOS开发案例:【生活健康app之获取成就】(3)

获取成就 本节将介绍成就页面。 功能概述 成就页面展示用户可以获取的所有勋章&#xff0c;当用户满足一定的条件时&#xff0c;将点亮本页面对应的勋章&#xff0c;没有得到的成就勋章处于熄灭状态。共有六种勋章&#xff0c;当用户连续完成任务打卡3天、7天、30天、50天、…

IP地址127.0.0.1的误解:一次投标监管的技术失误

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

selenium进行xhs图片爬虫:03获取一篇图文的图片

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…

出海企业哪种组网方案更省事?

对于出海企业而言&#xff0c;建立跨地区的数据传输和协同工作至关重要&#xff0c;以提升运营效率。因此&#xff0c;网络构建变得迫在眉睫。通过构建企业组网&#xff0c;企业能够加强与海外分支、客户和合作伙伴之间的联系&#xff0c;加速海外业务的发展。 然而&#xff0c…

深兰科技荣获中国机器人行业年度独角兽企业奖

近日&#xff0c;“维科杯OFweek 2023人工智能产业大会暨行业年度评选颁奖典礼“在深圳隆重举行。经OFweek网络投票、专家组评审及组委会综合评审三轮激烈紧张的评审筛选&#xff0c;通过对近300个参评项目的综合实力考量&#xff0c;最终深兰科技成功荣膺“维科杯OFweek2023中…