# Application – Jupyter Lab
[TOC]
## 前情提要
在OOD(Open OnDemand)中使用 jupyter Notebook 或是 Jupyter Lab,其++OOD本身是在計算節點上做操作,無法連線到外網去安裝額外的python package++。<font color="blue">若要安裝額外python package,則要從登入節點安裝miniconda來建立你自定義的虛擬環境,並將其加入 jupyter kernel中。才能在 OOD 的 kernel中選擇你的虛擬環境。</font>
若不需要安裝任何套件在 jupyter Notebook 或是 Jupyter Lab上,則可以直接跳到"登入Open OnDemand"章節。
<font color="blue">OOD的使用限制,無法同時開啟兩個以上的資源,請先刪除掉正在使用的Interactive Session,才能Launch下一個資源。</font>
## 創建自定的 Miniconda Environment並加到 jupyter Notebook / Jupyter Lab 中
### 建立自訂的Miniconda Enviroment
:::success
(1) 登入Login Node。
連線到 f1-ilgn01.nchc.org.tw 或是 f1-ilgn02.nchc.org.tw 中。
詳細連線資訊請參考[登入節點](https://man.twcc.ai/@f1-manual/login_node)。
(2) 安裝 miniconda3, 請參考以下為安裝步驟。
```
[user@ilgn01 ~]$ mkdir -p ~/miniconda3
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
$ bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
$ rm -rf ~/miniconda3/miniconda.sh
$ ~/miniconda3/bin/conda init bash
$ ~/miniconda3/bin/conda init zsh
```
(3) 執行完 conda init 後,請重新登入login node登入節點。
(4) 執行 conda create -n ood_jupyter_python jupyter jupyterlab, 建立一個名稱為ood_jupyter_python的虛擬環境,並且在這個虛擬環境安裝jupyter notebook與jupyter lab。
<font color="red">建立完成後執行 `conda env list`
確認是否有建在此路徑下/home/\<username>/miniconda3/envs/ood_jupyter_python。</font>
<font color="blue">若無請根據備註的操作,新增路徑到envs_dirs中,重新創造一個虛擬環境。</font>
```
[user@ilgn01 ~]$ conda create -n ood_jupyter_python jupyter jupyterlab
...
...
Proceed ([y]/n)? y
Downloading and Extracting Packages:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate ood_jupyter_python
#
# To deactivate an active environment, use
#
# $ conda deactivate
[user@ilgn01 ~]$ conda env list
# conda environments:
#
ood_jupyter_python /home/user/miniconda3/envs/ood_jupyter_python
```
(5) 執行 conda activate ood_jupyter_python 切換到 ood_jupyter_python 虛擬環境。
```
[user@ilgn01 ~]$ conda activate ood_jupyter_python
```
(6) 執行 ipython kernel install --user --name= “jupyter\_test\_python” 加ood_jupyter_python 虛擬環境到jupyter。
```
(ood_jupyter_python) [user@ilgn01 ~]$ ipython kernel install --user --name=ood_jupyter_python
0.00s - Debugger warning: It seems that frozen modules are being used, which may
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
0.00s - to python to disable frozen modules.
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
Installed kernelspec ood_jupyter_python in /home/u5846412/.local/share/jupyter/kernels/ood_jupyter_python
```
(7) 執行 jupyter kernelspec list 確認是否有jupyter\_test\_python。
```
(ood_jupyter_python) [user@ilgn01 ~]$ jupyter kernelspec list
...
Available kernels:
ood_jupyter_python /home/u5846412/.local/share/jupyter/kernels/ood_jupyter_python
```
(8) 到此步驟,已經將你的虛擬環境加到open on demand 的 jupyter kernel中。
若需要其他package,可以再這邊繼續安裝你需要的package,他會同步到 jupyter kernel 中。
<!---是不是要放minicaonda 完整的範例--->
:::
:::info
#### 備註: 若路徑不是在"/home/\<username>/miniconda3/envs/"這個底下。 請根據以下步驟把指定的目錄新增至 envs_dirs 配置中,並創建虛擬環境在"/home/\<username>/miniconda3/envs/"路徑中。
```
[user@ilgn01 ~]$ conda config --append envs_dirs /home/u5846412/miniconda3/envs
[user@ilgn01 ~]$ conda create --prefix /home/u5846412/miniconda3/envs/ood_jupyter_python_envs jupyter jupyterlab
...
Proceed ([y]/n)? y
...
[user@ilgn01 ~]$ conda env list
# conda environments:
#
ood_jupyter_python_envs /home/u5846412/miniconda3/envs/ood_jupyter_python_envs
[user@ilgn01 ~]$ conda activate ood_jupyter_python_envs
(ood_jupyter_python_envs) [user@ilgn01 ~]$ ipython kernel install --user --name=ood_jupyter_python_envs
...
Installed kernelspec ood_jupyter_python_envs in /home/u5846412/.local/share/jupyter/kernels/ood_jupyter_python_envs
(ood_jupyter_python_envs) [user@ilgn01 ~]$ jupyter kernelspec list
...
Available kernels:
ood_jupyter_python_envs /home/u5846412/.local/share/jupyter/kernels/ood_jupyter_python_envs
(ood_jupyter_python_envs) [user@ilgn01 ~]$
```
錯誤路徑:
正確路徑:
:::
## 登入Open OnDemand
:::success
在您習慣的瀏覽器上輸入 https://f1-stn01.nchc.org.tw/ or https://f1-stn02.nchc.org.tw/ 連結,你將看到以下登入畫面,請輸入您在F1的主機帳號與密碼進行登入。
++若忘記主機帳號可至[iService中查詢主機帳號](https://man.twcc.ai/@f1-manual/iService)++

提醒:
為了安全登入網頁有時效性,如果你閒置過久未登入,或是已完成用戶登入又重新嘗試登入,系統可能會出現Bad Request 的錯誤訊息,如果你遇到此訊息請重新輸入 https://f1-stn01.nchc.org.tw/ or https://f1-stn02.nchc.org.tw/ 連結。
### 開啟Jupyter Notebook/JupyterLab App
(1) 從首頁的 Jupyter/JupyterLab App圖示開啟Jupyter/JupyterLab App。

(2) 透過Interactive Apps 的選單選擇開啟。

(3) 開啟後你可以看到以下表格需要填寫。
a.直接啟用Jupyter Notebook/JupyterLab App

b.使用自定義的 Miniconda Environment,來啟用Jupyter Notebook/JupyterLab App
<font color="#f00">:point_down:勾選check box,遵照我們的設定方式先創建好你的虛擬環境在jupyter kernel上(此網頁上滑至 ++使用自定 Miniconda Environment++)。 </font>

<font color="#f00">:point_down:若事先填寫尚未創建的虛擬環境,則無法Launch成功。點選"Delete"之後重新索取資源。 </font>

| 欄位名稱 | 說明 |
|-|-|
| Project ID | 系統將自動帶出你已經加入的計畫列表,你可以選擇有足夠錢包的計畫。 |
| Jupyter interface | 選擇要開啟Jupyter notebook 或是Jupyter Lab。 |
| CPU cores | 設定CPU 核心數量或thread。 |
| Memory (GB) | 設定Job的記憶體(以 GB 為單位)。 你設定的記憶體可供Job的所有cpu cores使用。<font color="#f00">一個core可以開到4GB ex. 2cores可以到8GB</font> |
| Number of Hours | 設定Job 的執行時間,時間到了會自動結束 <font color="#f00"> (上限為兩小時) </font> |
| Check box if using custom miniconda Environment | 設定是否使用自定的miniconda Environment,如果你要使用自定environment請在此打勾,並在下面Environment 欄位填上自定的Environment名稱。 |
| Environment | 設定自定的Environment名稱。 <font color="#f00"> 請注意:如果你要用自己的Environment,請確認在你的miniconda environment有安裝notebook 或 jupyter lab,否則無法正確被啟動。 </font> |
:::danger
<font color="#f00">++CPU cores++,++Memory++建議開大一些 例如: CPU 2 cores,Memory 8GB,才會較快建立起jupyter環境。</font>
:::
### 啟動 Jupyter Notebook / Jupyter Lab(未勾選check box)
:::success
(1) 表格都填好後,你可以點選「Lunch」 按鈕來執行Jupyter ,出現以下對話視窗表示Job 成功執行。
- Host 欄位顯示被分配到的主機名稱,點選Session ID 可以打開設定檔與log 的所在目錄。

(2) 點選「Connect to Jupyter」按扭,開啟Jupyter Nobebook/Lab。
a.Jupyter Nobebook畫面,新建notebook。

b. Jupyter Lab畫面。

:::
### 啟動Juypter Notebook/Lab 並使用自己定義的Miniconda環境(有勾選check box)。
:::success
(1) 表格都填好後,你可以點選「Lunch」 按鈕來執行Jupyter ,出現以下對話視窗表示Job 成功執行。
備註: 勾選check box,在 Environment 填上 ood_jupyter_python_envs。

<font color="red">如果無法成功啟用環境,請查看備註的內容說明,重新設定。</font>
(2) 在Job 成功被執行後按 Connect to Jupyter。
- Host 欄位顯示被分配到的主機名稱,點選Session ID 可以打開設定檔與log 的所在目錄。

(3) 如果是啟動**Jupyter Notebook**,建立新的notebook 請到File > Notebook。

(4) 接著會跳出Select Kernel 視窗,在此選擇 jupyter\_test\_python 建立新的nobebook。

(5) 如果要更改已存在的notebook kernel,請到 Kernel ->Change Kernel。
<font color="#f00">若有缺任何的package,請從登入節點做安裝。</font>
<font color="#f00">在登入節點上有install新的package,要選擇restart kernel。</font>

(6) 如果是在**JupyterLab** ,新建notebook請在 Launcher 視窗選擇ood\_juypter\_python\_envs。

(7) 更改已存在的notebook 的kernel, 請點選 Kernel > Change Kernel ... 去更換。

:::
## 刪除 Interactive Session
:::success
(1) 結束Interactive Session 可以在Jupyter Notebook/Lab App選shutdown來結束。
(2) Jupyter Notebook。
點選File > Shut Down 來結束,這將會關掉Notebook 視窗及刪除跑在Computer node 上的Job。

(3)Jupyter Lab。
點選File > Shut Down 來結束,這將會關掉Jupyter lab 視窗及刪除跑在Computer node 上的Job。

(4) 除此之外,也可以到My Interactive sessions,在正在跑的Interactive session視窗按Delete 按鈕關掉Interactive Session。

確認視窗將會顯示出來,請按 Confirm 刪除。

:::