部署你的遠端Jupyterlab機器學習伺服器

Qi Fong
6 min readJul 16, 2023

--

本文將介紹如何使用JupyterLab架設一個機器/深度學習平台,使在同一個網域下的其他機器能夠使用其資源,且要能選擇不同的虛擬環境。

一、前言

會想要有此架設的原因是,我有一台不錯算力的電腦可以做為AI模型訓練之用,但我平常喜歡用的電腦是Macbook,畢竟螢幕真的不錯! 因此想要使用Macbook撰寫程式碼,但計算進行在另一台Server。

要實現這樣的目標,目前我想的到的有四種方法

  1. 使用類似teamviewer這種遠端軟體,直接操作server
  2. 使用git+jenkins: 自己建立git server及jenkins,當我撰寫好程式碼並且push後,以jenkins觸發特定程式腳本,但因為訓練過程中,很有可能要來來回回觀察訓練過程,這樣雖然也是一個很正規的方法,但給我的感覺不彈性。
  3. SSH 遠端,也是很棒的方法,但不在此篇教學
  4. 使用JupyterLab,可以遠端連入並且接近在本機的操作體驗,前提是Server和其他機器(上圖的user)要在同一個路由器(或網域)下。

二、設備資訊

Server機器:

OS: Windows 11 專業版

CPU: i7–12700H

Memory: 16GB

GPU: RTX 3060 Laptop 6GB

User

Macbook Pro 14吋

三、實作

  1. 在Server的機器先安裝Anoconda,這邊不贅述
  2. 在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有沒有被正常啟動

開啟瀏覽器後,在網誌列輸入

http://localhost:8889/lab

確實可以選擇不同的虛擬環境了

接著在其他的電腦遠端連入看看

這時候不能直接使用localhost,要查詢jupyter server所在的機器ip為何,可以使用ipconfig查詢

比方說我的IPv4位址是192.168.0.5的話

那我在另外一台電腦(比方說Macbook)想要連入,就在網址列輸入

http://192.168.0.5:8889/lab

此時應該可以看到相同的畫面了!

這樣我們就可以使用macbook享受舒服的螢幕來撰寫程式,但使用高算力的機器了!

五、後記

其實很早就有想過要寫這一篇,但因為工作實在太忙了,一直拖拖拖,到現在才有時間整理出來,希望幫助到有相同需求的人。

如果這邊有寫錯的話,再麻煩不要吝嗇跟我說,我會再更新,感謝~

Reference:

--

--

Qi Fong
Qi Fong

No responses yet