原始碼安裝l CUDA 10.0, cuDNN 7.3 and build TensorFlow (GPU) from source on Ubuntu 18.04
更糟糕的CUDA 10.0和cuDNN 7.3版本我真的很想在我新建的機器上試用它。問題是pip包TensorFlow 1.11rc不支援最新的CUDA版本,我需要從原始碼構建它。整個過程對我來說相當痛苦,最後我完成了它後,我決定再次完成所有步驟並在空的Ubuntu機器上從頭開始設定。
我的出發點是配備i5-8600 CPU 3.10GHz,16GB DDR4,GTX 1080,剛剛安裝Ubutnu 18.04 LTS的機器,我們將:
1。安裝CUDA 10 + cuDNN 7.3 + NCCL 2.3.5
2.安裝Bazel 0.17。 2
3.構建和安裝TensorFlow 1.11rc
在您的情況下,軟體包版本可能更新,但假設整體步驟將保持不變。
1.安裝CUDA 10.0 + cuDNN 7.3 + NCCL 2.3.5
1.1安裝CUDA 10.0
在NVIDIA網站上可以找到很好的安裝指南。但以下是我的空機器所需的步驟
1.1.1安裝gcc:sudo apt-get install gcc
1.1.2 下載包。對我來說是Linux / x86_64 / Ubuntu / 18.04 / deb(本地)
1.1.3通過執行以下命令安裝CUDAsudo 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
1.1.4安裝完成後,通過在檔案末尾執行nano ~/.bashrc
新增 export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
將以下行新增到bashrc來新增PATH變數。儲存並退出。
1.1.5檢查驅動程式版本和CUDA工具包以確保一切順利cat /proc/driver/nvidia/version
nvcc -V
1.1.6您可能還想構建CUDA示例並執行它。這需要一段時間。為此,您需要跳轉到CUDA示例目錄。對我來說,它是/usr/local/cuda-10.0/samples並執行 sudo make
之後去構建源
/usr/local/cuda-10.0/samples/bin/x86_64/linux/release
並執行 ./deviceQuery
和 ./bandwidthTest
。我的結果如下:
./deviceQuery results
./bandwidthTest results
測試後隨意取出內建樣品。
1.2安裝cuDNN 7.3
要下載cuDNN,請在developer.NVIDIA.com上登入/註冊。如果需要,下載Release,Dev版本和示例。
使用deb檔案在資料夾中執行以下命令:sudo dpkg -i libcudnn7_7.3.0.29–1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.3.0.29–1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.3.0.29–1+cuda10.0_amd64.deb
安裝完成。讓我們按照說明進行驗證或執行:cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
如果正確安裝了cuDNN,您將看到一條訊息:測試通過
隨意從HOME / cudnn_samples_v7中刪除複製的檔案
1.3安裝NCCL 2.3.5
NCCL用於同時處理多個GPU上的計算。如果您將使用單個GPU,則可以跳過此步驟。否則,下載網路安裝程式並執行就是這樣。我們轉到Bazel安裝。sudo dpkg -i nccl-repo-<version>.deb
sudo apt install libnccl2 libnccl-dev
2安裝Bazel 0.17.2
Bazel是一種用於TensorFlow建築的工具。其主頁包含多種安裝方式。對我來說,首選的是使用ATL儲存庫。首先請確保您有捲曲並安裝Bazel使用sudo apt install curl
sudo apt-get install openjdk-8-jdk
echo “deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8” | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install bazel
要驗證bazel安裝是否已完成,請使用bazel版本。您可能也會看到很少的警告。那沒問題。
bazel版本的結果
3.構建TensorFlow
TensorFlow頁面上有很好的分步指南。它的概括如下:
3.1準備。
3.1.1安裝python3-distutils pip #或我建議使用虛擬環境構建TensorFlow。有多種方法可以做到這一點。我的首選是使用PyCharm作為venv管理員sudo apt-get install python3-distutils
sudo apt install python-dev python-pip
python3-dev python3-pip
3.1.2啟用虛擬環境並執行以下命令:pip install -U pip six numpy wheel mock
pip install -U keras_applications==1.0.5 — no-deps
pip install -U keras_preprocessing==1.0.3 — no-deps
3.2下載和構建。
3.2.1下載原始碼。我克隆了git倉庫。如果您尚未安裝git,請執行sudo apt install git
After clone clone git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
3.2.2用bazel測試。bazel test -c opt — //tensorflow/… -//tensorflow/compiler/… -//tensorflow/contrib/lite/…
好吧,它在我的機器上處理了大約一個小時。因此,我有大約60個測試結果失敗,但它不會影響構建過程。
3.2.3執行./configure配置TensorFlow構建。
在我的情況下,我使用預設值,除了以下問題:
Hadoop檔案系統支援 - 沒有
Apache Kafka平臺支援 - 沒有
CUDA支援 - YES
CUDA版本 - 10.0
cuDNN版本 - 7.3
NCCL - 1.3
您可能想知道為什麼NCCL版本不是2.3。好吧,我已經嘗試過但是NCCL版本的預設路徑與構建期間預期的路徑不同。它需要手動將nccl.h和libnccl.so.2複製到所需的路徑。由於我沒有使用多個GPU,因此我將1.3版本自動安裝到預期的目錄中。
3.2.4構建並安裝TensorFlow。執行 ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
準備好自己娛樂一小時,同時構建過程正在進行中。因此,pip包將放在/ tmp / tensorflow_pkg中。
我們差不多完成了 - 從你的venv跑出來享受pip install /tmp/tensorflow_pkg/tensorflow-version-cp27-cp27mu-linux_x86_64.whl
這就對了。支援GPU的TensorFlow正在執行!