最近想試試從 Windows 工作機遠端連上 Linux 伺服器跑 Python,ssh 連上去用終端機跑當然沒問題,但許多學習資源是 Jupyter Notebook,要怎麼從 Windows 在 Linux 跑 Jupyter Notebook 呢?

啟用 RDP 或 VNC 走遠端桌面是無腦解法,但實務上可能因權限不足、無 GUI 環境或防火牆限制無法實現。Jupyter Notebook 本身是個網站,故在 Linux 跑 Jupyter Notebook 再用 SSH Tunneling 連上去也是個解法,只需開通 SSH Port 即可使用。

以下是我的安裝設定筆記。

我選擇在 Linux 上安裝 Anaconda,依據官方文件:Installing Anaconda on Linux,先在 Repo 網頁查最新版本是 2023-09-0,使用以下指令下載安裝:

sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
curl -O https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
bash ./Anaconda3-2023.09-0-Linux-x86_64.sh

安裝過程注意事項如下:

  1. 安裝程式會顯示版權同意書,按 Enter 開始,空白鍵下一頁,最後輸入 yes 按 Enter 表示同意。
  2. 預設會安裝在 /home/<username>/anaconda3,沒特殊考量的話就用預設路徑
  3. 下載安裝要花個幾分鐘:
  4. 最後步驟是設定每次登入後自動啟用 conda,輸入 yes 同意:

    註:若選擇不自動啟用 conda,手動指令如下:
    source ~/anaconda3/bin/activate
    conda init
    # 用以下指令啟用或關閉自動啟用 conda
    conda config --set auto_activate_base True
    conda config --set auto_activate_base False
    
  5. 重新登入或 source ~/.bashrc 啟動 conda

conda 啟用後,終端機提示指令前方會出現 (base) 顯示目前所在虛擬環境,執行 conda list 顯示目前安裝的套件及版本,代表安裝成功。

開始前先將 jupyter 升級到新版(不然一直有升級提示,頗煩),用 jupyter notebook 啟動 Notebook,Windows 端則另開一個 ssh 啟用 Tunneling,將 Linux 的 Jupyter Notebook TCP Port 導向到 Windows 來。

# 將 jupyter 升級到新版 (7)
conda update jupyter
# 在伺服器啟動 Jupyter Notebook
jupyter notebook --no-browser --port=9527
# 在本機執行 ssh 啟用 Tunneling 將遠端 9527 Port 導向本機 9527 Port
# 註:兩邊 Port 設一樣,開啟 Notebook URL 可直接用較方便
# 參數 -L local-port:remote-ip:remote-port、-N 不執行指令
ssh -N -L 9527:localhost:9527 <user>@<host>

上面有提到本機跟 Linux 的 Port 設一樣會比較方便,理由是瀏覽器開啟 Jupyter Notebook 需要帶一個 token 參數,在 Linux 跑 jupyter notebook 顯示訊息會有連結(下圖箭頭處),Port 相同的話可直接點選連結在 Windows 開啟。

這樣就能從本機在 Linux 伺服器跑 Python,充分利用伺服器的算力。

不過,身為 Python 新手,沒有 Copilot 的我恐怕剛出新手村就被史萊姆圍毆至死,還是研究一下怎麼用 VSCode 寫 Jupyter Notebook 吧。參考:Manage Jupyter Kernels in VS Code

用 Create: New Jupyter Notebook 建一本新筆記:

點右上側的 Select Kernel / Existing Jupyter Server... 輸入含 token 的 URL:

並取個好記的簡短名稱:

再選取 Linux 上的 Python Kernel (箭頭即為上一步輸入的名稱):

輸入函數註解,Copilot 手把手教你怎麼用 Python 實作出來,學習新程式語言就該這樣,讓 Copilot 帶你飛~~

最後實測印出 OS 資訊,證明程式是在 Linux 上執行無誤:

雖然整體操作的體驗遠不如本機 Jupyter Notebook 流暢,會損失一些功能(例如:無法逐行偵錯、不能使用 VSCode 終端介面),但此種做法方便從 Windows 調用 Linux 主機 CPU/GPU 算力或網路環境進行作業,仍不失為一個選項。

Notes about how to install Anaconda in Linux box and run Jupyter Notebook from Windows client.


Comments

# by Anonymous

https://github.com/linuxserver/docker-code-server 可以有終端機、偵錯 配合眾所皆知的 https://wiki.archlinux.org/title/Visual_Studio_Code 對於 Extensions support 的神解 和 Dockerfile 組上任何想要的 Python 、.NET 版本 再加上 Reverse Proxy 和密碼就可以輕鬆對全世界開放了 完美了嗎?不不不不不 設定同步只能使用微軟的方案或 Github https://code.visualstudio.com/docs/editor/settings-sync 真不好

# by Hank

Colab 使用 T4 GPU 執行階段,效能會不會比較好?

Post a comment