pytorch顯卡算力測試
『壹』 深度學習框架入門學習需要高性能顯卡嗎
這個吃CPU,對顯卡要求不高,根據你的預算來找吧,CPU核數多,主頻高的就行。內存要夠,至少16G起,顯卡集成的都問題不大。
『貳』 pytorch用什麼顯卡
1. 利用CUDA_VISIBLE_DEVICES設置可用顯卡
在CUDA中設定可用顯卡,一般有2種方式:
(1) 在代碼中直接指定
import os
os.environ['CUDA_VISIBLE_DEVICES'] = gpu_ids
(2) 在命令行中執行代碼時指定
CUDA_VISIBLE_DEVICES=gpu_ids python3 train.py
如果使用sh腳本文件運行代碼,則有3種方式可以設置
(3) 在命令行中執行腳本文件時指定:
CUDA_VISIBLE_DEVICES=gpu_ids sh run.sh
(4) 在sh腳本中指定:
source bashrc
export CUDA_VISIBLE_DEVICES=gpu_ids && python3 train.py
(5) 在sh腳本中指定
source bashrc
CUDA_VISIBLE_DEVICES=gpu_ids python3 train.py
如果同時使用多個設定可用顯卡的指令,比如
source bashrc
export CUDA_VISIBLE_DEVICES=gpu_id1 && CUDA_VISIBLE_DEVICES=gpu_id2 python3 train.py
那麼高優先順序的指令會覆蓋第優先順序的指令使其失效。優先順序順序為:不使用sh腳本 (1)>(2); 使用sh腳本(1)>(5)>(4)>(3)
個人感覺在煉丹時建議大家從(2)(3)(4)(5)中選擇一個指定可用顯卡,不要重復指定以防造成代碼的混亂。方法(1)雖然優先順序最高,但是需要修改源代碼,所以不建議使用。
2 .cuda()方法和torch.cuda.set_device()
我們還可以使用.cuda()[包括model.cuda()/loss.cuda()/tensor.cuda()]方法和torch.cuda.set_device()來把模型和數據載入到對應的gpu上。
(1) .cuda()
以model.cuda()為例,載入方法為:
model.cuda(gpu_id) # gpu_id為int類型變數,只能指定一張顯卡
model.cuda('cuda:'+str(gpu_ids)) #輸入參數為str類型,可指定多張顯卡
model.cuda('cuda:1,2') #指定多張顯卡的一個示例
(2) torch.cuda.set_device()
使用torch.cuda.set_device()可以更方便地將模型和數據載入到對應GPU上, 直接定義模型之前加入一行代碼即可
torch.cuda.set_device(gpu_id) #單卡
torch.cuda.set_device('cuda:'+str(gpu_ids)) #可指定多卡
但是這種寫法的優先順序低,如果model.cuda()中指定了參數,那麼torch.cuda.set_device()會失效,而且pytorch的官方文檔中明確說明,不建議用戶使用該方法。
第1節和第2節所說的方法同時使用是並不會沖突,而是會疊加。比如在運行代碼時使用
CUDA_VISIBLE_DEVICES=2,3,4,5 python3 train.py
而在代碼內部又指定
model.cuda(1)
loss.cuda(1)
tensor.cuda(1)
那麼代碼會在GPU3上運行。原理是CUDA_VISIBLE_DEVICES使得只有GPU2,3,4,5可見,那麼這4張顯卡,程序就會把它們看成GPU0,1,2,3,.cuda(1)把模型/loss/數據都載入到了程序所以為的GPU1上,則實際使用的顯卡是GPU3。
如果利用.cuda()或torch.cuda.set_device()把模型載入到多個顯卡上,而實際上只使用一張顯卡運行程序的話,那麼程序會把模型載入到第一個顯卡上,比如如果在代碼中指定了
model.cuda('cuda:2,1')
在運行代碼時使用
CUDA_VISIBLE_DEVICES=2,3,4,5 python3 train.py
這一指令,那麼程序最終會在GPU4上運行。
3.多卡數據並行torch.nn.DataParallel
多卡數據並行一般使用
torch.nn.DataParallel(model,device_ids)
其中model是需要運行的模型,device_ids指定部署模型的顯卡,數據類型是list
device_ids中的第一個GPU(即device_ids[0])和model.cuda()或torch.cuda.set_device()中的第一個GPU序號應保持一致,否則會報錯。此外如果兩者的第一個GPU序號都不是0,比如設置為:
model=torch.nn.DataParallel(model,device_ids=[2,3])
model.cuda(2)
那麼程序可以在GPU2和GPU3上正常運行,但是還會佔用GPU0的一部分顯存(大約500M左右),這是由於pytorch本身的bug導致的(截止1.4.0,沒有修復這個bug)。
device_ids的默認值是使用可見的GPU,不設置model.cuda()或torch.cuda.set_device()等效於設置了model.cuda(0)
4. 多卡多線程並行torch.nn.parallel.DistributedDataParallel
(這個我是真的沒有搞懂,,,,)
參考了這篇文章和這個代碼,關於GPU的指定,多卡多線程中有2個地方需要設置
torch.cuda.set_device(args.local_rank)
torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank])
模型/loss/tensor設置為.cuda()或.cuda(args.local_rank)均可,不影響正常運行。
5. 推薦設置方式:
(1) 單卡
使用CUDA_VISIBLE_DEVICES指定GPU,不要使用torch.cuda.set_device(),不要給.cuda()賦值。
(2) 多卡數據並行
直接指定CUDA_VISIBLE_DEVICES,通過調整可見顯卡的順序指定載入模型對應的GPU,不要使用torch.cuda.set_device(),不要給.cuda()賦值,不要給torch.nn.DataParallel中的device_ids賦值。比如想在GPU1,2,3中運行,其中GPU2是存放模型的顯卡,那麼直接設置
CUDA_VISIBLE_DEVICES=2,1,3
(3) 多卡多線程
『叄』 如何判斷pytorch使用了gpu
1、將已經實例化的模型在多個GPU上並行,只需要使用nn.DataParallel(model)方法即可,可用torch.cuda.device_count()檢查GPU的個數。

