本文將介紹如何使用JupyterLab架設一個機器/深度學習平台,使在同一個網域下的其他機器能夠使用其資源,且要能選擇不同的虛擬環境。
一、前言
會想要有此架設的原因是,我有一台不錯算力的電腦可以做為AI模型訓練之用,但我平常喜歡用的電腦是Macbook,畢竟螢幕真的不錯! 因此想要使用Macbook撰寫程式碼,但計算進行在另一台Server。
要實現這樣的目標,目前我想的到的有四種方法
- 使用類似teamviewer這種遠端軟體,直接操作server
- 使用git+jenkins: 自己建立git server及jenkins,當我撰寫好程式碼並且push後,以jenkins觸發特定程式腳本,但因為訓練過程中,很有可能要來來回回觀察訓練過程,這樣雖然也是一個很正規的方法,但給我的感覺不彈性。
- SSH 遠端,也是很棒的方法,但不在此篇教學
- 使用JupyterLab,可以遠端連入並且接近在本機的操作體驗,前提是Server和其他機器(上圖的user)要在同一個路由器(或網域)下。
二、設備資訊
Server機器:
OS: Windows 11 專業版
CPU: i7–12700H
Memory: 16GB
GPU: RTX 3060 Laptop 6GB
User
Macbook Pro 14吋
三、實作
- 在Server的機器先安裝Anoconda,這邊不贅述
- 在Server的機器創建一個JupyterLab的環境,指令如下
conda create --name develop python=3.8
conda activate develop
conda install jupyterlab nb_conda_kernels
# nb_conda_kernels是必要安裝
3. 創建另外一個環境用於開發用
conda create --name work_env python=3.8
conda install --name work_env ipykernel
# 安裝ipykernel才能夠被jupyterlab認到該環境
# 其他所需的套件(例如numpy/pandas/pytorch等等)再依照自己的需求安裝
4. 啟動jupyter lab
conda activate develop
jupyter lab --ip 0.0.0.0 --port 8889
# port可以自行更改
實作過程可能會跳出,該電腦是否能夠在私人網路或是公用網路被搜尋到
類似以下的圖(因為沒截到圖,我網路上找來示意的)
記得要打開能讓同網域的人看到,不然其他台機器會無法連入JupyterLab server
5. 取消外部連入的token
完成步驟4以後,如果其他使用者有token的話,應該就可以使用別台機器正常連入了,但這樣有點不方便,所以把它取消掉
在命令提示字元輸入以下指令
jupyter notebook --generate-config
在C:\Users\使用者名稱\.jupyter下找到jupyter_notebook_config.py
打開jupyter_notebook_config.py後找到
# c.NotebookApp.token = '<generated>'
把註解取消或是在下方複製貼上一列,並且把token內容設成空值
儲存後重新啟動jupyter lab (步驟4. 啟動jupyter lab)
四、成果
先在本機查看jupyter server有沒有被正常啟動
開啟瀏覽器後,在網誌列輸入
確實可以選擇不同的虛擬環境了
接著在其他的電腦遠端連入看看
這時候不能直接使用localhost,要查詢jupyter server所在的機器ip為何,可以使用ipconfig查詢
比方說我的IPv4位址是192.168.0.5的話
那我在另外一台電腦(比方說Macbook)想要連入,就在網址列輸入
此時應該可以看到相同的畫面了!
這樣我們就可以使用macbook享受舒服的螢幕來撰寫程式,但使用高算力的機器了!
五、後記
其實很早就有想過要寫這一篇,但因為工作實在太忙了,一直拖拖拖,到現在才有時間整理出來,希望幫助到有相同需求的人。
如果這邊有寫錯的話,再麻煩不要吝嗇跟我說,我會再更新,感謝~
Reference: