Ubuntu 安裝 Python3.5, Tensorflow-gpu, jupyter
本文將會說明如何在Ubuntu上安裝tensorflow-gpu, python, jupyter!
剛好有個機會要建立一個環境,這個環境會是一台伺服器,上面運行Ubuntu。而其他人可以使用瀏覽器連上這台伺服器的jupyter並且使用Python和Tensorflow來完成顯卡運算需求。
本文的內容是基於已完成下列條件的教學:
(1).Nvidia 顯卡驅動
(2).Nvidia CUDA Toolkit
(3).Nvidia cuDNN
如果要從頭開始安裝可以看這篇文章:使用 Ubuntu 作為 深度學習/機器學習/人工智慧之 平台
下載Anaconda
1 |
[andy@Ubuntu ~]$ curl -O https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh |
安裝Anaconda
很重要!千萬不要用sudo安裝Anaconda!
1 |
[andy@Ubuntu ~]$ bash Anaconda3-5.1.0-Linux-x86_64.sh |
安裝過程會跳出幾個詢問對話:
-
Anaconda End User License Agreement
Do you accept the license terms? [yes|no]
[no] >>> yes -
Anaconda3 will now be installed into this location:
/home/andy/anaconda3
– Press ENTER to confirm the location
– Press CTRL-C to abort the installation
– Or specify a different location below
[/home/andy/anaconda3] >>> <<按Enter>> -
這步驟結束後安裝就算是完成了~
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/andy/.bashrc ? [yes|no]
[no] >>> yes -
這部會問你要不要安裝Microsoft VSCode,看自己是否有這需要吧!
Anaconda is partnered with Microsoft! Microsoft VSCode is a streamlined
code editor with support for development operations like debugging, task
running and version control.
To install Visual Studio Code, you will need:
– Administrator Privileges
– Internet connectivity
Visual Studio Code License: https://code.visualstudio.com/license
Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]
>>> no
讓bashrc變更生效
安裝過程中有修改~/.bashrc,因此要透過下列指令讓修改內容生效
1 |
[andy@Ubuntu ~]$ source ~/.bashrc |
可以用conda查看一下到底有哪些套件
1 |
[andy@Ubuntu ~]$ conda list |
建立conda虛擬環境
建立一個Python3.5的虛擬環境
–name:指定虛擬環境名稱
python=3.5:表示這個環境下的python裡面的版本要指定3.5
(同理,Tensorflow的版本也可以這樣指定)
ipykernel:這很重要!Step 5會用到。此套件是iPython 核心,用途是為jupyter創造獨立的環境。
1 |
[andy@Ubuntu ~]$ conda create --name projTF python=3.5 ipykernel |
啟動conda虛擬環境
source activate <虛擬環境名稱>
啟動虛擬環境,啟動虛擬環境之後可以看到終端機前方會出現虛擬環境名稱的前綴詞『(projTF)』!
1 2 |
[andy@Ubuntu ~]$ conda activate projTF (projTF) [andy@Ubuntu ~]$ |
安裝Kernel
為不同的環境安裝不同的Kernel。
使用jupyter執行時可以選擇Kernel,確保開發環境獨立性!
–user:使用者名稱,為空代表預設值,預設值是現在的使用者
–name:jupyter內部使用的名稱,目前我都設定成和虛擬環境名稱相同
–display-name:欲顯示在 jupyter功能列的『Kernel >> Change Kernel』 清單上的名稱
1 |
(projTF) [andy@Ubuntu ~]$ python -m ipykernel install --user --name projTF --display-name "Python3.5-(projTF)" |
如果你想要更了解 ipykernel,請參考:Kernels for Python 2 and 3
安裝Tensorflow-gpu
在conda虛擬環境下安裝tensorflow
用法就跟pip一樣!
1 |
(projTF) [andy@Ubuntu ~]$ conda install tensorflow-gpu |
安裝ipython、jupyter、notebook
1 |
(projTF) [andy@Ubuntu ~]$ conda install ipython jupyter notebook |
建立jupyter設定檔
本步驟和下一步驟很重要,這攸關於jupyter能否讓外來使用者連線使用jupyter!
(如果你安裝的jupyter只是在本機上使用的話,可以不用特別建立jupyter設定檔。可以跳過Step 8, Step 9!)
1 2 |
(projTF) [andy@Ubuntu ~]$ jupyter notebook --generate-config Writing default config to: /home/andy/.jupyter/jupyter_notebook_config.py |
編輯jupyter設定檔
1 |
(projTF) [andy@Ubuntu ~]$ vim ~/.jupyter/jupyter_notebook_config.py |
找到下列設定值,依照需求修改!
c.NotebookApp.allow_origin = ‘*’ #限制來源要求,『*』代表不限制
c.NotebookApp.ip = ‘localhost’ #jupyter預設值會將虛擬站台掛在localhost,可以改成IP或是Domain Name
1 2 3 4 5 |
c.NotebookApp.allow_origin = '*' #c.NotebookApp.ip只能設定一個喔! c.NotebookApp.ip = '140.xxx.xxx.xxx' c.NotebookApp.ip = 'www.brilliantcode.net' |
如何以密碼存取jupyter?
step 1-安裝notebook
在虛擬環境中安裝notebook
1 2 |
[andy@Ubuntu ~]$ source activate projTF (projTF) [andy@Ubuntu ~]$ conda install notebook |
或是直接用pip安裝notebook
1 |
[andy@Ubuntu ~]$ pip install notebook |
step 2-產生密碼Hash code
開啟python command-line
(不論是否處於虛擬環境下的方法都一樣)
1 |
(projTF) [andy@Ubuntu ~]$ python |
在python command-line輸入下列指令,Enter password:<請輸入欲設定的密碼>
將passwd( )回傳的Hash code複製起來!
1 2 3 4 5 6 |
>>> from notebook.auth import passwd >>> passwd() Enter password: Verify password: 'sha1:1xxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3' >>> |
step 3-編輯 jupyter 設定檔 c.NotebookApp.password
取消c.NotebookApp.password之前的註解 #,把Hash code貼在單引號之內。
1 |
c.NotebookApp.password = 'sha1:1xxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3' |
測試!
執行jupyter
1 2 3 4 5 6 7 |
(projTF) [andy@Ubuntu ~]$ jupyter notebook [I 19:17:06.924 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 19:17:07.451 NotebookApp] Serving notebooks from local directory: /home/andy/anaconda3/envs [I 19:17:07.452 NotebookApp] 0 active kernels [I 19:17:07.452 NotebookApp] The Jupyter Notebook is running at: [I 19:17:07.452 NotebookApp] http://xxx.xxx.xxx.xxx:8888/?token=58f5dba13c71964a93931cc3f3ae24e4747a97504fae5526 [I 19:17:07.452 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). |
如果選擇使用密碼登入jupyter,上述第6行 jupyter給予的網址就不會包含“token”的參數。會長得像下列這樣:
http://xxx.xxx.xxx.xxx:8888/
開啟瀏覽器
如果你不用密碼驗證,就可以複製jupyter生成的 網址 和 token:http://xxx.xxx.xxx.xxx:8888/?token=58f5dba13c71964a93931cc3f3ae24e4747a97504fae5526
接著,來測試Tensorflow在jupyter上執行!
建立新的jupyter Notebook檔案,選擇正確的Kernel!
tf.device(‘/gpu:0′):這是用GPU計算;
若電腦是用CPU可以將這段改成這樣:tf.device(‘/cpu:0′)
1 2 3 4 5 6 7 8 |
import tensorflow as tf with tf.device('/gpu:0'): a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') c = tf.matmul(a, b) with tf.Session() as sess: print (sess.run(c)) |
很不幸地,如果出這個錯誤:No module named tensorflow.
確認一下,現在這個jupyter notebook所使用的Kernel是不是當初建立的環境。
如果都沒問題,但還是出現這樣的錯誤,可以下這個指令看看有沒有辦法改善!
1 |
(projTF) [andy@Ubuntu ~]$ ipython kernelspec install-self --user |