『肆』 為什麼已經訓練好的分類器在測試階段pytorch中dataloader的batchsize和shuffle=T/F會影響分類器的准確率
shuffle的時候是不是只把特徵洗牌了而沒有洗y,或者x和y洗的邏輯不一樣所以導致y錯位了?
『伍』 Win7 SP1 GT 730 PyTorch+CUDA10.1安裝後報錯
- 顯卡型號多少
- 驅動版本多少
- cuda版本是否匹配
- 底層的庫是否安裝,比如c++
- 是py代碼中的庫是否版本匹配,適合當前顯卡
- 以上均有可能不符合,仔細檢查
- 希望可以幫助你,請採納
『陸』 為什麼徐直軍會表示,華為AI戰略的地基已經落成
目前,華為已發布基於升騰310的Atlas、MDC產品、雲服務。目前,MDC和國內外主流車廠在園區巴士、新能源車、自動駕駛等場景進行了合作。華為雲圖像分析服務、OCR服務、視頻分析服務、超過50 API都已經基於升騰310服務,日均調用量超過1億次,而且在快速增長,預計年底日均調用量會突破3億次。

隨著升騰310、910晶元的應用和MindSpore框架的完善,徐直軍表示,華為全棧全場景AI解決方案各重要組成部分已悉數登場。也就是說,華為AI戰略的地基已經落成。
『柒』 linux下安裝pytorch出現錯誤怎麼解決
網路問題,文件包無法下載
可能是國外被封問題
可以嘗試使用代理或vpn再下載看看
『捌』 如果用自己的電腦用於深度學習是不是一定顯卡要是英偉達的
不明白你說的深度學習是指什麼,如果只是學習,對顯卡是沒有要求的,核顯即可。玩游戲的話對顯卡要求高,需要使用配置高性能獨顯的機型,如果是3D設計,推薦配置專業圖形顯卡的工作站。
