Ubuntu18.04LTS下cuda10.0+cudnn7.5+TensorFlow1.13環境搭建
Mac和Ubuntu下修改pip源和TensorFlow(CPU)安裝
目錄
- 前言
- 開發環境一覽
- 顯示卡驅動安裝
- 下載驅動
- 禁用nouveau
- 安裝驅動
- 安裝CUDA10.0
- 第一個CUDA程式
- 安裝cudnn7.5
- 安裝TensorFlow1.13
- 最後
前言
之前寫過cuda環境的搭建文章, 這次乾脆補全整個深度學習環境的搭建.
開發環境一覽
- CPU: Intel core i7 4700MQ
- GPU: NVIDIA GT 750M
- OS: UBUNTU 18.04.1LTS 64位
用指令看下英偉達顯示卡:
lspci | grep -I nvidia

NVIDIA GT 750M
當你搭建完成環境之後, 可以用程式碼檢視硬體資訊, 自己寫或者官方的例子, 我的NVIDIA GT 750M資訊顯示如下圖, 當然可以直接到英偉達官網檢視顯示卡資訊. 這張資訊表目前看來就是些引數, 但是後續的並行演算法很多時候是依據這些引數來設計的:

顯示卡資訊

官方例子顯示卡資訊
顯示卡驅動安裝
千萬不要用UBUNTU附加驅動裡提供的顯示卡驅動!!!
千萬不要用UBUNTU附加驅動裡提供的顯示卡驅動!!!
千萬不要用UBUNTU附加驅動裡提供的顯示卡驅動!!!
一般來說, 你會遇到一些奇怪的問題, 當然, 錦鯉是不會出問題的(手動滑稽).
這是第一個坑點, 大體有三種展現方式:
- 裝完重啟進不去系統, 卡住ubuntu載入頁面;
- 無限登入;
- 裝好了, 進入了系統, 然後輸入nvidia-smi指令沒有任何反應. 正常情況會彈出一張表, 如下所示:

nvidia-smi
下載驅動
行了, 來說說我的實操:
首先到 官網 下載顯示卡驅動, 比方說我是GT 750M, 作業系統是64位Linux, 我就找對應的版本進行下載.

下載驅動

下載驅動
刪掉以往的驅動. 注意, 就算你啥都沒裝, 這步也是無害的.
sudo apt-get remove --purge nvidia*
更新並安裝一些需要的庫, 先裝這麼多, 之後裝CUDA還有一波.
sudo apt-get update sudo apt-get install dkms build-essential linux-headers-generic
禁用nouveau
開啟blacklist.conf, 在最後加入禁用nouveau的設定, 這是一個開源驅動, 如圖所示:
sudo vim /etc/modprobe.d/blacklist.conf
blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off

禁用nouveau
禁用nouveau核心模組
echo options nouveau modeset=0 sudo update-initramfs -u
重啟. 如果執行如下指令 沒用打印出任何內容 , 恭喜你, 禁用nouveau成功了.
lsmod | grep nouveau
安裝驅動
sudo service lightdm stop
這不適用於18.04. 18.04可以如下操作:
- 關閉使用者圖形介面
sudo systemctl set-default multi-user.target sudo reboot
- 開啟使用者圖形介面
sudo systemctl set-default graphical.target sudo reboot
sudo chmod u+x NVIDIA-Linux-x86_64-390.87.run sudo ./NVIDIA-Linux-x86_64-390.87.run –no-opengl-files

安裝驅動

安裝驅動
sudo ./NVIDIA-Linux-x86_64-390.87.run –uninstall
順帶一提, 可能會彈出 Unable to find a suitable destination to install 32-bit compatibility libraries on Ubuntu 18.04 Bionic Beaver Linux 的bug, 然後你需要下面三條指令:
sudo dpkg --add-architecture i386 sudo apt update sudo apt install libc6:i386
並且中途的選項都選no比較好, 指不定卡死在安裝哪個奇怪的東西上.
重啟. 用 nvidia-smi 指令試一下, 如果看到類似下圖, 恭喜你, 驅動安裝成功. 或者看到附加驅動顯示 繼續使用手動安裝的驅動 .

