GTX 1070 +CUDA 8.0 +cuDNN 5.1 + TensorFlow +Ubuntu 16.04 雙硬碟安裝記錄

由於實驗室的伺服器沒有顯卡,就只有在自己的電腦上面裝TensorFlow了

截止 2016年9月28日,TensorFlow的pip等安裝版本還沒有指出CUDA 8.0,所以只有採用源碼安裝。

安裝UBUNTU 16.04雙系統

Ubuntu的安裝方法採用了U盤安裝,網上有很多教程可以參考,如,安裝 Windows 10 和 Ubuntu 16.04 雙系統,需要注意的是,在選擇分區的時候,除去創建 分區和home 分區以外,還需要創建一個efi分區,並將引導選擇在這個分區上就可實現雙引導。安裝完成後修改軟體源到TUNA。

安裝 CUDA 8.0

主要參考了深度學習開發環境配置:Ubuntu1 6.04+Nvidia GTX 1080+CUDA 8.0 - 靈魂機器 - 知乎專欄這篇文章。

其中需要注意的是,在安裝NVIDA驅動的時候,命令應該為:

sudo add-apt-repository ppa:graphics-drivers/ppasudo apt-get -qy updatesudo apt-get -qy install nvidia-370sudo apt-get -qy install mesa-common-devsudo apt-get -qy install freeglut3-devsudo reboot

安裝cuDNN 5.1

在官網developer.nvidia.com/cu下載對應的cuDNN,我在安裝的時候選擇的是5.1

tar -xzvf cudnn-8.0-linux-x64-v5.1-tgzcd cudnnsudo cp lib* /usr/local/cuda/lib64/sudo cp cudnn.h /usr/local/cuda/include/

  • 注意選擇自己相應的的版本文件

安裝TensorFlow

花費最多時間和坑最多的就在安裝TensorFlow這一步了,由於偉大的牆的原因,如果你連接Github的速度較慢,建議掛上VPN或者代理。在安裝TensorFlow之前,我選擇了安裝Anaconda ,並使用了清華大學的conda和pipy軟體源最新方法可以參考:清華大學 TUNA 鏡像源

安裝Anaconda

Anaconda 是一個用於科學計算的 Python 發行版,支持 Linux, Mac, Windows, 包含了眾多流行的科學計算、數據分析的 Python 包。

Anaconda 安裝包可以到 Index of /anaconda/archive/ 下載。

要使用TUNA的鏡像源,需要如下命令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes

修改pip軟體源需要修改 ~/.pip/pip.conf(沒有就創建一個)文件,

[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple

通過源碼安裝TensorFlow

TensorFlow的安裝過程可以參考:谷歌全新開源人工智慧系統TensorFlow官方文檔中文版

英文版 :tensorflow/os_setup.md at master

由於更新較多,建議參考英文版本。採用源碼直接編譯安裝的方法安裝。

首先git源文件到本地(此步奏慢的傷心):

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

安裝JDK ,我安裝的時候開始安裝了OPEN-JDK 在後面有報錯,還是建議大家安裝標準的JDK

sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer

更新下各種依賴

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

然後通過Releases · bazel build/bazel · GitHub下載最新的文BAZEL件進行安裝

chmod +x bazel-version-installer-os.sh ./bazel-version-installer-os.sh --user

安裝Tensorflow的依耐項,由於本文已經安裝了Anaconda,所以採用了 pip 來更新

pip install --upgrade swig numpy wheel

配置編譯文件

進入下載的tensorflow文件夾

$ ./configurePlease specify the location of python. [Default is /usr/bin/python]:Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] NNo Google Cloud Platform support will be enabled for TensorFlowDo you wish to build TensorFlow with GPU support? [y/N] yGPU support will be enabled for TensorFlowPlease specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0Please specify the location where CUDA 7.5 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-8.0Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5.1.5Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-8.0]: /usr/local/cudaPlease specify a list of comma-separated Cuda compute capabilities you want to build with.You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.Please note that each additional compute capability significantly increases your build time and binary size.[Default is: "3.5,5.2"]: 6.1Setting up Cuda includeSetting up Cuda libSetting up Cuda binSetting up Cuda nvvmSetting up CUPTI includeSetting up CUPTI lib64Configuration finished

注意前面的幾個問題,如python庫的位置和CUDA版本等信息,需要和自己的配置匹配。然後進行編譯

# GPU版本$ bazel build -c opt --config=cuda --local_resources 2048,.5,1.0 //tensorflow/tools/pip_package:build_pip_package

  • 注意,由於我再這裡開始用官方的語言編譯導致多次報錯,所以採用了--local_resources 2048,.5,1.0 這一命令防止資源佔用過大,我不太懂後面參數的意義,估計第一個是內存,後面兩個沒懂就沒進行修改。這一編譯雖然慢很多,但至少能通過。

編譯完成之後,再使用

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg# The name of the .whl file will depend on your platform.$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.10.0-py2-none-any.whl

在安裝完成之後可以使用如下方法進行測試了

$ python...>>> import tensorflow as tf>>> hello = tf.constant(Hello, TensorFlow!)>>> sess = tf.Session()>>> print(sess.run(hello))Hello, TensorFlow!>>> a = tf.constant(10)>>> b = tf.constant(32)>>> print(sess.run(a + b))42>>>

或者

$ cd tensorflow/models/image/mnist$ python convolutional.pySuccessfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.Extracting data/train-images-idx3-ubyte.gzExtracting data/train-labels-idx1-ubyte.gzExtracting data/t10k-images-idx3-ubyte.gzExtracting data/t10k-labels-idx1-ubyte.gzInitialized!Epoch 0.00Minibatch loss: 12.054, learning rate: 0.010000Minibatch error: 90.6%Validation error: 84.6%Epoch 0.12Minibatch loss: 3.285, learning rate: 0.010000Minibatch error: 6.2%Validation error: 7.0%......

部分報錯參見官方文檔

部分參考:

Ubuntu 16.04安裝NVIDIA GTX 1070和TensorFlow指南

NVIDIA CuDNN 安裝說明

tensorflow/os_setup.md at master · tensorflow/tensorflow · GitHub

tensorflow-zh 官方文檔中文- 下載與安裝 · GitHub

Build Personal Deep Learning Rig: GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDnn 7 + Tensorflow/Mxnet/Caffe/Darknet


推薦閱讀:

計算機方向學生 MacBook Pro 128GiB 是否夠用?
現有的語音識別技術能否達到自動輸出嚴式國際音標的水平?
mxnet的並行計算為什麼這麼牛,是什麼原理?
resnet(殘差網路)的F(x)究竟長什麼樣子?

TAG:深度学习DeepLearning | TensorFlow | 机器学习 |