Ubuntu 18.04 nvidia driver 390.48 安裝 TensorFlow 1.12.0 和 PyTorch 1.0.0 詳細教程

最近要在我的臺式機上搭建TensorFlow和PyTorch運行環境,期間遇到了一些問題。這裏就把解決的過程記錄下來,同時也能夠做爲安裝上述環境的過程記錄。python

若是沒有遇到相似的問題,想直接從零安裝上述兩個包的運行環境的,請直接閱讀第三部分編程

1、硬件和環境配置:編程語言

1)操做系統:Ubuntu 18.04;測試

2)NVIDIA Driver Version :390.48;(可經過nvidia-smi命令查到)spa

3)GPU:GTX 1080; (可經過nvidia-smi命令查到)操作系統

4)已安裝CUDA Toolkit 9.1; (可經過nvcc --version命令查到)code

5)已安裝Anaconda3。blog

2、問題描述及解決過程:ip

1)在安裝Anaconda3後,建立名爲mydev的虛擬環境utf-8

conda create --name mydev

2)隨後

source activate mydev

啓用虛擬環境

3)安裝torch1.0.0和tensorflow1.12.0

conda install -c pytorch pytorch

conda install tensorflow-gpu

4)安裝完成後,檢測上述兩個包是否均可以使用GPU進行訓練

pytorch的測試代碼:

# -*- coding: utf-8 -*-
from __future__ import print_function import os import torch cuda = torch.cuda.is_available() if cuda: print('OK! CUDA device detected.') else : print('Error, CUDA device NOT detected.')

tensorflow的測試代碼:

import tensorflow as tf print(tf.test.is_gpu_available())

測試結果:

pytorch測試結果顯示:OK! CUDA device detected.

tensorflow測試結果顯示:False.

說明torch能夠檢測到GPU可是tensorflow沒檢測到GPU。

5)開始查錯。首先

source deactivate

退出當前虛擬環境

6)而後

source activate mydev

從新進入虛擬環境,

conda list

讓conda列出當前虛擬環境下安裝的全部包的信息,目的是查看包的版本

發現一個名爲cudatoolkit的包,其版本是9.2,是隨着tensorflow一併安裝到虛擬環境內的。看似沒有什麼問題。

7)在當前虛擬環境內進入python

python

在python內,敲入:

>>> import tensorflow as tf

>>> tf.__file__

>>> tf.__version__

來獲取tensorflow的安裝位置,咱們要檢查一下tensorflow到底安裝到了哪裏,以及版本對不對。

從python的輸出結果來看:

tensorflow的版本是1.10.0,並且位置也不對,被安裝到了~/.local/lib/python3.6/site-packages/...目錄下,而不是相似~/anaconda3/envs/mydev/...下。

一樣相似的問題也出如今了pytorch上。

忽然回想起來電腦剛裝完驅動和CUDA Toolkit的時候,可能用過pip安裝過tensorflow,並且當時沒有意識到tensorflow有CPU和GPU版本之分,就誤安裝了tensorflow1.10的CPU版,而pip安裝的包會優先於conda虛擬環境內安裝的包,因此都亂套了。

8)根據上面的發現,咱們要退出當前虛擬環境,

source deactivate

而後在主環境內

pip uninstall tensorflow

pip uninstall torch

卸載掉這兩個舊的包。

9)卸載以後,再

source activate mydev

進入虛擬環境,運行tensorflow的測試代碼,顯示

cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version

意思是CUDA驅動版本和CUDA運行庫版本不匹配,這是因爲以前所說的cudatoolkit版本是9.2,版本太高形成的。

10)因而根據出錯信息上網搜解決措施,發如今conda虛擬環境內,利用

conda update --all

可使conda意識到在當前虛擬環境內,包之間的版本依賴問題,敲入上述指令後,發現conda提出的解決方案中,將cudatoolkit降級爲9.0,pytorch降級爲0.4.1。

因而很欣慰的敲入上述指令並運行,發現tensorflow能夠發現GPU了。

11)第10步中咱們降級了pytorch,因此咱們要從新安裝pytorch爲1.0.0版:

conda install -c pytorch pytorch

12)完整操做後,咱們就有了tensorflow1.12.0和pytorch1.0.0了~

3、上述的環境配置全過程整理

1)首先,若是您的電腦以前利用pip命令曾經安裝過tensorflow或者pytorch,請用

pip uninstall tensorflow

pip uninstall torch

在pip中卸載掉這兩個包。

2)隨後按照以下步驟操做:

建立虛擬環境

conda create --name mydev

進入虛擬環境

source activate mydev

安裝tensorflow和pytorch

conda install -c pytorch pytorch

conda install tensorflow-gpu

讓conda再次整理包間的依賴

conda update --all

從新安裝pytorch

conda install -c pytorch pytorch

3)測試安裝好的兩個包是否均支持GPU,測試代碼已在上面給出。

4、總結

1)安裝tensorflow時,必定要寫tensorflow-gpu而不是tensorflow,不然安裝的是tensorflow的CPU版而不是GPU版。

2)理論上來講,pip和conda命令是衝突的。pip解決的是python內包之間的依賴問題,而conda的目標是管理任何編程語言之間的包的依賴問題。因此根據喜愛,之後儘可能使用兩者中的一個。

3)當包的狀態不對時,能夠利用packageName.__version__和packageName.__file__能夠查看包的版本和安裝位置。

相關文章
相關標籤/搜索