# 如何在 CSIE Workstation 跑 notebook > Author: [name=B13902080 陳以哲] :::info 以下指令若包含角括號,請替換成自己喜歡的名字。例如: `/tmp2/<你的學號>`,就應該被換成 `/tmp2/b13902001` ::: ## 零、連線到工作站 在 vscode 下載 [Remote - SSH](https://marketplace.visualstudio.com/items/?itemName=ms-vscode-remote.remote-ssh) 套件。 接著打開你的終端機,用以下指令連線到工作站 ```shell ssh <你的學號>@meow1.csie.ntu.edu.tw ``` 其中可以把 `meow1` 換成另一台伺服器 `meow2`。 ## 一、準備目錄 因為家目錄空間有限,所以在 `/tmp2` 下創建自己的目錄 ```shell b13902080@meow2 [~] cd /tmp2 b13902080@meow2 [/tmp2] mkdir -p <你的學號> b13902080@meow2 [/tmp2/b13902080] mkdir -p .cache b13902080@meow2 [/tmp2/b13902080/.cache] mkdir -p uv b13902080@meow2 [/tmp2/b13902080/.cache] mkdir -p huggingface ``` ## 二、虛擬環境 為了隔離套件,這邊用 [uv](https://docs.astral.sh/uv/getting-started/installation/) 這個套件進行虛擬環境管理。 ```shell curl -LsSf https://astral.sh/uv/install.sh | sh # 下載並安裝 uv ``` 然後在 `/tmp2/<你的學號>` 底下創建虛擬環境 ```shell uv venv <venv_name> # 建立虛擬環境 source ./<venv_name>/bin/activate # 啟用虛擬環境 ``` 要退出虛擬環境請用 `deactivate` 指令 ## 三、準備套件 ### 每次會用到的 進入虛擬環境後,要下載 `torch`以及相關套件 ```shell (venv_name) export UV_CACHE_DIR=/tmp2/<你的學號>/.cache # 設定 cache 的路徑,不然家目錄又要被塞爆 (venv_name) uv pip install notebook papermill # 下載用來跑 notebook 的套件 (venv_name) uv pip install torch # 基本上每次都會用到 ``` ### ML HW6 會用到的 ```shell (venv_name) uv pip install -U datasets trl bitsandbytes (venv_name) uv pip install peft ``` ## 四、編輯 notebook 打開你的 `.ipynb` 檔案,可以用 vscode 或是其他方法傳到工作站上。 然後就可以在 vscode 裡面輕鬆編輯了。 ### 環境變數 為了不要讓 LLM 塞爆家目錄,請在 notebook 的最開始加上一格: ```shell %env HF_HOME=/tmp2/<你的學號>/.cache/huggingface %env UV_CACHE_DIR=/tmp2/<你的學號>/.cache/uv ``` ![圖片](https://hackmd.io/_uploads/Bkl1oCDJle.png) ## 五、tmux tmux 是可以 manage 視窗的軟體,它讓你可以就算斷線了,程序也繼續執行。 ### 開啟 `tmux` ```shell tmux ``` ![圖片](https://hackmd.io/_uploads/rJ0lOADJxg.png =60%x) ### 到你想要去的目錄 像我是在 `/tmp2/b13902080/MLhw6` 底下做事,所以就 `cd` 到那邊。(如果目錄不存在記得 `mkdir`) ### 開啟虛擬環境 tmux 基本上就是新開的視窗,所以就算外面已經在虛擬環境,tmux 內還是要 activate ```shell b13902080@meow2 [/tmp2/b13902080] source ./<venv_name>/bin/activate # 啟用虛擬環境 ``` ### 退出 tmux 的方法 tmux 的命令,是用「前綴」+「命令」組成。預設的前綴是 `Ctrl+b`。 如果想退出 tmux,按下 `Ctrl+b d`。意思是先按 `Ctrl+b`,放開後再按 `d`。 ### 連回 tmux 的方法 下 `tmux ls` 可以看自己當前有什麼 session ![圖片](https://hackmd.io/_uploads/S1vAF0Pkee.png) 若要連到 0 號 session,請下 ```shell tmux a -t 0 ``` 把 `-t` 後面的數字換掉就可以連不同 session ## 六、執行 notebook ### 環境 請確保你正在 tmux 內,且已經啟動虛擬環境。 ### 執行 papermill 可以將輸入的 `.ipynb` 檔執行完,輸出到指定的另一個檔案。如: ```shell papermill ML_hw6.ipynb ML_hw6_2nd.ipynb ``` 這樣就會執行 `ML_hw6.ipynb`,並將執行完的結果生成一個新的 notebook,檔名為 `ML_hw6_2nd.ipynb` ### 離開 然後你就可以退出 tmux 去喝下午茶了