深度学习(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)
相关推荐
浔川python社1 小时前
浔川社团第一次福利数据公布
人工智能·python·deepseek
薛定e的猫咪1 小时前
强化学习中的OOD检测:从状态异常到分布偏移
论文阅读·人工智能·深度学习
geneculture1 小时前
《一种智能通信子母机》(申请日 1993.4.7公开号CN1095341A)专利文件的全文汉英双语对照版本+系统点评
人工智能·数据挖掘·哲学与科学统一性·智能通信
树獭非懒1 小时前
LangChain 不是框架,而是一把瑞士军刀
人工智能·程序员·llm
三行数学2 小时前
数学周刊第17期(2026年04月27日-05月03日)12小时攻克42年数学难题:人机深度协作正式步入数学研究
人工智能·数学周刊·三行数学
HQChart2 小时前
HQChart使用教程105-K线图,分时图如何对接AI进行数据分析
人工智能·数据挖掘·数据分析·hqchart·k线图·走势图
AI周红伟2 小时前
周红伟:DeepSeek官方教您如何部署Hermes Agent 和接入 DeepSeek-V4-Pro
人工智能·深度学习·学习·机器学习·copilot·openclaw
Chengbei112 小时前
AI大模型网关存在SQL注入、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·安全·web安全·网络安全·系统安全
java1234_小锋2 小时前
Spring AI 2.0 开发Java Agent智能体 - stream()方法Flux流式响应输出
java·人工智能·spring