本指南介紹如何在Ubuntu上安裝TensorFlow。這些安裝說明也可以用於其他Linux衍生版本,但是我們隻在Ubuntu 14.04(或更高版本)上充分測試過這些說明。
確定要安裝哪一種TensorFlow
您必須選擇以下類型的TensorFlow之一來安裝:
- TensorFlow僅支持CPU的版本。如果您的係統沒有NVIDIA®GPU,則必須安裝此版本。請注意,此版本的TensorFlow通常會更容易安裝(通常在5或10分鍾內可完成安裝)。因此,即使您有NVIDIA GPU,也可以先考慮安裝這個版本。
- TensorFlow支持GPU的版本。 TensorFlow程序通常在GPU上的運行速度明顯高於CPU。因此,如果您的係統具有滿足下文所示前提條件的NVIDIA®GPU,並且您需要運行性能敏感的應用程序,則應該安裝GPU版本。
運行支持GPU的TensorFlow對NVIDIA的要求
如果您要安裝具有GPU支持的TensorFlow,那麽在您的係統上必須安裝以下NVIDIA軟件:
- CUDA®工具包8.0。詳情請參閱NVIDIA的文檔。如NVIDIA文檔中所述,確保將相關的Cuda路徑名追加到
LD_LIBRARY_PATH
環境變量。 - 與CUDA Toolkit 8.0相關的NVIDIA驅動程序。
- cuDNN v6。詳情請參閱NVIDIA的文檔。如NVIDIA文檔中所述,確保創建
CUDA_HOME
環境變量。 - 具有CUDA Compute Capability 3.0或更高版本的GPU卡。參考NVIDIA文檔列出支持的GPU卡。
-
libcupti-dev庫,即NVIDIA CUDA Profile Tools界麵。此庫提供高級分析支持。要安裝此庫,執行以下命令:
$ sudo apt-get install libcupti-dev
如果您有更早版本的上述軟件包,請升級到指定的版本。如果無法升級,那麽您仍然可以運行支持GPU的TensorFlow,但需要執行以下操作時:
- 從源文件中安裝TensorFlow從源安裝TensorFlow。
- 至少安裝或升級到以下NVIDIA版本:
- CUDA工具包8.0或更高版本
- cuDNN v3以上
- 具有CUDA Compute Capability 3.0或更高版本的GPU卡。
確定如何安裝TensorFlow
您必須選擇安裝TensorFlow的方式。當前支持的選擇如下:
- virtualenv
- “native” pip
- Docker
- Anaconda
- 源碼安裝,見文檔
我們建議使用virtualenv安裝。
VIRTUALENV是與其他Python開發隔離的虛擬Python環境,不會影響同一台機器上的其他Python程序。在使用virtualenv的安裝過程中,需要安裝TensorFlow以及TensorFlow所需的所有軟件包。 要開始使用TensorFlow,您隻需要激活虛擬環境。總而言之,virtualenv為安裝和運行TensorFlow提供了一個安全可靠的機製。
本地pip直接在您的係統上安裝TensorFlow,而不需要經過任何容器係統。我們建議係統管理員使用本地點安裝,目的是使TensorFlow適用於多用戶係統上的所有人。由於本地pip安裝不在單獨的容器中隔離,因此pip安裝可能會幹擾係統上的其他Python-based安裝。但是,如果您了解pip和Python環境,則本機pip安裝通常隻需要一個命令。
Docker將TensorFlow安裝與機器上已經安裝的軟件包完全隔離。 Docker容器可以包含TensorFlow及其所有依賴項。請注意,Docker的映像文件(Image)可能相當大(數百MB)。如果您想將TensorFlow集成到已經使用Docker的較大應用程序體係結構中,則可以選擇Docker安裝。
在Anaconda中,您可以使用conda來創建一個虛擬環境。但是,在Anaconda內,我們建議您使用pip install
命令來安裝TensorFlow,而不是conda install
命令。
注意:conda包是社區支持的,沒有官方正式支持。也就是說,TensorFlow團隊既不測試也不維護conda包。使用該包需要自行承擔風險。
使用virtualenv進行安裝
使用virtualenv安裝TensFlow的步驟如下:
-
使用以下命令之一安裝pip和virtualenv:
$ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7 $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n
-
使用以下命令之一創建一個virtualenv環境:
$ virtualenv --system-site-packages targetDirectory # for Python 2.7 $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
其中
targetDirectory
指定了virtualenv樹的頂部。本指南假設targetDirectory
是~/tensorflow
,但您可以選擇任何其他目錄。 -
使用以下命令之一激活virtualenv環境:
$ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh $ source ~/tensorflow/bin/activate.csh # csh or tcsh
上述
source
命令會將您的命令行提示更改為以下內容:(tensorflow)$
-
確保安裝了pip≥8.1:
(tensorflow)$ easy_install -U pip
-
使用以下命令之一在激活的virtualenv環境中安裝TensorFlow:
(tensorflow)$ pip install --upgrade tensorflow # for Python 2.7 (tensorflow)$ pip3 install --upgrade tensorflow # for Python 3.n (tensorflow)$ pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU (tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
如果上述命令成功,請跳過步驟6.如果上述命令失敗,請執行步驟6。
-
(可選)如果步驟5失敗(通常是因為您調用低於8.1的pip版本),請通過執行以下命令在激活的virtualenv環境中安裝TensorFlow:
(tensorflow)$ pip install --upgrade tfBinaryURL # Python 2.7 (tensorflow)$ pip3 install --upgrade tfBinaryURL # Python 3.n
其中
tfBinaryURL
標識TensorFlow Python包的URL。tfBinaryURL
的值取決於操作係統,Python版本和GPU支持。在這裏為您的係統找到tfBinaryURL
的合適取值。例如,如果要安裝TensorFlow for Linux,支持Python 3.4和CPU-only,請在活動的virtualenv環境中執行以下命令安裝TensorFlow:(tensorflow)$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
如果遇到安裝問題,請參閱常見安裝問題。
下一步
安裝TensorFlow後,需要驗證安裝。
請注意,每次使用TensorFlow時,必須激活virtualenv環境。如果virtualenv環境當前未處於活動狀態,請調用以下命令之一:
$ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh $ source ~/tensorflow/bin/activate.csh # csh or tcsh
當virtualenv環境處於活動狀態時,可以從此shell運行TensorFlow程序。如果您的命令行提示變為以下內容,表示您的Tensorflow環境處於激活狀態:
(tensorflow)$
使用TensorFlow結束後,可以通過調用deactivate
功能停用環境,如下:
(tensorflow)$ deactivate
提示將恢複為默認提示符(由PS1
環境變量)。
卸載TensorFlow
要卸載TensorFlow,隻需刪除您創建的文件目錄樹。例如:
$ rm -r targetDirectory
用本地pip安裝
您可以通過pip安裝TensorFlow,這種安裝方式更簡潔。
注意:這個文檔setup.py的REQUIRED_PACKAGES部分列出了pip安裝Tensorflow需要安裝或升級的軟件包。
先決條件:Python和Pip
在Ubuntu上自帶了Python,可以通過python -V
命令查看Python版本:
- Python 2.7
- Python 3.3+
通常Ubuntu上也會有pip或pip3包管理器。可以使用pip -V
或pip3 -V
命令檢查pip或pip3的安裝。我們強烈建議使用8.1或更高版本的pip或pip3。如果未安裝版本8.1或更高版本,請執行以下命令,該命令將安裝或升級到最新的pip版本:
$ sudo apt-get install python-pip python-dev # for Python 2.7 $ sudo apt-get install python3-pip python3-dev # for Python 3.n
安裝TensorFlow
假如在Linux主機上已經安裝了必需的軟件,請執行以下步驟:
-
通過以下命令之一安裝Tensorflow:
$ pip install tensorflow # Python 2.7; CPU support (no GPU support) $ pip3 install tensorflow # Python 3.n; CPU support (no GPU support) $ pip install tensorflow-gpu # Python 2.7; GPU support $ pip3 install tensorflow-gpu # Python 3.n; GPU support
如果上述命令運行完畢,就可以驗證您的安裝。
-
(可選)如果步驟1失敗,請通過以下命令安裝最新版本的TensorFlow:
$ sudo pip install --upgrade tfBinaryURL # Python 2.7 $ sudo pip3 install --upgrade tfBinaryURL # Python 3.n
其中
tfBinaryURL
標識TensorFlow Python包的URL。適當的tfBinaryURL
取決於使用何種操作係統、Python版本以及是否要有GPU支持。例如,要安裝TensorFlow for Linux,支持Python 3.4和CPU-only,請執行以下命令:$ sudo pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
如果此步驟失敗,請參閱常見安裝問題。
下一步
安裝TensorFlow後,驗證您的安裝。
卸載TensorFlow
要卸載TensorFlow,請執行以下命令之一:
$ sudo pip uninstall tensorflow # for Python 2.7 $ sudo pip3 uninstall tensorflow # for Python 3.n
使用Docker進行安裝
通過Docker安裝TensorFlow需要以下步驟:
- 根據Docker文檔,在您的機器上安裝Docker。
- (可選)創建一個名為
docker
的Linux組,根據Docker文檔,允許啟動沒有sudo的容器。 (如果您不執行此步驟,則每次調用Docker時都必須使用sudo。) - 要安裝支持GPU的TensorFlow版本,您必須先安裝nvidia-docker,它存儲在github中。
- 啟動包含任意一個TensorFlow二進製圖像的Docker容器。
本節的其餘部分將介紹如何啟動Docker容器。
CPU-only
要啟動支持CPU-only的Docker容器(即,不支持GPU),請輸入以下格式的命令:
$ docker run -it -p hostPort:containerPort TensorFlowCPUImage
其中:
- -p hostPort:containerPort是可選的。如果您計劃從shell運行TensorFlow程序,請忽略此選項。如果您打算運行TensorFlow程序作為Jupyter Notebooks,請同時設置HOSTPORT和containerPort到8888。如果您想在容器內運行TensorBoard,請添加第二個
-p
標誌,將HOSTPORT和containerPort都設置為6006。 -
TensorFlowCPUImage是必須的。它標識了Docker容器,可指定以下值之一:
- gcr.io/tensorflow/tensorflow,這是TensorFlow CPU二進製映像。
- gcr.io/tensorflow/tensorflow:latest-devel,這是最新的TensorFlow CPU二進製映像和源代碼。
- gcr.io/tensorflow/tensorflow:version,它是TensorFlow CPU二進製映像的指定版本(例如,1.1.0rc1)。
- gcr.io/tensorflow/tensorflow:version-devel,它是TensorFlow GPU二進製圖像加上源代碼的指定版本(例如,1.1.0rc1)。
是Google容器注冊表。請注意,一些TensorFlow映像也可在這裏dockerhub獲取。
例如,以下命令在Docker容器中啟動最新的TensorFlow CPU二進製映像,您可以在其中以Shell方式運行TensorFlow程序:
$ docker run -it gcr.io/tensorflow/tensorflow bash
以下命令還在Docker容器中啟動最新的TensorFlow CPU二進製映像。但是,在Docker容器中,您可以在Jupyter筆記本中運行TensorFlow程序:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
在首次啟動的時候,Docker會下載TensorFlow二進製圖像。
GPU支持
在安裝具有GPU支持的TensorFlow之前,請確保您的係統滿足所有要求NVIDIA軟件要求。要啟動支持NVidia GPU的Docker容器,請輸入以下命令:
$ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage
其中:
- -p hostPort:containerPort是可選的。如果您計劃從shell運行TensorFlow程序,請忽略此選項。如果您打算運行TensorFlow程序作為Jupyter Notebooks,請將HOSTPORT和
containerPort
都設置為8888
。 - TensorFlowGPUImage用於指定Docker容器,必須指定以下值之一:
- gcr.io/tensorflow/tensorflow:latest-gpu,這是最新的TensorFlow GPU二進製映像。
- gcr.io/tensorflow/tensorflow:latest-devel-gpu,,這是最新的TensorFlow GPU二進製映像加源代碼。
- gcr.io/tensorflow/tensorflow:version-gpu,它是TensorFlow GPU二進製映像的指定版本(例如0.12.1)。
- gcr.io/tensorflow/tensorflow:version-devel-gpu,它是TensorFlow GPU二進製映像加上源代碼的指定版本(例如0.12.1)。
我們建議安裝其中latest
版本之一。例如,以下命令在Docker容器中啟動最新的TensorFlow GPU二進製映像,您可以在其中以Shell方式運行TensorFlow程序:
$ nvidia-docker run -it gcr.io/tensorflow/tensorflow:latest-gpu bash
以下命令也在Docker容器中啟動最新的TensorFlow GPU二進製映像。在這個Docker容器中,您可以在Jupyter Notebooks中運行TensorFlow程序:
$ nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu
以下命令安裝較舊的TensorFlow版本(0.12.1):
$ nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:0.12.1-gpu
首次啟動時,Docker會下載TensorFlow二進製圖像。有關詳細信息,請參閱TensorFlow Docker Readme。
下一步
接下來需要驗證您的安裝。
使用Anaconda安裝
在Anaconda環境中安裝TensorFlow的步驟:
-
按照Anaconda下載網站的說明,下載並安裝Anaconda。
-
創建“conda”的環境tensorflow,通過以下命令來運行Python版本:
$ conda create -n tensorflow
-
執行以下命令激活conda環境:
$ source activate tensorflow (tensorflow)$ # Your prompt should change
-
執行如下命令,在您的公共環境中安裝TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL
其中
tfBinaryURL
是TensorFlow Python包的URL。例如,以下命令安裝CPU-only版本的TensorFlow for Python 3.4:(tensorflow)$ pip install --ignore-installed --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
驗證您的安裝
要驗證您的TensorFlow安裝,請執行以下操作:
- 確保運行TensorFlow程序的環境已經ready。
- 運行一個簡短的TensorFlow程序。
準備環境
如果您使用native pip,virtualenv或Anaconda安裝,請執行以下操作:
- 啟動一個終端
- 如果您安裝了virtualenv或Anaconda,請激活您的容器。
- 如果您安裝了TensorFlow源代碼,請切換到任何目錄(除了TensorFlow源代碼目錄)。
如果您通過Docker安裝,請啟動Docker容器,從中可以運行bash。例如:
$ docker run -it gcr.io/tensorflow/tensorflow bash
運行一個簡短的TensorFlow程序
從你的shell調用python如下:
$ python
在python交互式shell中輸入以下短程序:
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
如果係統輸出以下內容,則可以開始編寫TensorFlow程序了:
Hello, TensorFlow!
如果您是TensorFlow新手,請參閱TensorFlow入門。
如果係統輸出錯誤消息而不是問候語,請參閱常見的安裝問題。
常見的安裝問題
我們依靠StackOverflow來記錄TensorFlow安裝問題及其補救措施。下表列出了一些常見安裝問題的Stack Overflow答案的鏈接。如果您遇到下表中未列出的錯誤消息或其他安裝問題,請在StackOverflow進行搜索。如果在Stack Overflow沒有找打答案,請在Stack Overflow上詢問一個有關此問題的新問題並指定tensorflow
標簽。
Stack Overflow鏈接 | 錯誤信息 |
---|---|
36159194 |
ImportError: libcudart.so.Version: cannot open shared object file: No such file or directory |
41991101 |
ImportError: libcudnn.Version: cannot open shared object file: No such file or directory |
36371137和這裏 |
libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A protocol message was rejected because it was too big (more than 67108864 bytes). To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h. |
35252888 |
Error importing tensorflow. Unless you are using bazel, you should not try to import tensorflow from its source directory; please exit the tensorflow source tree, and relaunch your python interpreter from there. |
33623453 |
IOError: [Errno 2] No such file or directory: '/tmp/pip-o6Tpui-build/setup.py' |
42006320 |
ImportError: Traceback (most recent call last): File ".../tensorflow/core/framework/graph_pb2.py", line 6, in from google.protobuf import descriptor as _descriptor ImportError: cannot import name 'descriptor' |
35190574 |
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed |
42009190 |
Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: ... [Errno 1] Operation not permitted: '/tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib' |
36933958 |
... Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: ... [Errno 1] Operation not permitted: '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/ Versions/2.7/Extras/lib/python/_markerlib' |
TensorFlow Python包的URL
一些安裝機製需要TensorFlow Python包的URL。您指定的值取決於三個因素:
- 操作係統
- Python版本
- 僅CPU與GPU支持
本節介紹Linux環境下安裝Tensorflow的相關取值。
Python 2.7
僅CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp27-none-linux_x86_64.whl
GPU支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp27-none-linux_x86_64.whl
請注意,GPU支持需要文檔NVIDIA要求運行TensorFlow支持GPU中描述的NVIDIA硬件和軟件。
Python 3.4
僅CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
GPU支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp34-cp34m-linux_x86_64.whl
請注意,GPU支持需要文檔NVIDIA要求運行TensorFlow支持GPU中描述的NVIDIA硬件和軟件。
Python 3.5
僅CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl
GPU支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl
請注意,GPU支持需要NVIDIA中描述的硬件和軟件NVIDIA要求運行TensorFlow支持GPU。
Python 3.6
僅CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp36-cp36m-linux_x86_64.whl
GPU支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl
請注意,GPU支持需要文檔NVIDIA要求運行TensorFlow支持GPU中描述的NVIDIA硬件和軟件。
Protobuf pip軟件包3.1
您可以跳過此部分,除非您遇到了與protobuf pip軟件包相關的問題。
注意:如果您的TensorFlow程序運行緩慢,您可能會遇到與protobuf pip軟件包相關的問題。
TensorFlow pip包依賴於protobuf pip軟件包版本3.1。從PyPI下載的protobuf pip軟件包(調用時)pip安裝protobuf)是一個Python-only庫,它包含可以運行的原始序列化/反序列化的Python實現,這個實現比C++實現慢10x-50x。 Protobuf還支持包含基於快速C++的原語解析的Python包的二進製擴展。此擴展在標準Python-only pip軟件包中不可用。我們為protobuf創建了一個包含二進製擴展名的自定義二進製pip包。要安裝自定義二進製protobuf pip包,請調用以下命令之一:
$ pip install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp27-none-linux_x86_64.whl
$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp35-none-linux_x86_64.whl
安裝此protobuf軟件包會覆蓋現有的protobuf軟件包。請注意,二進製pip包已經支持大於64MB的protobufs,應該能修複以下錯誤:
[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A protocol message was rejected because it was too big (more than 67108864 bytes). To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.