首頁 > 軟體

Ubuntu環境下Anaconda安裝TensorFlow並設定Jupyter Notebook遠端存取

2020-06-16 16:56:17

  本文主要講解在Ubuntu系統中,如何在Anaconda下安裝TensorFlow以及設定Jupyter Notebook遠端存取的過程。

  在官方文件中提到,TensorFlow的安裝主要有以下五種形式:

  1. Pip安裝:這種安裝形式類似於安裝其他的Python安裝包。會影響到機器上當前的Python環境,可能會與已安裝的某些版本相衝突。
  2. Virtualenv安裝:將TensorFlow安裝在指定路徑下,與當前的Python環境相隔離。
  3. Anaconda安裝:以Anaconda為基礎安裝TensorFlow,和上面的形式相同,也與當前Python環境相隔離。在使用TensorFlow時不影響其他Python應用的使用。
  4. Docker安裝:在Docker中隔離安裝TensorFlow
  5. 從原始碼安裝:編譯原始碼生成TensorFlow的安裝whell檔案。

      在安裝過程中,嘗試了Pip安裝和Anaconda安裝兩種形式。其中Pip安裝過程比較簡單,按照官方文件中的步驟進行即可。接下來主要描述的是Anaconda安裝的過程。

一、Anaconda和TensorFlow環境

1、Anaconda安裝

  首先去本文最後的Anaconda官方下載地址下載Anaconda安裝檔案Anaconda2-4.2.0-Linux-x86_64.sh。

  下載完成後上傳到伺服器中,在檔案路徑下執行如下命令:

bash Anaconda2-4.2.0-Linux-x86_64.sh

  接下來按照提示設定一些安裝路徑等引數,Anaconda安裝完成後,會安裝很多Python中常用的package,比如ipython和jupyter等。

2、TensorFlow環境設定和切換

  安裝完成後,使用如下命令生成一個名為tensorflow的conda環境,根據python版本選擇正確的命令執行即可

# Python 2.7
$ conda create -n TensorFlow python=2.7

# Python 3.4
$ conda create -n TensorFlow python=3.4

# Python 3.5
$ conda create -n TensorFlow python=3.5

生成conda環境主要是可以自由切換tensorflow環境和普通python環境。

(1)進入TensorFlow環境
  使用如下命令進入TensorFlow環境:
source activate tensorflow
  此時介面如圖所示,可以看到,在這裡會將/usr/local/ml/anaconda2/envs/tensorflow/bin設定到PATH變數前,

(2)退出tensorflow環境

  使用如下命令可以從tensorflow環境中退出:
source deactivate
  結果如下,可以看到這兩種環境下python的執行路徑是不相同的
  

二、TensorFlow安裝

1、安裝

  在官方文件中介紹了在Anaconda中安裝TensorFlow有兩種方法,一種是使用conda安裝,另一種是使用pip安裝。在實際操作時發現由於網路原因,稍大一點的安裝包就會長時間卡住無響應。可以考慮將需要的安裝包下載後以local模式進行安裝,在操作中發現pip安裝可下載的資源比較多,而conda安裝資源比較難找,所以接下來以pip的方式進行安裝。
  在conda安裝時,可以看到TensorFlow需要依賴的package及版本如下:

  在pip安裝模式下,根據安裝過程的提升,將對應版本的安裝檔案從本文最末的Python安裝包下載地址中下載到本地。比如在此次安裝過程中,我手動下載了幾個比較大的安裝檔案,如下所示

pip install numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl
pip install protobuf-3.0.0-py2.py3-none-any.whl
pip install tensorflow-0.11.0rc0-cp27-none-linux_x86_64.whl

2、遇到的報錯

  安裝完成後,在tensorflow環境下執行範例程式碼時發現了如下的一個報錯

ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
...
Error importing tensorflow. Unless you are using bazel

  經排查發現是tensorflow安裝檔案下載錯誤導致的。我本想安裝的是CPU Only版本,而錯誤安裝了一個GPU enabled版本。
  

  有關該錯,還可以參考官方文件中的詳細描述

  重新安裝對應版本後錯誤消失。

