当前位置:   article > 正文

深度学习(12)——利用GPU做深度学习_使用gpu运行深度学习项目

使用gpu运行深度学习项目

前言

前文所谈都是基于CPU搭建深度学习的模型,利用CPU来优化模型,数据处理,实际上CPU在运算速度运算能力上不及GPU,随着现如今游戏的发展,挖矿的需求,GPU变得越来越强,GPU可以实现并行计算,对于极高算力要求的深度学习来说,GPU是用来运行深度学习更好的选择。

查看本地GPU状态

这行代码可以看到自己设备的或者云端的GPU型号等信息

!nvidia-smi
  • 1
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 511.79       Driver Version: 511.79       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 Off |                  N/A |
| N/A   44C    P8    N/A /  N/A |      0MiB /  4096MiB |      1%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

这行代码可以看到可用的GPU有几张

import torch
from torch import nn
torch.cuda.device_count()
  • 1
  • 2
  • 3

如果自己本地是有gpu的却返回0,可以安装一下GPU所需的pytorch和cuda,代码如下:

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

  • 1
  • 2

23/4/24补充:这里大家可以根据自己电脑的cuda版本,下载对应的pytorch-gpu,网址:https://pytorch.org/get-started/locally/ 直接在命令行输入pip install那句话就行了。
在这里插入图片描述
这里顺便说一句,python或者tensorflow这些深度学习包和cuda版本还有python版本其实是有对应关系的,大家在安装的时候要注意,如果你的cuda版本比较低,但又因为身处实验室不方便升级cuda,或者更喜欢稳定的旧版本cuda,那么就可能需要安装旧版本的tensorflow包,然而在安装包的时候命令行可能会告知我们找不到对应版本,那是因为python的版本可能过高了,自动检测发现当前python版本无法不兼容旧版本的深度学习包,这时候可能需要我们去降python版本或者就是再创一个虚拟环境。
顺便再提一句,tensorflow这个包,他可能会在运行的时候直接把显存占满,或者几乎占满,我也不知道啥原因。这里网上有一种方案可以解决,我忘了出处了,就不给引用了。

import os
config=tf.compat.v1.ConfigProto()
# 设置最大占有GPU不超过显存的50%(可选)
config.gpu_options.per_process_gpu_memory_fraction=0.5
config.gpu_options.allow_growth = True  # 设置动态分配GPU内存
sess=tf.compat.v1.Session(config=config)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行例子

这个函数方便调用GPU,如果碰到没有GPU的情况,那就可以调用CPU,避免报错,方便使用

def try_gpu(i=0):  #@save
    """如果存在,则返回gpu(i),否则返回cpu()"""
    if torch.cuda.device_count() >= i + 1:
        return torch.device(f'cuda:{i}')
    return torch.device('cpu')

def try_all_gpus():  #@save
    """返回所有可用的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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
# 这里将输入的数据存入GPU的内存中
X = torch.ones(2, 3, device=try_gpu(0))
# 这里将神经网络模型也存入GPU内存忠
net = nn.Sequential(nn.Linear(3, 1))
net = net.to(device=try_gpu())
net(X)
# 结果
tensor([[-0.3039],
        [-0.3039]], device='cuda:0', grad_fn=<AddmmBackward0>)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

小结

要使用GPU跑深度学习,就必须把模型要用的训练数据测试数据、模型全部都放在GPU的内存中,千万不能CPU、GPU内存混用。
后面的学习过程中会更多的使用GPU,极大提高算力。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/677396
推荐阅读
相关标签
  

闽ICP备14008679号