該過(guò)程包含了裝GCC、CUDA、CuDNN、Anaconda、TensorFlow的過(guò)程。
首先了解下,裝完Ubuntu之后,需要進(jìn)行的幾個(gè)步驟:
1、修改root密碼
首先,在shell中輸入sudo su,接著輸入root的密碼,進(jìn)入了終端的root權(quán)限了。
輸入sudo passwd輸入一次舊密碼,兩次新密碼,就可以成功修改舊密碼了。
在root用戶下做完需要root權(quán)限的操作后,用exit/logout命令,或Ctrl+D退出root用戶,返回到當(dāng)前登陸用戶。
2、修改IP地址
sudo vi /etc/network/interfaces修改IP地址,IP地址前的關(guān)鍵字改成static,否則IP地址并不固定。然后sudo reboot。
3、配置代理
sudo vi /etc/apt/apt.conf,設(shè)置http(s)_proxy=http://xxx.xxx.xxx.xxx:xxx, 用于穿透網(wǎng)關(guān)。
4、更新source.list
sudo apt-get update(注意后面不跟安裝包了),更新完后,就可以用sudo apt-get install xxx安裝新的軟件包了。
5、掛載硬盤
sudo fdisk -l
sudo fdisk /dev/sdb p/n/w
sudo mkfs -t ext4 /dev/sdb/
sudo e2label /dev/sdb/ /data
sudo mkdir /data
sudo vi /etc/fstab,修改LABEL=/data /data ext4 defaults 0 2
sudo reboot
6、安裝GCC
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade
sudo apt-get install make
7、安裝CUDA
下載安裝文件cuda-8.0.xxx.sh
sudo sh cuda-8.0.xxx.sh
添加PATH、LD_LIBRARY_PATH:
vi ~/.bashrc
export PATH="/usr/local/cuda-8.0.xxx/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0.xxx/lib64:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0.xxx/extras/CUPTI/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
nvcc -V (--version)驗(yàn)證nvidia-cuda-toolkit驗(yàn)證版本
安裝完后,通過(guò)sudo nvidia-smi -pm 1或nvidia-smi來(lái)驗(yàn)證
而nvidia-smi pmon實(shí)時(shí)查看顯卡sm、memory消耗情況
卸載cuda過(guò)程為:
cd /usr/local/cuda/bin
sudo ./uninstall_cuda_8.0.xxx.pl
8、安裝CuDNN
官網(wǎng)下載安裝文件cudnn-8.0-linux-x64-v5.1.tgz
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
cd cudnn-8.0-linux-x64-v5.1
sudo cp ./include/cudnn.h /usr/local/cuda/include/
sudo cp ./lib64/libcudnn* /usr/local/cuda/lib64/
sudo ln -s libcudnn.so libcudnn.so
sudo ln -s libcudnn.so.5 libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5.1.10
sudo ln -s libcudnn_static.a libcudnn_static.a
將/usr/local/cuda添加到/etc/ld.so.conf中,執(zhí)行sudo ldconfig
PS:CuDNN是專門針對(duì)深度學(xué)習(xí)框架設(shè)計(jì)的一套GPU計(jì)算加速方案,支持的Deep Learning框架包括TensorFlow、Caffe、Torch、MXNet等。安裝CuDNN的基本原理是把頭文件cudnn.h添加到系統(tǒng)能找到的include文件夾里,把lib文件添加到系統(tǒng)能找到的lib文件夾里。
9、Anaconda安裝
Anaconda整合了常用的python科學(xué)計(jì)算包,包括numpy、scipy、matplotlib等等。
官網(wǎng)http://continuum.io/downloads 下載安裝文件,注意選擇python版本對(duì)應(yīng)的安裝文件
bash Anaconda-x.x.x-linux-x86_64.sh,選擇相應(yīng)的目錄進(jìn)行安裝
在詢問(wèn)是否把a(bǔ)naconda的bin添加到用戶的環(huán)境變量中時(shí),選擇yes
source ~/.bashrc,使添加到.bashrc中的環(huán)境變量生效
conda list,可查看安裝了哪些包
conda update conda
conda install accelerate
conda install iopro,安裝其他的包
conda update matplotlib,更新安裝的包
conda install numpy=2.1.0
conda update numpy=2.1.0,安裝和更新指定版本的包
conda update numpy --no-update-dependencies,默認(rèn)conda總是同時(shí)更新和包有關(guān)聯(lián)的其他包(等價(jià)于--update-dependencies),--no-update-dependencies讓conda不更新相關(guān)聯(lián)的包
conda update --channel https://xxx.xxx.xxx.xxx/numpy.xxx, 來(lái)指定從哪個(gè)地址下載
conda install -c spyder-ide spyder=3.0.0,加-c表示從http://anaconda.org 下載資源包
下載或更新中間出錯(cuò)時(shí),手動(dòng)下載放到/Anaconda/pkgs里面,再重新更新。如果卡機(jī),shell重新打開后,conda clean --lock,再重新運(yùn)行安裝或更新命令。
10、TensorFlow安裝
官網(wǎng)下載安裝文件tensorflow-xxx.xxx.xxx.whl, 根據(jù)需求選擇CPU或GPU的版本。
pip install tensorflow-xxx.xxx.xxx.whl
安裝完成后,python進(jìn)入python環(huán)境
import tensorflow as tf
tf.version,查看安裝的tensorflow版本
tf.path,查看tensorflow的安裝目錄
tf.Session(),查看CUDA、CuDNN是否安裝正常
常見安裝錯(cuò)誤記錄:
1)安裝CUDA后,輸入nvcc --version出現(xiàn)錯(cuò)誤,則
sudo apt-get install nvidia-cuda-toolkit
2)安裝完Anaconda后,輸入conda,出現(xiàn)conda: command not found的錯(cuò)誤,則
要把a(bǔ)naconda的PATH添加到.bashrc中,并且要source ~/.bashrc,即讓添加的PATH即時(shí)生效。
3)出現(xiàn)“Import Error: libcublas.so.8.0: cannot open shared object file: No such file or directory”錯(cuò)誤的時(shí)候,解決辦法是將cuda-8.0下的一些文件復(fù)制到/usr/local/lib文件夾下:
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo ldconfig
4)出現(xiàn)“Import Error: libcufft.so.8.0: cannot open shared object file: No such file or directory”錯(cuò)誤的時(shí)候,解決辦法是將cuda-8.0下的一些文件復(fù)制到/usr/local/lib文件夾下:
sudo cp /usr/local/cuda-8.0/lib64/libcufft.so.8.0 /usr/local/lib/libcufft.so.8.0 && sudo ldconfig
sudo ldconfig
5)出現(xiàn)“ImportError: /home/xxx/anaconda2/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: cuDevicePrimaryCtxRetain”錯(cuò)誤的時(shí)候,則
在安裝CUDA時(shí),
Do you want to run nvidia-xconfig?
This will update the system X configuration file so that the NVIDIA X driver is used. The pre-existing X configuration file will be backed up. This option should not be used on systems that require a custom X configuration, such as systems with multiple GPU vendors.
(y)es/(n)o/(q)uit [ default is no ]: no
這里要選no
sudo vi /etc/profile添加:
export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
source /etc/profile
sudo ldconfig
6)出現(xiàn)“ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory”錯(cuò)誤的時(shí)候,解決辦法是安裝cudnn-8.0的v5版本:
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
cd cudnn-8.0-linux-x64-v5.1
sudo cp ./include/cudnn.h /usr/local/cuda/include/
sudo cp ./lib64/libcudnn* /usr/local/cuda/lib64/
sudo ln -s libcudnn.so libcudnn.so
sudo ln -s libcudnn.so.5 libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5.1.10
sudo ln -s libcudnn_static.a libcudnn_static.a
將/usr/local/cuda添加到/etc/ld.so.conf中,執(zhí)行sudo ldconfig。
如果是文件權(quán)限(ls -al)的問(wèn)題,則要先刪除軟連接:
sudo rm -rf libcudnn.so libcudnn.so.5.1.10
修改文件權(quán)限,重新建立軟連接:
sudo chmod u=rwx, g=rx, o=rx libcudnn.so.5.1.10
sudo ln -s xxx xxx
7)出現(xiàn)“
modprobe: ERROR: could not insert 'nvidia_340_uvm': Invalid argument
xxx: E tensorflow/stream_executor/cuda/cuda_driver.cc:405] failed call to cuInit: CUDA_ERROR_UNKNOWN
...
xxx: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189]libcuda reported version is: 375.26.0
...”錯(cuò)誤的時(shí)候,則
原因是有兩個(gè)drivers,340和375,而用340并不兼容,所以卸載掉340。辦法如下:
sudo apt-get remove nvidia-340
8)出現(xiàn)“Tensorflow ValueError: Tried to convert 'input' to a tensor and failed. Error: None values not supported.”錯(cuò)誤的時(shí)候,則
是網(wǎng)絡(luò)模型中定義的變量,在Forward-FeedBack里卻沒有,所以沒有求導(dǎo)的結(jié)果,或者各個(gè)GPU上的變量長(zhǎng)度不一致,導(dǎo)致有些變量沒有求導(dǎo)的結(jié)果。