PyTorch在筆記本上實現CUDA加速

  最近剛開始學習深度學習,參考了一篇深度學習的入門文章,原文連接:https://medium.freecodecamp.org/everything-you-need-to-know-to-master-convolutional-neural-networks-ef98ca3c7655。python

  文章內容就是kaggle上的一個competition,識別圖像中是否存在航拍仙人掌,使用了Pytorch框架,原文代碼有些許錯誤,經改正後代碼以下:瀏覽器

 1 import numpy as np  2 import pandas as pd  3 from pathlib import Path  4 from fastai import * 
 5 from fastai.vision import * 
 6 import torch  7 get_ipython().run_line_magic('matplotlib', 'inline')  8 
 9 train_df=pd.read_csv("train.csv") #讀取csv文件到train_df
10 data_folder=Path(".") #path爲默認位置
11 train_images=ImageList.from_df(train_df,path=data_folder,folder='train')#記住讀取方法
12 print(torch.cuda.is_available()) 13 a=torch.ones(1,1) 14 print(a.cuda()) 15 
16 trfm=get_transforms(do_flip=True,flip_vert=True,max_rotate=10.0,max_zoom=1.1,max_lighting=0.2,max_warp=.2,p_affine=0.75,p_lighting=0.75) 17 #train_img = train_img.transform(transformations, size=128)#錯誤句子,直接刪除
18 
19 test_df=pd.read_csv("sample_submission.csv") 20 test_img=ImageList.from_df(test_df,path=data_folder,folder='test') 21 train_img = (train_images 22         .split_by_rand_pct(0.01)#把訓練數據分出一小部分作驗證集
23  .label_from_df() 24  .add_test(test_img) 25         .transform(trfm, size=128) 26         .databunch(path='.', bs=14, device= torch.device('cuda:0'))#進行批處理,bs由顯存決定,太大跑不了。過小跑得慢
27         .normalize(imagenet_stats)#圖像歸一化
28  ) 29 
30 learn = cnn_learner(train_img, models.densenet161, metrics=[error_rate, accuracy])#用 cnn_leaner 建立一個訓練器
31 #用移動網絡開熱點下載快,用聯通的網就下載的很慢
32 
33 #單週期策略,暴力搜索(大了:訓練過程快,容易錯過偏差邊界,甚至會跳出可控範圍,沒法收斂;小了:訓練慢)
34 learn.lr_find() 35 learn.recorder.plot() 36 
37 lr = 3e-02 
38 learn.fit_one_cycle(5, slice(lr)) 39 
40 preds,_ = learn.get_preds(ds_type=DatasetType.Test) 41 test_df.has_cactus = preds.numpy()[:, 0] 42 
43 test_df.to_csv('submission.csv', index=False)

 

  以上就是所有的代碼,運行環境爲win10 64位操做系統,Python3.7,Pytorch1.1.0,CUDA10.1.120,NVDIA驅動程序431.36。網絡

  開始時使用CUDA運行遇到困難,測試print(torch.cuda.is_available()) 老是顯示false,通過一番折騰,找到了解決辦法,以下:框架

  一、Pytorch在國內經過pip安裝會有問題,最好經過在PyTorch官網(https://pytorch.org/)下載後,而後本地安裝whl文件(再次提醒,必定要本地安裝,這樣才能保證安裝的Pytorch是完整包含CUDA的):學習

    ①官網圖片,直接瀏覽器中打開以下https網站,可能會慢一些;或者將網站拷貝到迅雷中下載,這樣可能會快一點。測試

另一定要注意安裝Python3.7的64位,而且win10/win7也要是64位,由於Pytorch僅支持64位!網站

       

    ②本地文件系統圖片和經過命令行(管理員模式)安裝圖片,cmd中兩個whl文件都要安裝,我這裏只演示一個,若是以前裝過Pytorch可是無法調用CUDA,就先卸載(必定要用管理員模式的命令行)再安裝,卸載指令爲 pip uninstall torch 和 pip uninstall torchvision:url

 

   二、NVDIA官網(https://developer.nvidia.com/cuda-downloads)下載CUDA,首先應確認本身的電腦是否有NVDIA顯卡,並肯定是否支持CUDA,直接一路下一步安裝便可,這裏就不放圖片了。spa

  三、jupyter notebook中運行上述代碼,若  print(torch.cuda.is_available())  爲True則證實CUDA調用成功,另外注意  bs 數值要根據本身的顯存大小來設置。操作系統

note:筆記本通常都是雙顯卡(一個位集成顯卡,一個爲NVDIA獨立顯卡),作桌面模式win10能夠自動切換使用獨立顯卡調用CUDA,並不用特地設置NVDIA控制面板,以前走過不少彎路,覺得筆記本上無法用CUDA加速,後來發現就是版本或者安裝的問題。



  經過這樣一番設置,應該就能夠調用CUDA了,關鍵點有幾個:64位,離線安裝whl,NVDIA顯卡。

  下面就盡情享受CUDA的快感吧,cpu運行上述代碼須要幾個小時,用CUDA加速後幾十分鐘就完成了。

相關文章
相關標籤/搜索