RTX 2070 同樣可以在 ubuntu 16.04 + cuda 9.0中使用。Ubuntu18.04可能只支持cuda10.0,在跑開源代碼時可能會報一些奇怪的錯誤,所以建議大家配置 ubuntu16.04 + cuda 9.0。下文還是以ubuntu18.04 + cuda 10.0為例。ubuntu16.04 + cuda 9.0的配置方法大同小異。
如果之前安裝的是cuda9.0可以直接用pip安裝Tensorflow-GPU,只需要安裝Anaconda,virtualenv, CUDA, cuDNN, 之后pip安裝tensorflow-gpu;
如果安裝的其他版本的CUDA,需要用源碼安裝,需要將下面的1,2,3,4,(5可選),之后用源碼安裝tensorflow-gpu, 並在configure時,根據自己的安裝1,2,3,4,5的安裝版本等情況自行調整配置選項。
雖然CUDA官網中沒有RTX20系列GPU所對應的版本,但是CUDA 10.0 支持Ubuntu18.04 + GPU GEFORCE RTX 2070。為了方便之后學習研究,需要配置:
- Anaconda3 5.2.0
- CUDA 10.0
- cuDNN 7.4.1
- Bazel 0.17
- TensorRT 5
- Tensorflow-gpu
(以下為本人配置方法,由於配置過程中有過錯誤並重試等情況,以下內容如有錯誤還請指正~)
(上面列出的各版本都是支持ubuntu18.04 和 RTX 2070的,大家也可以直接參照以上列表,自行安裝~)
(安裝NVIDIA驅動的方法參考:https://blog.csdn.net/ghw15221836342/article/details/79571559 方法一中,把390替換為410即為RTX 2070 對應版本。)
----------------------------------------------------------------------------------
Ubuntu 18 安裝Anaconda3 - 5.2.0
因為tensorflow支持python3.4, 3.5, 3.6,可能還未支持python3.7(python目前最高版本3.7.1 與anaconda3 對應最高python版本3.7.0),為了方便起見,選擇安裝Anaconda3 - 5.2.0,其對應的python版本為3.6.4. 安裝了Anaconda之后,不需要再單獨安裝python及其各種庫了。
anaconda各版本的archive:
https://repo.anaconda.com/archive/
選擇下載 Anaconda3-5.2.0-Linux-x86_64.sh
之后到下載目錄,
bash Anaconda3-5.2.0-Linux-x86_64.sh
可以通過查看
python --version
顯示
Python 3.6.5 :: Anaconda, Inc.
表示安裝成功。
查看pip版本:
$ pip --version pip 10.0.1 from /home/lsy/anaconda3/lib/python3.6/site-packages/pip (python 3.6)
--------------(若完成以上,則無需進行下面的安裝python的操作了)--------------------------------------------
Ubuntu 18 安裝 python 3.6
sudo add-apt-repository ppa:jonathonf/python-3.6
Ubuntu 18 安裝 python3.7.1
安裝過程參考:
https://blog.csdn.net/jaket5219999/article/details/80894517
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz && \ tar -xvf Python-3.7.1.tar.xz && \ cd Python-3.7.1 && \ ./configure && make && sudo make altinstall
從官網下載https://www.python.org/downloads/release/python-370/
解壓並打開指定目錄
./configure && make && sudo make altinstall
報錯 zipimport.ZipImportError: can‘t decompress data; zlib not available
解決方法:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev
python2,python3版本切換
# 實現 python 鏈接 python3.6 rm /usr/bin/python ln -s /usr/bin/python3.6 /usr/bin/python # 實現 python2 鏈接 Python2.7 rm /usr/bin/python2 ln -s /usr/bin/python2.7 /usr/bin/python2 # 創建 alias alias python='/usr/bin/python3.6' ~/.bash_aliases
pip安裝
sudo apt-get install python3-pip
這里要用python3,否則匹配的是默認的python2。
--------------------------------------------------------------------------------------------------------------------------------
CUDA 10.0
參考:
1. 下載CUDA Toolkit : Linux / x86_64 / Ubuntu / 18.04 /deb (local)
https://developer.nvidia.com/cuda-downloads
2. 安裝
sudo dpkg -i cuda-repo-ubuntu1804–10–0-local-10.0.130–410.48_1.0–1_amd64.deb sudo apt-key add /var/cuda-repo-10–0-local-10.0.130–410.48/7fa2af80.pub sudo apt-get update sudo apt-get install cuda
3. 添加環境變量
nano ~/.bashrc
末行添加並保存退出。
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
4. 檢查驅動版本和CUDA toolkit
cat /proc/driver/nvidia/version nvcc -V
5. (Optional) Build CUDA samples and run it.
cd /usr/local/cuda-10.0/samples sudo make
這需要等一段時間。完成后,可以進入資源中,執行命令查看結果。
cd /usr/local/cuda-10.0/samples/bin/x86_64/linux/release ./deviceQuery ./bandwidthTest
------------------------------------------------------------------
cuDNN v7.4.1 for CUDA 10.0
https://developer.nvidia.com/rdp/cudnn-download
(下載前需要在NVIDIA注冊賬號:https://developer.nvidia.com/)
2. 解壓下載好的文件,解壓后cuDNN的文件夾名稱為cuda
3. 將cuDNN內容復制到CUDA安裝文件中,即將cuDNN解壓后的cuda文件中內容復制到/usr/local的CUDA中。
$ 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*
(該方法參考:https://blog.csdn.net/u010801439/article/details/80483036)
------------------------------------------------------------------------
NCCL v2.3.7
只有需要用源碼安裝tensorflow時才需要裝這個哦~用pip的可以跳過
安裝方法參考:https://blog.csdn.net/zuyuhuo6777/article/details/81450258
1. 下載
https://developer.nvidia.com/nccl/nccl-download
選擇Local installers (x86)中的Local installer for Ubuntu 18.04
2. 安裝
進入下載目錄,安裝本地NCCL存儲庫,更新APY數據庫,安裝libnccl2與APT打包。此外,若需要使用NCCL編譯應用程序,則可以安裝libnccl-dev的包裹。
$ sudo dpkg -i nccl-repo-ubuntu1804-2.3.7-ga-cuda10.0_1-1_amd64.deb $ sudo apt update $ sudo apt install libnccl2 libnccl-dev
------------------------------------------------------------------------
方便起見,請直接下載Bazel 0.17
(早先安裝了0.19,--config == cuda 並不支持0.17以上版本,不清楚使用0.19對后續步驟有無影響,所以,卸載了0.19,重新安裝了0.17。卸載方法:whereis bazel,找到bazel目錄,直接rm -rf <path>即可。)
Bazel 0.19.2
只有需要用源碼安裝tensorflow時才需要裝這個哦~用pip的可以跳過
官網提供了多種安裝方法,
https://docs.bazel.build/versions/master/install-ubuntu.html#install-with-installer-ubuntu
以下使用了Installing using binary installer的方法。
1. 下載需要的包
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
2. 下載Bazel
https://github.com/bazelbuild/bazel/releases
選擇安裝了bazel-0.19.2-installer-linux-x86_64.sh
3. Run the installer
$ chmod +x bazel-<version>-installer-linux-x86_64.sh $ ./bazel-<version>-installer-linux-x86_64.sh --user
4. 設置環境
$ nano ~/.bashrc
末行添加並保存退出
export PATH="$PATH:$HOME/bin"
執行以生效:
$ source ~/.bashrc
5. 檢查是否安裝成功
$ bazel version
--------------------------------------------
TensotRT 5.0.2.6
只有需要用源碼安裝tensorflow時才需要裝這個哦~用pip的可以跳過。用源碼安裝,該項也可以不裝,看自己需求。如果安裝,在源碼編譯,configure時記得選擇和自己安裝匹配的選項哦~
for Ubuntu 1804 and CUDA 10.0
1. 下載
https://developer.nvidia.com/nvidia-tensorrt-5x-download
選擇了Debian and RPM Install Package:
TensorRT 5.0.2.6 GA for Ubuntu 1804 and CUDA 10.0 DEB local repo packages
2. 安裝,參考官方文檔:
https://docs.nvidia.com/deeplearning/sdk/tensorrt-install-guide/index.html#downloading
$ sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.0-trt5.0.2.6-ga-20181009_1-1_amd64.deb $ sudo apt-key add /var/nv-tensorrt-repo-cuda10.0-trt5.0.2.6-ga-20181009/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install tensorrt
之前Anaconda3 中python是3.6版本,下面直接寫python就好,不用改為python3.
$ sudo apt-get install python-libnvinfer-dev
安裝后顯示:
Setting up python-libnvinfer-dev (5.0.2-1+cuda10.0) ...
若計划通過tensorflow使用tensorRT
$ sudo apt-get install uff-converter-tf
安裝后顯示:
Setting up graphsurgeon-tf (5.0.2-1+cuda10.0) ... Setting up uff-converter-tf (5.0.2-1+cuda10.0) ...
3. 檢查我們的安裝結果:
$ dpkg -l | grep TensorRT ii graphsurgeon-tf 5.0.2-1+cuda10.0 amd64 GraphSurgeon for TensorRT package ii libnvinfer-dev 5.0.2-1+cuda10.0 amd64 TensorRT development libraries and headers ii libnvinfer-samples 5.0.2-1+cuda10.0 all TensorRT samples and documentation ii libnvinfer5 5.0.2-1+cuda10.0 amd64 TensorRT runtime libraries ii python-libnvinfer 5.0.2-1+cuda10.0 amd64 Python bindings for TensorRT ii python-libnvinfer-dev 5.0.2-1+cuda10.0 amd64 Python development package for TensorRT ii tensorrt 5.0.2.6-1+cuda10.0 amd64 Meta package of TensorRT ii uff-converter-tf 5.0.2-1+cuda10.0 amd64 UFF converter for TensorRT package
--------------------------------------------------------
Tensorflow
推薦兩種安裝方式:1.在docker中安裝;2. 在virtualenv中安裝。一般2用的多一些。
(1)docker中:
1. Docker的安裝:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04
2. Install nvidia-docker:
https://github.com/NVIDIA/nvidia-docker
3. Downloads TensorFlow release images to your machine:
$ docker pull tensorflow/tensorflow:latest-devel-gpu
(2)virtualenv中:
sudo apt update
sudo apt install python-dev python-pip
sudo pip install -U virtualenv # system-wide install
virtualenv --system-site-packages -p python3 ./venv
source ./venv/bin/activate
(venv) $ pip install --upgrade pip (venv) $ pip list
在(venv)中繼續安裝tensorflow.
(1) Installed by pip: 如果之前安裝的是cuda9.0可以直接用pip安裝,否則,需要用源碼安裝,見(2)
pip install tensorflow-gpu==1.12
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
Solution: add the following to .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/
(2) Else: Build from source
這里注意./configure時候,默認cuda版本是9.0,我們改為 10.0.
安裝完畢后可以退出venv:
(venv) $ deactivate # don't exit until you're done using TensorFlow
------------------------------------------------------------------------------
測試tensorflow-gpu在docker中是否能順利運行:
$ sudo docker run --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu \ > python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))" [sudo] password for lsy: Unable to find image 'tensorflow/tensorflow:latest-gpu' locally latest-gpu: Pulling from tensorflow/tensorflow 18d680d61657: Already exists 0addb6fece63: Already exists 78e58219b215: Already exists eb6959a66df2: Already exists e3eb30fe4844: Already exists 852c9b7a4425: Already exists 0a298bf31111: Already exists 4b34ad03a386: Pull complete ea4e8d636cf7: Pull complete e641906af026: Pull complete af41a77e326c: Pull complete 56234dc44f16: Pull complete 33999852f515: Pull complete 11679b84da5e: Pull complete 231eb8ba046b: Pull complete 7d894676fbc1: Pull complete Digest: sha256:847690afb29977920dbdbcf64a8669a2aaa0a202844fe80ea5cb524ede9f0a0b Status: Downloaded newer image for tensorflow/tensorflow:latest-gpu 2018-11-26 05:48:05.315151: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 2018-11-26 05:48:05.490068: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2018-11-26 05:48:05.490510: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: name: GeForce RTX 2070 major: 7 minor: 5 memoryClockRate(GHz): 1.725 pciBusID: 0000:01:00.0 totalMemory: 7.76GiB freeMemory: 7.09GiB 2018-11-26 05:48:05.490528: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0 2018-11-26 05:48:05.727215: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix: 2018-11-26 05:48:05.727251: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988] 0 2018-11-26 05:48:05.727257: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0: N 2018-11-26 05:48:05.727423: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6817 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2070, pci bus id: 0000:01:00.0, compute capability: 7.5) tf.Tensor(-568.0144, shape=(), dtype=float32)
---------------------------------------------------------
=======================================
[支付寶] 您願意送我一個小禮物嗎?O(∩_∩)O