深度学习(12)——利用GPU做深度学习

前言

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

查看本地GPU状态

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

!nvidia-smi
+-----------------------------------------------------------------------------+
| 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                                                 |
+-----------------------------------------------------------------------------+

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

import torch
from torch import nn
torch.cuda.device_count()

如果自己本地是有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

运行例子

这个函数方便调用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()
# 这里将输入的数据存入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>)

小结

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

你可能感兴趣的:(深度学习,深度学习,python,人工智能)