基于Pytorch深度学习——GPU安装/使用

本文章来源于对李沐动手深度学习代码以及原理的理解,并且由于李沐老师的代码能力很强,以及视频中讲解代码的部分较少,所以这里将代码进行尽量逐行详细解释

并且由于pytorch的语法有些小伙伴可能并不熟悉,所以我们会采用逐行解释+小实验的方式来给大家解释代码

可能听说过深度学习的小伙伴们都知道,在如今的年代,深度学习早就是几乎人人都可以使用的玩意,不再是以前只有世界顶级的高端实验室才有机会使用的有钱人的游戏。这几乎全部得益于我们GPU的问世

查看自己的CUDA版本

windows系统

我们可以了解到,看李沐老师的课有很多人使用的并不是云服务器,而是自己的本地开发环境,所以我们专门分出windows版本的使用教程

第一步:打开cmd

我们可以先按住win+R键,然后输入cmd,接着就会出现下面这样的一个黑框:

输入指令查询

我们在黑框中输入nvidia-smi。这个指令需要注意的地方是一定不要自己自作主张去添加空格

接着我们就可以看到如下的环境,这里我们的Driver Version为528.92,CUDA的版本为12.0

Jupyter Notebook查询

用这个查询就比较简单,我们只需要在代码界面输入

python 复制代码
!nvidia-smi

同样需要注意的是不要自己加一些空格

导入模块以及查看CPU和GPU

python 复制代码
import torch
from torch import nn
torch.device('cpu'),torch.cuda.device('cuda')

如果这里出现了报错或者其他的警告,我们可以先暂时不管,文章下面会继续解决

查看GPU个数以及修复BUG

python 复制代码
torch.cuda.device_count()

这段代码输入后,大部分人会得到两种答案:一种是确实返回了自己CUDA的个数,还有一种就是自己原本有GPU的电脑,但是这里返回的是0

如果小伙伴们是第一种情况的话,那么问题不算特别大,我们可以继续下面的操作,这里我们会针对第二种情况提出解决办法:

device_count()为0解决办法

在这种情况下,大概率是pytorch的安装出现了问题 ,我们可以重新安装一次pytorch

pytorch下载地址:pytorch的下载地址,这个界面可能需要较长的时间打开,如果显示连接失败的话可以多试几次或者进行科学上网

进入到官网后,我们可以找到类似于下面的一个界面

我们一般选择Stable的Pytorch Build

然后根据你自己的系统选择Your OS

在安装包的选择上我们选择pipconda都可以,但是我个人建议选择pip,因为pip可以使用一些其他的源,例如清华源等等

我们这里需要讲解的是我们的Compute Platform的选择,这里我们一定要选择CUDA版本的,那么我们应该如何选择呢?

还是回到上面我们查看CUDA版本的那个地方

我们可以看到我这里的CUDA的版本是12.0,我们只可以选择Pytorch对应CUDA版本小于等于自己本地版本的

所以这里我们只能选择CUDA11.8版本

接着复制下面的Command,然后到自己的环境下进行pip安装即可

安装完成之后,在自己的环境下输入下面代码:

python 复制代码
torch.cuda.is_available()

如果返回的是True,说明安装成功,cuda可以使用

寻找电脑的GPU

python 复制代码
def try_gpu(i=0):
    # 如果存在GPU就返回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')]

try_gpu(),try_gpu(10),try_all_gpus()

这一段代码,李沐老师的主要目的是为了看看自己计算机或者云服务器中是否存在GPU环境,如果存在GPU环境的话就返回GPU,如果不存在的话就返回CPU

我这边的运行结果为

python 复制代码
>>>(device(type='cuda', index=0),
 device(type='cpu'),
 [device(type='cuda', index=0)])

可能让初学者有疑惑的是,为什么我这里try_gpu(10)返回的是一个CPU,那是因为我本地电脑只有一块3050的GPU,try_gpu(10)的意思是寻找第10块GPU,而我电脑并没有10块GPU,所以就默认返回CPU

数据转存到GPU

python 复制代码
x = torch.tensor([1,2,3])
x.device 
>>> device(type='cpu')

这一段代码我们可以看出,我们一般普通创建的变量都会优先创建在CPU的内存上,那么如果我们需要将它们创建在我们的GPU上,我们应该怎么做呢

python 复制代码
X = torch.ones(2,3,device=try_gpu())
X
>>> tensor([[1., 1., 1.],
        [1., 1., 1.]], device='cuda:0')

我们修改device参数,成功的将X存放在了GPU上面

神经网络与GPU

这一块将是我们后面的重点,因为后面我们讲解卷积神经网络的时候,需要进行大量的GPU的并行运算

python 复制代码
net = nn.Sequential(nn.Linear(3,1))
net = net.to(device=try_gpu())
net(X)
>>>tensor([[0.7873],
        [0.7873]], device='cuda:0', grad_fn=<AddmmBackward0>)
        
net[0].weight.data.device
>>>device(type='cuda', index=0)
相关推荐
幻风_huanfeng9 分钟前
线性代数中的核心数学知识
人工智能·机器学习
volcanical17 分钟前
LangGPT结构化提示词编写实践
人工智能
weyson1 小时前
CSharp OpenAI
人工智能·语言模型·chatgpt·openai
RestCloud1 小时前
ETLCloud异常问题分析ai功能
人工智能·ai·数据分析·etl·数据集成工具·数据异常
IT古董1 小时前
【机器学习】决定系数(R²:Coefficient of Determination)
人工智能·python·机器学习
鲜枣课堂1 小时前
5G-A如何与AI融合发展?华为MBBF2024给出解答
人工智能·5g·华为
武子康2 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
武子康2 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
weixin_518285053 小时前
深度学习笔记11-神经网络
笔记·深度学习·神经网络
封步宇AIGC3 小时前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