更糟糕的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通過執行以下命令安裝CUDA
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

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-pippython3-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正在執行!