[Linux] 在Ubuntu 18.04 上安裝CUDA、CuDNN - Clay ...
文章推薦指數: 80 %
今天我將在Ubuntu 18.04 的系統上安裝GPU 的驅動程式,為了能夠進行機器學習,故也安裝了CUDA 以及CuDNN 的環境配置。
在安裝的過程中,也順手將這些 ...
[Linux]在Ubuntu18.04上安裝CUDA、CuDNN Clay2019-11-022021-05-12Keras,Linux,MachineLearning,Python,Tensorflow
如果今天我們的電腦上有好的GPU,那麼,我們通常都很希望這可以拿來進行深度學習。
基本上安裝相關的環境並不複雜,通常第一次嘗試也只需要幾個小時就可以上手。
主要的步驟只有4個,分別是以下數項:
將gcc版本為7.x,我們需要重新安裝gcc6.x版下載安裝GPU的驅動(Driver)下載安裝CUDA(推薦版本為10.0)下載安裝CuDNN
也許中途會再遇到各式這樣的問題也說不定,畢竟每個人安裝時的環境、套件都有所不同。
至少我的話,這一年來重灌系統的次數已經快要逼近十次了。
當然,是不同的電腦啦,並不是我每次都搞爆我自己的電腦XD
然而,就連自認重灌許多次、有問題就Google一定可以穩穩地找到解答的我——昨天都在重灌系統時遇到GNUGRUBversion2.02的問題——然後查了查網路,並沒有找到有效的解決手段,最後拔掉了疑似有問題的硬碟,這才終於重灌成功。
話題扯遠了。
那麼以下,我就開始闡述我的安裝方法吧!如有我的心得沒有紀錄到的部份,一定要仔細確認發生了什麼報錯、並且查詢網路上是否有人提供解決方法哦!
安裝gcc
之所以建議安裝gcc6.x的版本,而非Ubuntu18.04默認的gcc7.x,是因為之後在編譯一些CUDA的套件時gcc6.x比較順利,我便曾經遇過gcc7.x報錯的問題。
gcc6.x的安裝我是參考這裡:https://gist.github.com/zuyu/7d5682a5c75282c596449758d21db5ed
這個安裝步驟幾乎是我看過最簡便的:
sudoapt-getupdate&&\
sudoapt-getinstallbuild-essentialsoftware-properties-common-y&&\
sudoadd-apt-repositoryppa:ubuntu-toolchain-r/test-y&&\
sudoapt-getupdate&&\
sudoapt-getinstallgcc-6g++-6-y&&\
sudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-660--slave/usr/bin/g++g++/usr/bin/g++-6&&\
gcc-v
直接複製貼上即可,只要Output為6.x,那便大功告成了。
下載安裝GPU驅動程式
現在大部份要使用的GPU都是Nvidia的,你可以直接到他們官方的驅動程式下載處選擇自己需要的版本:https://www.nvidia.com.tw/Download/index.aspx?lang=tw
選好自己所需要的版本後便開始下載。
例如我的話,現在我電腦上裝著2080Ti的GPU,並且我是64位元的Ubuntu,所以我的選擇如上圖。
你也要選擇適合自己的版本。
下載好後,直接來到下載資料夾,使用以下指令安裝:
sudoshNVIDIA-Linux-x86_64-430.50.run
這時候,應該會出現"Thedistribution-providedpre-installscriptfailed!Areyousureyouwanttocontinue?"這樣的問題。
我記得我第一次裝驅動程式的時候就遇過這樣的問題、然後接下來每一次裝基本上遇到這個問題。
我不太確定這到底是怎麼回事,不過曾經看過英文論壇上的一個討論說『這是Nvidia的工程師跟大家開的一個玩笑!測驗你安裝的決心!』
哇靠,有夠鬼扯的哈哈哈哈(我只是想表達我的驚嘆,那名這樣說的網友很有可能說對了哈哈哈),不過我每次都直接選擇Continueinstall,目前也沒有遇過什麼樣的問題。
持續安裝,一路ok繼續,等到Kernel裝完,這時候我們需要重新啟動,來讓新的驅動正常運作。
sudoreboot
打開後,現在應該可以用:
nvidia-smi
這個指令來查看GPU了。
下載CUDA10.0
推薦10.0其實是我的私心,因為我現在跑什麼幾乎都是CUDA10.0比較穩。
當然,你可以任意挑你想要的版本。
https://developer.nvidia.com/cuda-10.0-download-archive
你可以從這裡選擇你要的版本下載。
下載好了之後來到下載的資料夾,使用:
sudoshcuda_10.0.130_410.48_linux.run
開始進行安裝。
安裝過程中,因為剛才已經事先安裝過GPU的驅動,所以在這邊,我們便不要再安裝GPU的驅動了。
(當然,如果不小心一路同意下去也沒關係,至少CUDA自動幫忙裝的驅動沒道理無法運行。
)
那麼接下來,就來安裝CuDNN吧!
CuDNN下載安裝
下載CuDNN比較麻煩,需要有它們的會員。
這裡建議還是加入一下,像是我,就下載了CuDNN好幾次。
https://developer.nvidia.com/rdp/form/cudnn-download-survey
這裡選擇自己的作業系統、然後挑選適用於CUDA10.0的版本(如果你前面真的跟我一樣裝CUDA10.0的話)。
然後同樣,點擊了下載。
下載好了之後,如果是.deb檔,我們來到下載資料夾後,需要用以下指令安裝。
sudodpkg-ilibcudnn7_7.6.4.38+cuda10.0_amd64.deb
安裝好之後重開機一下,這時候多半就已經可以正常訓練模型了。
測試
不知道能不能訓練模型怎麼能安心呢?這裡給大家一段簡單的SampleCode來測試是否有用到GPU。
首先,我們可能需要安裝四個套件:
sudopip3installtensorflow-gpu
sudopip3installkeras
sudopip3installmatplotlib
sudopip3installpandas
安裝好之後,應該可以執行底下的程式碼:
#coding:utf-8
importos
fromkeras.modelsimportSequential,load_model
fromkeras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D
fromkeras.utilsimportnp_utils,plot_model
fromkeras.datasetsimportmnist
importmatplotlib.pyplotasplt
importpandasaspd
#MnistDataset
(X_train,Y_train),(X_test,Y_test)=mnist.load_data()
x_train=X_train.reshape(60000,1,28,28)/255
x_test=X_test.reshape(10000,1,28,28)/255
y_train=np_utils.to_categorical(Y_train)
y_test=np_utils.to_categorical(Y_test)
#ModelStructure
model=Sequential()
model.add(Conv2D(filters=32,kernel_size=3,input_shape=(1,28,28),activation='relu',padding='same'))
model.add(MaxPool2D(pool_size=2,data_format='channels_first'))
model.add(Flatten())
model.add(Dense(256,activation='relu'))
model.add(Dense(10,activation='softmax'))
print(model.summary())
#Train
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=10,batch_size=64,verbose=1)
#Test
loss,accuracy=model.evaluate(x_test,y_test)
print('Test:')
print('Loss:%s\nAccuracy:%s'%(loss,accuracy))
#Savemodel
model.save('./CNN_Mnist.h5')
#LoadModel
model=load_model('./CNN_Mnist.h5')
#Display
defplot_img(n):
plt.imshow(X_test[n],cmap='gray')
plt.show()
defall_img_predict(model):
print(model.summary())
loss,accuracy=model.evaluate(x_test,y_test)
print('Loss:',loss)
print('Accuracy:',accuracy)
predict=model.predict_classes(x_test)
print(pd.crosstab(Y_test.reshape(-1),predict,rownames=['Label'],colnames=['predict']))
defone_img_predict(model,n):
predict=model.predict_classes(x_test)
print('Prediction:',predict[n])
print('Answer:',Y_test[n])
plot_img(n)
#coding:utf-8
importos
fromkeras.modelsimportSequential,load_model
fromkeras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D
fromkeras.utilsimportnp_utils,plot_model
fromkeras.datasetsimportmnist
importmatplotlib.pyplotasplt
importpandasaspd
#MnistDataset
(X_train,Y_train),(X_test,Y_test)=mnist.load_data()
x_train=X_train.reshape(60000,1,28,28)/255
x_test=X_test.reshape(10000,1,28,28)/255
y_train=np_utils.to_categorical(Y_train)
y_test=np_utils.to_categorical(Y_test)
#ModelStructure
model=Sequential()
model.add(Conv2D(filters=32,kernel_size=3,input_shape=(1,28,28),activation='relu',padding='same'))
model.add(MaxPool2D(pool_size=2,data_format='channels_first'))
model.add(Flatten())
model.add(Dense(256,activation='relu'))
model.add(Dense(10,activation='softmax'))
print(model.summary())
#Train
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=10,batch_size=64,verbose=1)
#Test
loss,accuracy=model.evaluate(x_test,y_test)
print('Test:')
print('Loss:%s\nAccuracy:%s'%(loss,accuracy))
#Savemodel
model.save('./CNN_Mnist.h5')
#LoadModel
model=load_model('./CNN_Mnist.h5')
#Display
defplot_img(n):
plt.imshow(X_test[n],cmap='gray')
plt.show()
defall_img_predict(model):
print(model.summary())
loss,accuracy=model.evaluate(x_test,y_test)
print('Loss:',loss)
print('Accuracy:',accuracy)
predict=model.predict_classes(x_test)
print(pd.crosstab(Y_test.reshape(-1),predict,rownames=['Label'],colnames=['predict']))
defone_img_predict(model,n):
predict=model.predict_classes(x_test)
print('Prediction:',predict[n])
print('Answer:',Y_test[n])
plot_img(n)
COPY
記得另外開一個Terminal來查看是否有吃到GPU:
watch-n1nvidia-smi
這個功能會每一秒刷新nvidia-smi的界面,基本上,上面的MNIST小程式大概吃約3%-10%左右的GPU而已。
希望大家都能順利安裝!
分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)分享到Reddit(在新視窗中開啟)
相關
Tags:KerasLinuxMachineLearningPythonTensorflow
LeaveaReply 取消回覆
Language
中文(台灣)
English
Search
Searchfor...
CategoriesCategories
選取分類
AndroidStudio (5)
Apple (39)
AppleScript (6)
iPad (3)
MacOS (36)
C/C++ (105)
C (10)
C++ (96)
C# (1)
Computer (4)
CSS (3)
Dart (3)
Database (9)
MySQL (6)
SQLite (2)
Excel (1)
Flutter (44)
IntellijIDEA (2)
Game (21)
NS (6)
PS4 (13)
PS5 (2)
Git (10)
Github (9)
GoogleSheets (1)
HTML (10)
Java (1)
JavaScript (9)
Kotlin (3)
LeetCdoe (79)
Linux (133)
MachineLearning (80)
Keras (7)
PyTorch (51)
Scikit-Learn (7)
Tensorflow (3)
Movie (1)
News (4)
NLP (27)
Novel (9)
Others (6)
PHP (14)
Python (342)
Flask (4)
Others (4)
Packages (55)
PyCharm (11)
Pygame (5)
PyQt5 (35)
PySide6 (4)
PythonTutorial (17)
Ruby (1)
Tools (16)
Unity (26)
VisualStudio (2)
VisualStudioCode (2)
Windows (12)
Word (5)
WordPress (57)
圍棋 (3)
未分類 (6)
漫畫 (2)
資料結構 (4)
隨筆 (2)
Archives Archives
選取月份
2022年3月 (15)
2022年2月 (17)
2022年1月 (28)
2021年12月 (21)
2021年11月 (14)
2021年10月 (20)
2021年9月 (11)
2021年8月 (20)
2021年7月 (24)
2021年6月 (24)
2021年5月 (32)
2021年4月 (26)
2021年3月 (31)
2021年2月 (14)
2021年1月 (18)
2020年12月 (17)
2020年11月 (25)
2020年10月 (24)
2020年9月 (21)
2020年8月 (17)
2020年7月 (21)
2020年6月 (19)
2020年5月 (28)
2020年4月 (31)
2020年3月 (24)
2020年2月 (25)
2020年1月 (32)
2019年12月 (39)
2019年11月 (53)
2019年10月 (34)
2019年9月 (15)
2019年8月 (18)
2019年7月 (15)
系列文章
隨筆散記
機器學習筆記
Python筆記
TAGSAndroidStudio(5)
Apple(29)
AppleScript(6)
C#(1)
C++(96)
Comic(2)
CSS(3)
C語言(10)
Dart(3)
Database(9)
Docker(2)
Excel(1)
Flask(4)
Flutter(43)
Game(18)
Git(6)
Github(9)
GoogleSheets(1)
HTML(10)
IntellijIDEA(2)
iPad(3)
Java(1)
JavaScript(10)
Keras(7)
Kotlin(3)
LeetCode(79)
Linux(132)
MachineLearning(76)
MacOS(36)
Microsoft(6)
Movie(1)
MySQL(6)
News(4)
NLP(28)
Novel(9)
NS(6)
Others(8)
PHP(14)
PS4(13)
PS5(2)
PyCharm(11)
PyQt5(34)
PySide6(3)
Python(331)
PythonPackages(53)
PythonTutorial(14)
PyTorch(51)
Qt(1)
Ruby(1)
RuneFactory4(2)
Scikit-Learn(7)
SQLite(2)
Tensorflow(3)
Tools(16)
Unity(25)
VIM(7)
VisualStudio(2)
VisualStudioCode(2)
Windows(9)
Word(5)
WordPress(56)
圍棋(3)
資料結構(4)
軌跡(4)
隨筆(1)
電腦(4)
RecentPosts
LeetCode:763-PartitionLabels解題紀錄
LeetCode:1007-MinimumDominoRotationsForEqualRow解題紀錄
LeetCode:895-MaximumFrequencyStack解題紀錄
LeetCode:316-RemoveDuplicateLetters解題紀錄
LeetCode:856-ScoreofParentheses解題紀錄
Calender
2019年11月
一
二
三
四
五
六
日
123
45678910
11121314151617
18192021222324
252627282930
«10月
12月»
SubscriptionName*Email*
SocialMedia
Follow@clayatlas2022
ClicktoCopy
延伸文章資訊
- 1在Ubuntu 上安裝NVIDIA CUDA - VMware Docs
可以在Ubuntu Linux 上安裝CUDA。 ... 使用wget 命令下載適用於Ubuntu 20.04 的NVIDIA CUDA 發行版。
- 2如何安裝CUDA、cuDNN 到Ubuntu 20.04? - 叩頂窩客
玩深度學習第一件事,先把CUDA、cuDNN 裝好!先確認手上的GPU 是否有支援CUDA,緊接著下載CUDA 安裝,過程中他也會自動幫你安裝正確的驅動。
- 3Ubuntu 安裝CUDA cuDNN pytorch tensorflow mxnet | by 林塔恩
This installation did not install the CUDA Driver. A driver of version at least 460.00 is require...
- 4Installation Guide Linux :: CUDA Toolkit Documentation
Ubuntu
- 5Ubuntu 16.04 安裝CUDA、cuDNN 教學 - Medium
Step 0 如何選擇安裝的版本 · Step 1 安裝前的準備動作 · Step 2 安裝CUDA · Step 3 安裝NVIDIA GPU driver · Step 4 安裝cuDNN.