深度学习(14)确认GPU

1. 确认GPU

python 复制代码
!nvidia-smi
复制代码
Sat Apr 30 18:03:10 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 471.35       Driver Version: 471.35       CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| 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  On |                  N/A |
| N/A   57C    P5    27W /  N/A |   2535MiB / 16384MiB |     10%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1556    C+G   Insufficient Permissions        N/A      |
|    0   N/A  N/A      2040    C+G   ...me\Application\chrome.exe    N/A      |
|    0   N/A  N/A      2876    C+G   C:\Windows\explorer.exe         N/A      |
|    0   N/A  N/A      3196    C+G   ...y\ShellExperienceHost.exe    N/A      |
|    0   N/A  N/A      9980    C+G   ...5n1h2txyewy\SearchApp.exe    N/A      |
|    0   N/A  N/A     12008    C+G   ...artMenuExperienceHost.exe    N/A      |
|    0   N/A  N/A     13280    C+G   ...cw5n1h2txyewy\LockApp.exe    N/A      |
|    0   N/A  N/A     14460    C+G   ...2txyewy\TextInputHost.exe    N/A      |
|    0   N/A  N/A     18708    C+G   Insufficient Permissions        N/A      |
|    0   N/A  N/A     20020      C   ...a\envs\py3.6.3\python.exe    N/A      |
|    0   N/A  N/A     20804    C+G   ...4__htrsf667h5kn2\AWCC.exe    N/A      |
|    0   N/A  N/A     21492    C+G   ...e\StoreExperienceHost.exe    N/A      |
|    0   N/A  N/A     22124    C+G   ...kzcwy\mcafee-security.exe    N/A      |
|    0   N/A  N/A     22540    C+G   ...y\AccountsControlHost.exe    N/A      |
|    0   N/A  N/A     23132    C+G   ...5n1h2txyewy\SearchApp.exe    N/A      |
|    0   N/A  N/A     26464    C+G   ...ekyb3d8bbwe\YourPhone.exe    N/A      |
+-----------------------------------------------------------------------------+
python 复制代码
import torch
from torch import nn

torch.device('cpu'), torch.cuda.device('cuda'), torch.cuda.device('cuda:1')

一、什么是 device(设备)

在 PyTorch 里:

复制代码
CPU → 普通计算(慢一点)
GPU → 并行计算(很快,训练用)
复制代码
(device(type='cpu'),
 <torch.cuda.device at 0x2a59c8b2278>,
 <torch.cuda.device at 0x2a59c8b2588>)

查看GPU的数量

python 复制代码
print(torch.cuda.device_count())
复制代码
1
python 复制代码
#返回某一个GPU
def try_gpu(i=0):
    """如果存在,则返回gpu(i),否则返回gpu"""
    if torch.cuda.device_count() >= i + 1:
        return torch.device(f'cuda:{i}')
    return torch.device('cpu')

#返回所有的GPU
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())
print(try_gpu(10))
print(try_all_gpus())
复制代码
cuda:0
cpu
[device(type='cuda', index=0)]
python 复制代码
# 查询张量所在设备
X = torch.tensor([1,2,3])
print(X.device) # 默认在CPU内存上
复制代码
cpu

可以在创建的时候把他们设置到GPU中

python 复制代码
# 存储在GPU上
X = torch.ones(2,3,device=try_gpu())
X 
复制代码
tensor([[1., 1., 1.],
        [1., 1., 1.]], device='cuda:0')
python 复制代码
# 在第二个GPU上创建一个随即张量
Y = torch.rand(2,3,device=try_gpu(1))
print(Y.device) # 没有1号GPU,则放到CPU上
Y
复制代码
cpu
复制代码
tensor([[0.3045, 0.4398, 0.9162],
        [0.5351, 0.1256, 0.8916]])
python 复制代码
# 要计算X+Y,我们需要决定在哪里执行这个操作
Z = X.cuda(0) # X+Y必须X和Y都在同一个GPU上
print(X)
print(Z)
复制代码
tensor([[1., 1., 1.],
        [1., 1., 1.]], device='cuda:0')
tensor([[1., 1., 1.],
        [1., 1., 1.]], device='cuda:0')
python 复制代码
Y = torch.rand(2,3,device=try_gpu(0))
Y + Z
Z.cuda(0) is Z # 如果变量在0号GPU时,就返回True
复制代码
True
python 复制代码
# 神经网络与GPU
net = nn.Sequential(nn.Linear(3,1)) # 创建神经网络时已经把权重初始化好了
net = net.to(device=try_gpu()) # 把所有参数在0号GPU上拷贝一份
X = torch.ones(2,3,device=try_gpu()) # X 在0号GPU上
net(X) # 所以前项运算所有元素都在0号GPU上运行
复制代码
tensor([[0.7668],
        [0.7668]], device='cuda:0', grad_fn=<AddmmBackward0>)
python 复制代码
# 确认模型参数存储在同一个GPU上
net[0].weight.data.device
复制代码
device(type='cuda', index=0)
相关推荐
乌恩大侠3 分钟前
从 5G 通信到厘米级感知:基于 NVIDIA Aerial、SRS 与 UL-TDOA 构建 6G 无线定位实验平台
人工智能·5g·电信大模型
云和数据.ChenGuang7 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
西西木科技丨Shopify开发机构8 小时前
CalDigit TS4案例:AI产品图的Shopify整站接入与验收
人工智能·shopify·独立站
2601_965448878 小时前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台8 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
HRaitest8 小时前
秋招技术岗招聘提效:三类 AI 招聘方案的技术底层与选型逻辑
大数据·人工智能·求职招聘·ai-native
天远数科8 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
车软学堂8 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
海盗12349 小时前
AI 新闻日报 10-28:Atria Dawn 完整版开源、Cursor Agent SDK 转正、Genie 4 实时世界模型
人工智能·机器人·开源·人工智能aigc
志尊宝9 小时前
AI原生前端开发(035):AI时代的工程化最佳实践总结
人工智能·ai-native