Fields 在昨天學會了用 Jupyter Notebook 編寫 Python 程式。對他要開始練習機器學習所需的數學函數已經有相當助益,但是當他開始要量測採用 GPU 與只用 CPU 兩者速率差異時,他覺得到處要寫起始與結束時間的間隔程式碼很是麻煩,最後他查到有插件可以安裝,這樣在 Jupyter Notebook 的每個 Code Cell 在每次執行時會在下方紀錄『執行結束時間』『費時多長』 。他請大家執行:
py36 #這是前天做的 alias,啟動 於conda 建立的環境 py36
在 py36 這環境下安裝 Jupyter 關於Code Cell執行計時的擴展
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime
只要安裝一次,後續一樣執行
jupyter notebook --port 8588 --ip 0.0.0.0 \
--NotebookApp.contents_manager_class='notedown.NotedownContentsManager'
比較可惜的是當程式執行結束,按下 『CTRL+S』來保存這個帶有執行時間的 iPython Notebook後關掉,然後再打開時,這些時間資訊會消失掉。如果這資訊是後續文件重要的資訊,必須手動 Copy & Paste 在適當的地方。 Fields 是這樣做的,在 Code Cell 添加註解『#』:
另外他也發現 jupyter 指令後面所需要輸入的參數可以用設定檔取代,
jupyter notebook --generate-config #產生需要的設定檔模板
nano ~/.jupyter/jupyter_notebook_config.py #放在 home的子目錄『.jupyter』下 ,名為 jupyter_notebook_config.py
裡面已經有密密麻麻的設定參數
#追加下面一行,讓 Notedown 來支援 Markdown 格式
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
#更改 #c.NotebookApp.port = 8888
c.NotebookApp.port = 8xyz #預設8888,如與其他軟體或其他用戶發生衝突,需要改為其他數字
#更改 #c.NotebookApp.ip = 'localhost' 為
c.NotebookApp.ip = '0.0.0.0' #允許從 Server 以外的IP(機器)連上來
c.NotebookApp.allow_root = True #於Docker 環境下,允許 root身份啟動
另外他也覺得每次要從Server Copy & Paste 運行Jupyter時產生的又臭又長的 Token 到 Browser端實在很麻煩,所以下這個指令:
jupyter notebook password #要求輸入新密碼,執行這一次即可,後續就不用再執行
jupyter notebook #啟動 Jupyter Server,不用再帶之前長長的參數。然後到 Browser 輸入網址後,出現要輸入密碼的畫面,後面作業完全一樣。
延續 【UP, Scrum 與 AI專案】 他們七位形成 Scrum 的開發團隊彼此互助,Fields 短短三天內學會了基本的 Ubuntu Server 操作使用,Python Conda 建造自己所需環境,同時也會用 Jupyter Notebook 來開啟別人發表於 github 的範例。受益良多下,他現在還可以有一點點小貢獻回饋。但必須趕快加油追趕他負責的深度學習數學相關進度, 才不會丟臉。
專案緣起記錄在 【UP, Scrum 與 AI專案】