如何在GCP中架設keras環境(Ubuntu16.04、anaconda為例)與相關問題:

Step1. 架設Google cloud platform(GCP)環境,主要依據在medium上面的文章(系統選Ubuntu 16.04 LTS):
Complete Step by Step Guide of Keras Transfer Learning with GPU on Google Cloud Platform

⌦執得注意的是,實作後發現在該文章中的Step4(執行bash Anaconda3-4.0.0-Linux-x86_64.sh)之前要先安裝bzip2:
sudo apt-get install bzip2
否則將有如下錯誤:
tar (child): bzip2: Cannot exec: No such file or directory
訊息,導致安裝不完全。若已經先執行bash Anaconda3-4.0.0-Linux-x86_64.sh了,則不妨利用rm指令刪除剛才不完整安裝的anaconda3:
rm -rf ~/anaconda3
接著再依次安裝bzip2與anaconda3。

⌦安裝anaconda3的過程會出現:
Do you wish the installer to prepend the Anaconda install location to PATH in your /root/.bashrc ? [yes|no]
表示Anaconda安裝的路徑要不要加入bashrc中?
答要,則anaconda3這個路徑裡面的bin資料夾路徑就會被加入bashrc中(否則你必須手動export,將路徑設定至PATH內)。這個bin路徑含有conda指令的執行檔,創建虛擬環境時必須要用到這個指令,故必須回答yes或手動export,相關討論在此。下為回答yes後查看.bashrc的結果:
nano ~/.bashrc
可以發現在~/.bashrc中,最後面已經被加入了bin資料夾的位置。或利用指令查詢:
echo $PATH
或:
which conda

⌦使用到的指令說明:
wget: a non-interactive network retriever (下載檔案用)
bash: 執行某個sh腳本,例如bash Anaconda3-4.0.0-Linux-x86_64.sh

Step2. GCP環境架好後,便可以開始利用conda架設虛擬環境:
conda create –n yy python=3.5 pip
接著利用conda list列出該環境中的所有套件:
conda list

pip list
卻發現很多剛才沒有安裝的套件,雖然已經利用which pip確認過該pip隸屬於yy環境,本來理應只列出yy環境中的套件才是,但看起來pip還是多去檢查了系統中所安裝的套件而不是單只虛擬環境中的套件(相關討論Isolating conda environments from ~/.local):


改善方法為,修改虛擬環境中的site.py檔案。下為實作流程,首先確認site.py中ENABLE_USER_SITE變數:
conda create –n jinKeras python=3.5
conda activate jinKeras
python3 –m site 

若ENABLE_USER_SITE顯示為True則pip可能會連同系統一起檢查而不是只有jinKeras虛擬環境,因此接著找site的檔案路徑:
python3 –m site –help
並切換到該路徑修改site.py檔:
cd /home/YourEnvName/anaconda3/envs/jinKeras/lib/python3.5
nano site.py
將ENABLE_USER_SITE由True修改為False,如此再重新conda create環境後,利用conda list查看,就只會秀出該虛擬環境jinKeras中的套件而不會秀出系統中的套件



Step3. 安裝tensorflow, keras與jupyter套件:
利用下述指令安裝套件:
pip install tensorflow
pip install keras
pip install jupyter Notebook
接著進行jupyter的組態設定。首先利用函式passwd()產生hashed password,密碼須鍵入兩次,函式詳細說明可參考這邊:
python
from notebook.auth import passwd
passwd()
紅框內資訊待會用得著。接著產生Configuration file: 
jupyter notebook --generate-config
cd /home/YourEnvName/.jupyter/
並利用nano編輯:
nano ~/.jupyter/jupyter_notebook_config.py
接著在文件中鍵入如下,且剛才利用passwd()所產生的hashed碼則貼到c.NotebookApp.password中:
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 5000
c.NotebookApp.password = u'sha1:the hashed password generated by passwd()'
另外c.NotebookApp.open_browser = False,表示等等啟動jupyter時不預設用瀏覽器開啟。

接著便可開啟jupyter notebook:
jupyter notebook --port=5000
而若c.NotebookApp.open_browser = True則這邊指令需改為:
jupyter notebook --no-browser --port=5000
否則將會自動找尋你有安裝的browser去開啟,但Ubuntu這邊目前沒裝任何browser故會產生No web browser訊息如下:

啟動jupyter後接著回到自己的作業系統中,在瀏覽器中鍵入:
http://你的外部IP:5000
(外部IP的查詢方法則在GCP平台中compute engine中的VM執行個體:)

接著可以發現jupyter已經成功開啟,但會要求你輸入密碼:

密碼輸入後接著便可以開始使用.ipynb與keras囉:





留言

這個網誌中的熱門文章

[Android] TextView 換行

[Android]android Global variable 寫法

[Android] build the JAR file in Android Studio