日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch中GPU使用

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch中GPU使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文中的內容轉載自:《動手學深度學習》

GPU計算

到目前為止,我們一直在使用CPU計算。對復雜的神經網絡和大規模的數據來說,使用CPU來計算可能不夠高效。在本節中,我們將介紹如何使用單塊NVIDIA GPU來計算。所以需要確保已經安裝好了PyTorch GPU版本。準備工作都完成后,下面就可以通過nvidia-smi命令來查看顯卡信息了。

!nvidia-smi # 對Linux/macOS用戶有效

輸出:

Sun Mar 17 14:59:57 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.48 Driver Version: 390.48 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 1050 Off | 00000000:01:00.0 Off | N/A | | 20% 36C P5 N/A / 75W | 1223MiB / 2000MiB | 0% Default | +-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 1235 G /usr/lib/xorg/Xorg 434MiB | | 0 2095 G compiz 163MiB | | 0 2660 G /opt/teamviewer/tv_bin/TeamViewer 5MiB | | 0 4166 G /proc/self/exe 416MiB | | 0 13274 C /home/tss/anaconda3/bin/python 191MiB | +-----------------------------------------------------------------------------+

可以看到我這里只有一塊GTX 1050,顯存一共只有2000M(太慘了😭)。

4.6.1 計算設備

PyTorch可以指定用來存儲和計算的設備,如使用內存的CPU或者使用顯存的GPU。默認情況下,PyTorch會將數據創建在內存,然后利用CPU來計算。

用torch.cuda.is_available()查看GPU是否可用:

import torch from torch import nntorch.cuda.is_available() # 輸出 True

查看GPU數量:

torch.cuda.device_count() # 輸出 1

查看當前GPU索引號,索引號從0開始:

torch.cuda.current_device() # 輸出 0

根據索引號查看GPU名字:

torch.cuda.get_device_name(0) # 輸出 'GeForce GTX 1050'

4.6.2 Tensor的GPU計算

默認情況下,Tensor會被存在內存上。因此,之前我們每次打印Tensor的時候看不到GPU相關標識。

x = torch.tensor([1, 2, 3]) x

輸出:

tensor([1, 2, 3])

使用.cuda()可以將CPU上的Tensor轉換(復制)到GPU上。如果有多塊GPU,我們用.cuda(i)來表示第 iii 塊GPU及相應的顯存(iii從0開始)且cuda(0)和cuda()等價。

x = x.cuda(0) x

輸出:

tensor([1, 2, 3], device='cuda:0')

我們可以通過Tensor的device屬性來查看該Tensor所在的設備。

x.device

輸出:

device(type='cuda', index=0)

我們可以直接在創建的時候就指定設備。

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')x = torch.tensor([1, 2, 3], device=device) # or x = torch.tensor([1, 2, 3]).to(device) x

輸出:

tensor([1, 2, 3], device='cuda:0')

如果對在GPU上的數據進行運算,那么結果還是存放在GPU上。

y = x**2 y

輸出:

tensor([1, 4, 9], device='cuda:0')

需要注意的是,存儲在不同位置中的數據是不可以直接進行計算的。即存放在CPU上的數據不可以直接與存放在GPU上的數據進行運算,位于不同GPU上的數據也是不能直接進行計算的。

z = y + x.cpu()

會報錯:

RuntimeError: Expected object of type torch.cuda.LongTensor but found type torch.LongTensor for argument #3 'other'

4.6.3 模型的GPU計算

同Tensor類似,PyTorch模型也可以通過.cuda轉換到GPU上。我們可以通過檢查模型的參數的device屬性來查看存放模型的設備。

net = nn.Linear(3, 1) list(net.parameters())[0].device

輸出:

device(type='cpu')

可見模型在CPU上,將其轉換到GPU上:

net.cuda() list(net.parameters())[0].device

輸出:

device(type='cuda', index=0)

同樣的,我么需要保證模型輸入的Tensor和模型都在同一設備上,否則會報錯。

x = torch.rand(2,3).cuda() net(x)

輸出:

tensor([[-0.5800],[-0.2995]], device='cuda:0', grad_fn=<ThAddmmBackward>)

小結

  • PyTorch可以指定用來存儲和計算的設備,如使用內存的CPU或者使用顯存的GPU。在默認情況下,PyTorch會將數據創建在內存,然后利用CPU來計算。
  • PyTorch要求計算的所有輸入數據都在內存或同一塊顯卡的顯存上。

總結

以上是生活随笔為你收集整理的Pytorch中GPU使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。