###### tags: `OneAI 使用手册` `TWCC`
[OneAI 文件](/s/xKNcU3O5D)
# 筆記本服務
==筆記本服務基於 [Jupyter 組件](https://jupyter.org/) 之上,預先提供數個在深度學習及資訊科學方面常見的開發框架,並可讓使用者在建立筆記本服務的過程中透過提供 [requirements.txt](https://pip.pypa.io/en/stable/reference/requirements-file-format/#example "pip requirements.txt 官方範例") 安裝所需特定 python 套件,然後就可以安全快速地進入[JupyterLab 互動式開發環境](https://jupyterlab.readthedocs.io/en/stable/ "JupyterLab 官方文件")。==
## 建立筆記本服務
* 從服務列表點選「**筆記本服務**」,在「**筆記本服務**」頁面點擊「**+建立**」。

#### 1. 基本資訊
* 填寫名稱、描述並選擇開發框架,接著點擊「**下一步:硬體設定>**」。

:::info
:bulb: **提示:開發框架**
系統目前提供的人工智慧開發框架及軟體如下:
| | TensorFlow | PyTorch | MXNet | CUDA | DataScience | PySpark |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| JupyterLab 版本| 2.x | 2.x | 2.x | 3.x | 3.x | 3.x |
|預設 Packages| AIMaker,<br> boto3 | AIMaker,<br> boto3 | AIMaker,<br> boto3 | AIMaker,<br> boto3,<br> Numba, <br> xeus-cling | AIMaker,<br> boto3 | AIMaker,<br> boto3 |
|擴充套件| Elyra,<br>TensorBoard | Elyra,<br>TensorBoard | Elyra,<br> TensorBoard | Elyra | Elyra| Elyra |
|使用語言| Python | Python | Python | Python | Python,<br>R,<br>Julia | Python |
|映像檔 來源 | [NVIDIA-NGC-TensorFlow](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow) | [NVIDIA-NGC-PyTorch](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch) | [NVIDIA-NGC-MXNet](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/mxnet) | [NVIDIA-NGC-CUDA](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda) | [Jupyter-DataScience](https://hub.docker.com/r/jupyter/datascience-notebook/) | [Jupyter-PySpark](https://hub.docker.com/r/jupyter/pyspark-notebook) |
:::
==註記: 以上開發框架皆可以在無GPU硬體設定下正常使用,惟在 `Pytorch` 及 `MXNet` 開發框架內所含的範例程式需基於GPU硬體設定下方能正常運作,推薦使用GPU硬體設定進行相關體驗。 ==
#### 2. 硬體設定
* 依您的運算需求,選擇合適的硬體規格配置,亦可點擊「**查看目前已可用配額**」,檢視目前系統及專案的資源配額及已用量,接著點擊「**下一步:儲存>**」。
#### 3. 儲存
* 接著設定筆記本==服務==的儲存資訊,系統設定筆記本==服務==的預設路徑為 **`/workspace`**,故您至少須選擇一個儲存體掛載為 **`/workspace`**,作為筆記本==服務==的工作環境,完成後點擊「**下一步:變數設定>**」。點擊「**新增**」,可依需求增加掛載其他儲存體。

#### 4. 檢閱+建立
* 檢查筆記本服務的建立資訊,確定後點擊「**建立**」。
## 筆記本==服務==管理
* 筆記本==服務==建立成功後會出現在筆記本服務列表,點擊該列表可查看筆記本==服務==的詳細資訊。

* 進入筆記本服務詳細資料頁面,可以檢視筆記本==服務==的基本資訊、連線、儲存等設定,或透過上方的命令列圖示執行「**啟動**」、「**停止**」、「**編輯**」、「**删除**」及「**重新整理**」等功能。

### 日誌
* 點擊「**查看日誌**」,可查看筆記本==服務==的日誌資訊。

### 啟動 ==Jupyter Lab==
* 在「**連線**」區塊,點擊「**啟動**」即可在瀏覽器中開啟 JupyterLab 服務。

:::info
:bulb: **提示:** 「**Launcher**」頁面所顯示的軟體選項會因為在建立筆記本服務時選擇的開發框架而不同。
:::

:::info
:bulb: **提示:** **JupyterLab** 的使用說明請參見 [**JupyterLab 官方文件**](https://jupyterlab.readthedocs.io/en/stable/index.html)。
:::
## 修改筆記本服務設定
依使用上的需求,您可以隨時變更筆記本服務的設定,例如:選取更強大的硬體規格以提升運算效能、變更開發框架或掛載其他的資料儲存來源。
* 進入筆記本服務詳細資料頁面,點擊上方命令列 **編輯** 圖示。

* 編輯筆記本服務變更筆記本服務的描述、開發框架、硬體設定及儲存等設定,完成後點擊「**儲存編輯**」。
:::info
:bulb: **提示:** 編輯筆記本服務設定前請先儲存您的文檔,編輯完成後服務需重啟才會生效。
:::
## 安裝其他 Python 套件
如果您需要安裝其他開發所需的 Python 套件,可在筆記本根目錄下的 **requirements.txt** 中新增所需要的 Python 套件。**requirements.txt** 的格式可參見下方 Python 官方提供的 [**requirements.txt 範例**](https://pip.pypa.io/en/stable/reference/requirements-file-format/#example)。
```=
###### Requirements without Version Specifiers ######
pytest
pytest-cov
beautifulsoup4
###### Requirements with Version Specifiers ######
# See https://www.python.org/dev/peps/pep-0440/#version-specifiers
docopt == 0.6.1 # Version Matching. Must be version 0.6.1
keyring >= 4.1.1 # Minimum version 4.1.1
coverage != 3.5 # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1 # Compatible release. Same as >= 1.1, == 1.*
###### Refer to other requirements files ######
-r other-requirements.txt
###### A particular file ######
./downloads/numpy-1.9.2-cp34-none-win32.whl
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl
###### Additional Requirements without Version Specifiers ######
# Same as 1st section, just here to show that you can put things in any order.
rejected
green
```
* 修改並儲存 **requirements.txt** 後,需重新啟動筆記本服務才會安裝新增的套件。請關閉筆記本,回到筆記本服務詳細資料頁面,點擊上方的命令列「**停止**」圖示,稍後再點擊「**啟動**」。

* 如果希望立即使用新的套件,可透過下列方式,安裝後再重啟核心(Restart Kernel)以確保成功滙入套件。
- 在 Python Notebook 中執行 **`%pip install -r requirements.txt`**
- 在 JupyterLab 的 Terminal 中執行 **`pip install -r requirements.txt`**

## 資源監控
* 從服務列表選單選擇「**資源監控**」進入資源監控服務頁面,再點選左側選單「**筆記本服務**」進入「**筆記本服務監控**」頁面。
* 筆記本服務監控提供筆記本服務的監控指標及使用量細節資訊,包括 CPU 使用量、GPU 使用量及記憶體使用量的監控儀表板。

* 點選所有服務選單可篩選特定的服務名稱。

### 選擇特定期間
* 點選期間選單可篩選特定的期間,例如:1 天、7 天、14 天、1 個月、3 個月、6 個月、1 年或自訂。

### 使用量細節
* 點擊上方「**使用量細節**」可檢視筆記本服務的使用量細節。

==以下都是新增的情境==
# 掛載雲端儲存空間的使用情境
## 自動擴增開發環境所需 Python package 情境
預設提供的開發框架雖然滿足了大部分開發者所需的 Python packages,這裡還是提供一種方式來讓使用者增加額外的 Python package,讓筆記本服務啟動後將這些額外增添的 Python packages 也被安裝完畢。
### 在建立筆記本服務過程安裝額外 Python Packages
此次情境透過放置 **requirements.txt** 到儲存體並掛載到工作區,可以快速重現使用者在其他開發環境安裝的 Python Packages。
1. 先在本地準備 [**requirements.txt**](https://pip.pypa.io/en/stable/reference/requirements-file-format/#example "可參考pip requirements.txt 官方範例"),寫入要額外安裝的 Python Packages。或者使用者在原本的開發環境直接透過 [pip freeze > requriements.txt](https://pip.pypa.io/en/stable/cli/pip_freeze/#examples "可參考pip freeze 官方說明") 產生 **requirements.txt**。
2. 到雲端儲存管理頁面[建立雲端儲存體](/s/_F4C_EzEa#建立儲存體 "建立儲存體的說明文檔"),假設該儲存體的名稱命名為 `mybucket`。
3. 將 **requirements.txt** [放入雲端儲存體](/s/_F4C_EzEa#上傳檔案 "將檔案上傳的方式教學"),也就是上傳到 `mybucket`。
4. 進入筆記本服務管理頁面按下 `建立` 按鈕開始設定筆記本服務流程。
5. 在建立過程的第三個步驟中,設定儲存的頁面, 預設至少必須掛載一個儲存體成為該筆記本服務工作空間,並且掛載路徑固定被命名為 `/workspace` ,接著在旁邊儲存欄位的下拉式選單中挑選剛剛所建立的 `mybucket` 儲存體。這樣的設定在筆記本服務成功啟動後,使用者在筆記本服務的工作空間(`/workspace`)做的所有關於檔案或目錄的相關處理動作, 就等同於直接是對雲端儲存體內(這裡的案例是 `mybucket`)做處理。
6. 當設定建立筆記本服務流程完成,該筆記本服務啟動後,由於在筆記本服務的工作區(`/workspace`,也就是 `mybucket` 儲存體)存在 **requirements.txt** ,所以會依 **requirements.txt** 中描述安裝 Python Packages ,接著就可以直接 import 使用。
## 透過雲端儲存達成專案團隊共用資料集情境
一個專案團隊內可以透過不同的雲端儲存體來管理不同的資料集,在容器服務或者筆記本服務裏透過掛載雲端儲存體的方式來達到共用資料集的情境。
假設同一個專案內有 A,B 兩個模型開發小組基於同份資料集,根據各自擅長的開發框架來設計不同機器學習模型, 由資料維護小組負責維護資料集。
### 資料維護小組準備資料集傳到雲端儲存體
1. 到雲端儲存管理頁面[建立雲端儲存體](/s/_F4C_EzEa#建立儲存體 "建立儲存體的說明文檔"), 假設該儲存體的名稱被命名為 `cat-images-dataset`。
2. 在 `cat-images-dataset` 儲存體中分別[建立兩個資料夾](/s/_F4C_EzEa#建立資料夾 "建立資料夾的說明文檔") `train` 及 `valid` 。
3. 分別進入 `train` 及 `valid` 資料夾,然後開始[上傳](/s/_F4C_EzEa#上傳檔案 "上傳檔案的說明文檔")訓練或驗證的圖案檔案。
### 模型開發小組在各自的筆記本服務讀取共用的圖像資料進行訓練
A B 開發小組在各自建立筆記本服務的過程中,額外掛載 `cat-images-dataset` 儲存體。
1. 先到雲端儲存管理頁面[建立雲端儲存體](/s/_F4C_EzEa#建立儲存體 "建立儲存體的說明文檔") 準備用來放入各模型開發小組的開發程式碼並成為各自筆記本服務的工作區,假設 A 小組建立的儲存體命名為 `a-team-code` , B 小組建立的儲存體命名為 `b-team-code`。
2. A B 小組各自進入筆記本服務管理頁面按下 `建立` 按鈕開始設定筆記本服務流程。
3. 在建立筆記本服務過程的第三個步驟中,設定儲存的頁面,A B 小組在預設的掛載路徑 `/workspace` 各自挑選 `a-team-code` 或 `b-team-code` 儲存體來掛載, 成為該筆記本服務工作區並且用來放開發程式碼.
4. 在同個步驟,設定儲存頁面,按下 `新增` 按鈕來額外掛載資料維護小組所維護的資料集儲存體 `cat-images-dataset`,掛載路徑欄位填入 `/workspace/source_dataset` ,儲存體從下拉選單中挑選 `cat-images-dataset`。
5. 筆記本服務建立完成啟動後,進入 Jupyter 開發環境,開發小組就可以在各自筆記本服務裡的`/workspace/source_dataset` 目錄下讀取資料集來進行模型訓練。