nvidia-smi
安裝之後在 軟體和更新 當中會顯示如下圖:

附加驅動
安裝CUDA10.0
先來補庫.
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
到 官網 下載要的CUDA版本, 我這裡是 10.0 , 下載runfile(local)版本, 如下圖所示:

安裝CUDA10.0
md5檢測一下, 不合格要重新下載. 下圖是我的檢測結果:
md5sum cuda_10.0.130_410.48_linux.run

md5
sudo service lightdm stop
這不適用於18.04. 18.04可以如下操作:
- 關閉使用者圖形介面
sudo systemctl set-default multi-user.target sudo reboot
- 開啟使用者圖形介面
sudo systemctl set-default graphical.target sudo reboot
sudo sh cuda_10.0.130_410.48_linux.run –no-opengl-files

安裝過程
然後會看到 三個installed .

安裝成功
新增環境變數
vim ~/.bashrc
最後寫入:
export CUDA_HOME=/usr/local/cuda export PATH=$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
儲存退出, 並其生效.
source ~/.bashrc
執行一些檢測命令, 如果和我顯示的類似, 恭喜你, 環境配置完成.
cat /proc/driver/nvidia/version
nvcc -V

環境檢測
可以跑一下英偉達提供的學習案例:

deviceQuery
第一個CUDA程式
之前在 開發環境 部分展示過一個小栗子, 來看看具體程式碼吧~
vim Device.cu
#include <stdio.h> int main() { int nDevices; cudaGetDeviceCount(&nDevices); for (int i = 0; i < nDevices; i++) { cudaDeviceProp prop; cudaGetDeviceProperties(∝, i); printf("Device Num: %d\n", i); printf("Device name: %s\n", prop.name); printf("Device SM Num: %d\n", prop.multiProcessorCount); printf("Share Mem Per Block: %.2fKB\n", prop.sharedMemPerBlock / 1024.0); printf("Max Thread Per Block: %d\n", prop.maxThreadsPerBlock); printf("Memory Clock Rate (KHz): %d\n", prop.memoryClockRate); printf("Memory Bus Width (bits): %d\n", prop.memoryBusWidth); printf("Peak Memory Bandwidth (GB/s): %.2f\n\n", 2.0 * prop.memoryClockRate * (prop.memoryBusWidth / 8) / 1.0e6); } return 0; }
nvcc Device.cu -o Device.o
./Device.o

第一個CUDA程式
安裝cudnn7.5
首先到 官網 去下載勾選的4個:

cudnn7.5
然後解壓tgz包, 複製檔案到cuda環境, 接著安裝deb包.
tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* sudo dpkg -i libcudnn7_7.5.0.56-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-doc_7.5.0.56-1+cuda10.0_amd64.deb
這樣就完成安裝了, 用個小栗子來測試下吧, 結果如圖示:
cp -r /usr/src/cudnn_samples_v7/ ~ cd ~/cudnn_samples_v7/mnistCUDNN make clean && make ./mnistCUDNN

結果
安裝TensorFlow1.13
很遺憾我的GPU算力只有3.0, 最低要求是3.5, 不過這裡還是安裝一下tf, 當做練手了.
sudo apt-get install python-pip python3-pip python-dev sudo pip3 install tensorflow-gpu

安裝圖示
可以用如下python程式碼查詢版本號和路徑:
#!/usr/bin/python3 import tensorflow as tf print (tf.__version__) print (tf.__path__)

image.png
最後我給出一個測試例子, 但是很遺憾, 我是無法執行的.
#!/usr/bin/python3 import tensorflow as tf # Just disables the warning, doesn't enable AVX/FMA import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' hello = tf.constant("Hello, tf!") sess = tf.Session() printf (sess.run(hello))

效果圖
最後
關於CPU版本, 可以參看 Mac和Ubuntu下修改pip源和TensorFlow(CPU)安裝 . 喜歡記得點贊哦, 有意見或者建議評論區見~