3、驗證安裝是否正確

  官方文件中提供一段檢查tensorflow安裝是否正確的程式碼,如下所示

$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>

  執行結果如下所示:
  

  到這裡TensorFlow已經正確安裝,可以繼續進行後續學習了。
  但是考慮到TensorFlow安裝在虛擬機器中,使用不是很方便,接下來考慮設定一個jupyter notebook server服務可以在瀏覽器中遠端存取,更加方便的使用tensorflow。

4、檢視版本和安裝路徑

  檢視TensorFlow的版本:

>>> import tensorflow as tf
>>> tf.__version__
'0.11.0rc2'  檢視TensorFlow安裝路徑:

>>> tf.__path__
['/usr/local/ml/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow']

5、TensorBoard啟動和存取

  每次啟動TensorBoard時可以按照如下命令

進行啟動,需要用--logdir引數指定SummaryWriter的事件檔案寫出路徑。

tensorboard --logdir /usr/local/ml/anaconda2/envs/tensorflow/logs

  啟動後,輸出如下資訊,預設啟動埠號為6006,可以使用後面的幫助資訊檢視如何在啟動時指定其他埠。

Starting TensorBoard 29 on port 6006
(You can navigate to http://192.168.1.100:6006)

  頁面如下:
  

  更多啟動引數可以檢視tensorboard的幫助資訊

tensorboard -h

三、Jupyter Notebook遠端存取

  在TensorFlow官方文件中正確安裝TensorFlow後,還有一小部分文件描述在tensorflow環境下安裝IPython。如果完全按照官方文件的提升安裝所需元件後,是無法通過瀏覽器遠端使用TensorFlow的。需要在TensorFlow環境下手動安裝Jupyter Notebook並且設定其Server方式。

1、Jupyter安裝

  去Python安裝包下載地址中下載Jupyter安裝檔案,並按安裝過程中的依賴提示,下載並安裝Jupyter依賴的安裝包。

2、Jupyter Notebook Server設定

  Jupyter安裝完成後,需要進行以下一系列操作並設定好組態檔。設定完成後,建議在Chrome瀏覽器中遠端使用,由於瀏覽器原因遇到的報錯會在最後描述。
  參考Jupyter Notebook官方文件中的步驟就可以實現遠端存取的功能。
  
(1)生成組態檔

使用如下命令

jupyter notebook --generate-config  

會在~/.jupyter目錄下生成一個名為jupyter_notebook_config.py的組態檔

(2)準備設定的密碼
  如下所示,

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

  注意儲存上面的Out[2]中生成的內容

(3)生成pem和key檔案
  使用如下命令會在當前路徑下生成一個mykey.key和一個mycert.pem檔案,這兩個檔案會在後面的設定中使用到。下面的命令會生成有效期為365天的certificate檔案。

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

  
(4)設定組態檔

這裡主要設定第一步中的jupyter_notebook_config.py檔案。需要設定的選項如下:

c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
# Set ip to '*' to bind on all interfaces (ips) for the public server
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
c.NotebookApp.open_browser = False

# 指定埠號
c.NotebookApp.port = 8888  設定完成後,在TensorFlow環境下輸入jupyter notebook命令,在遠端中開啟Chrome瀏覽器,輸入https://ip:8888就可以遠端存取並使用TensorFLow了。

  最終效果如下:
  

注意事項:
  注意這裡最好使用Chrome瀏覽器,以免遇到莫名其妙的檔案。比如我在使用獵豹瀏覽器時在頁面上遇到了404 : Not Found的錯誤
  

  在後台輸出的紀錄檔中顯示

[W 08:33:55.116 NotebookApp] 404 GET

  換到Chrome瀏覽器後,問題消失。

主要參考和使用的資源網站:
1、TensorFlow官方文件
2、TensorFlow Github地址
3、jupyter遠端存取
4、Anaconda官方下載地址
5、Python安裝包下載地址

本文永久更新連結地址http://www.linuxidc.com/Linux/2018-01/150457.htm


IT145.com E-mail:sddin#qq.com