---
title: 筆記本服務
description: OneAI 文件
---
[OneAI 文件](/s/user-guide)
# 筆記本服務
筆記本服務整合了主流的開發環境,包括 JupyterLab 互動式開發環境、深度學習框架(TensorFlow、PyTorch、 MXNet)與套件以及支援資料科學語言(Julia、R)與數據分析引擎(Spark),讓您快速建立深度學習或資料科學的安全開發環境,進行程式開發、測試、執行與除錯,或與團隊成員分享協作。
## 建立筆記本服務
從 OneAI 服務列表選擇「**筆記本服務**」進入筆記本服務管理頁面,接著點擊「**+建立**」。
#### 1. 基本資訊
* 填寫名稱、描述並選擇開發框架,接著點擊「**下一步:硬體設定>**」。
![](/uploads/upload_b25c5876ad148996ae61cbbd984d2d17.png)
:::info
:bulb: **提示:開發框架**
* 筆記本服務提供多樣化的人工智慧開發框架,這些開發框架皆可在無 GPU 的環境下正常運作。除了 **`Pytorch`** 及 **`MXNet`** 開發框架內所含的範例程式需於有 GPU 的環境才能執行,建議您可依需求選用合適的硬體規格進行開發,更多資訊請參考 [**Notebook 映像檔**](/s/public-image#Notebook-映像檔)。
:::
:::warning
:warning: **注意:** 如需使用 Elyra 套件,建議透過 CLI 指令運行,詳細資訊請參考 [**Elyra Running Pipelines 說明文件**](https://elyra.readthedocs.io/en/latest/user_guide/pipelines.html#running-pipelines)。
:::
#### 2. 硬體設定
* 依您的運算需求,選擇合適的硬體規格配置,亦可點擊「**查看目前已用配額**」,檢視目前系統及專案的資源配額及已用量,接著點擊「**下一步:儲存設定>**」。
#### 3. 儲存設定
* 此步驟將設定欲掛載的儲存體,您可將程式或資料預先上傳至 OneAI [**儲存服務**](/s/storage) 的儲存體中,在使用本系統的各項服務時再掛載儲存體,同一個儲存體可以同時掛載到不同的服務,方便在各服務之間分享資料,或與其他專案成員協同合作。當停用或删除服務時,儲存體的資料不會消失。
* 筆記本服務的預設路徑為 **`/workspace`**,故您至少須選擇一個儲存體掛載為 **`/workspace`**,作為筆記本服務的工作環境,完成後點擊「**下一步:變數設定>**」。點擊「**新增**」,可依需求增加掛載其他儲存體。
![](/uploads/upload_b932e002af17d7c613a9ba3e6d012096.png)
#### 4. 檢閱+建立
* 檢查筆記本服務的建立資訊,確定後點擊「**建立**」。
## 筆記本服務管理
* 筆記本服務建立成功後會出現在筆記本服務列表,點擊該列表可查看筆記本服務的詳細資訊。
![](/uploads/upload_2fafcf7ba0a971fd8396200e4765a352.png)
* 進入筆記本服務詳細資料頁面,可以檢視筆記本的基本資訊、連線、儲存等設定,或透過上方的命令列圖示執行 **啟動**、**停止**、**編輯**、**删除** 及 **重新整理** 等功能,說明如下:
* **啟動**:啟動筆記本服務,若筆記本服務已啟動或在某些狀態下,此按鈕會變成灰色。
* **停止**:若筆記本服務暫不使用,可先停止以釋放系統資源。當需要使用時,再執行「**啟動**」,但需注意啟動的時候可能會遇到資源不足的情形,或是需要重新安裝套件。
* **編輯**:修改筆記本服務的設定資訊,操作步驟與建立筆記本服務類似。編輯完成後服務會自動重啟,更多資訊請參見 [**修改筆記本服務設定**](#修改筆記本服務設定)。
* **刪除**:若服務已不使用,點選 **刪除** 可將筆記本服務永久刪除,以節省資源。刪除完成後,筆記本服務將從列表上消失。
* **重新整理**:即時更新畫面上顯示的最新狀態及資訊。
:::info
:bulb: **提示:** 請參考 [**服務狀態說明**](/s/service-state#筆記本服務),建議先點擊「**查看日誌**」,檢查日誌中的資訊是否有異常;若服務建立不成功,可依日誌資訊判斷可能的問題;即使服務成功建立且狀態顯示為 **Ready**,仍然可能會有套件找不到或無法安裝的問題,這些資訊都會被記錄在日誌中。
:::
:::info
:bulb: **提示:** 筆記本服務一旦有重新啟動的行為,將回復初始設定的狀態,您於筆記本服務啟動後額外安裝的套件可能會消失。為避免在重新啟動後要重新安裝套件,建議將必要安裝的套件寫在 requirements.txt,請參考 [**安裝其他 Python 套件**](#安裝其他-Python-套件)。
:::
![](/uploads/upload_4f165af3a39f4f7c9235bd4c742218cb.png)
### 查看日誌
* 點擊「**查看日誌**」,可查看筆記本服務的日誌資訊。
:::info
:bulb: **提示:** 建議在筆記本服務啟動後,先點擊「**查看日誌**」,檢查日誌中的資訊是否有異常;若服務建立不成功,可依日誌資訊判斷可能的問題;即使服務成功建立且狀態顯示為 **Ready**,仍然可能會有套件找不到或無法安裝的問題,這些資訊都會被記錄在日誌中。
:::
![](/uploads/upload_01f4b488f51e17d244490a491554dd25.png)
### 啟動 JupyterLab
* 在「**連線**」區塊,點擊「**啟動**」即可在瀏覽器中開啟 JupyterLab。
![](/uploads/upload_02b7918f22135770f343973c51947844.png)
![](/uploads/upload_cf7b2faed7970f000ae9e898f9c25015.png)
:::info
:bulb: **提示:**
* 筆記本服務的 Jupyter 服務整合了專案權限及帳號資訊,開啟 Jupyter 服務時,無需再次輸入登入資訊,
* 為專案協作及安全考量,筆記本服務提供的 Jupyter 服務僅限同專案成員使用。
* 「**Launcher**」頁面所顯示的軟體選項會因為在建立筆記本服務時選擇的 **開發框架** 而不同。
* **JupyterLab** 的使用說明請參見 [**JupyterLab 官方文件**](https://jupyterlab.readthedocs.io/en/stable/index.html)。
:::
## 修改筆記本服務設定
依使用上的需求,您可以隨時變更筆記本服務的設定,例如:選取更強大的硬體規格以提升運算效能、變更開發框架或掛載其他的資料儲存來源。
* 進入筆記本服務詳細資料頁面,點擊上方命令列 **編輯** 圖示。
* 接著可編輯筆記本服務的描述、開發框架、硬體設定及儲存等設定,操作步驟與建立服務類似。完成後點擊「**儲存**」,儲存後服務將自動重啟。
![](/uploads/upload_49cdaa8aa23ef013ab0ddbf0e67f70c4.png)
:::warning
:warning: **注意:** 編輯筆記本服務設定後,服務會重啟,筆記本服務將回復初始設定的狀態。因此請注意:
1. 修改筆記本服務設定前請先儲存正在編輯的檔案,以避免遺失編輯的內容。
2. 筆記本服務一旦重啟,您自行安裝的套件會遺失,建議將必要安裝的套件寫在 requirements.txt,請參考 [**安裝其他 Python 套件**](#安裝其他-Python-套件)。
3. 服務重啟時可能會遇到資源不足的情形。
:::
## 安裝其他 Python 套件
如果您需要安裝其他開發所需的 Python 套件,可在 JupyterLab workspace 中的 requirements.txt 新增所需要的 Python 套件,筆記本服務在啟動時會自動安裝 requirements.txt 中的套件,requirements.txt 的格式可參見下方 Python 官方提供的 [**requirements.txt 範例**](https://pip.pypa.io/en/stable/reference/requirements-file-format/#example "Python 官方提供的 requirements.txt 範例")。
![](/uploads/upload_7d97ded2a08a5b85253edbaf3319ca5e.png)
```=
###### 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** 後,需重新啟動筆記本服務,才會安裝新增的套件。請關閉筆記本,回到筆記本服務詳細資料頁面,點擊上方的命令列 **停止** 圖示,稍後再點擊 **啟動**。
:::info
:bulb: **提示:** 筆記本服務在啟動時會自動安裝 **requirements.txt** 中的套件,所以在 **requirements.txt** 修改後需重新啟動 **筆記本服務**。
:::
![](/uploads/upload_d2a62824c57170cd74434219a5b8628e.png)
* **requirements.txt** 修改後,會需要重新啟動 **筆記本服務** 才會自動安裝,如需立即安裝新的套件,可透過下列方式手動執行安裝 **requirements.txt** 中的套件。
- 在 Python Notebook 中執行 **`%pip install -r requirements.txt`**
- 在 JupyterLab 的 Terminal 中執行 **`pip install -r requirements.txt`**
* 執行完上一步驟後,點擊 **Jupyter** 上方 「**Kernel**」選單下的 「**Restart Kernel...**」 重啟 **JupyterLab** 內核,以確保成功滙入套件。
![](/uploads/upload_58a56503a7f12bfbcbba5100fde87c02.png)
:::info
:bulb: **提示:** 當 **requirements.txt** 的內容有誤或套件安裝失敗時,筆記本服務仍可正常啟動(狀態顯示為 **Ready**),但程式可能無法順利執行。建議可透過筆記本服務詳細頁面中的 「**查看日誌**」,查看筆記本服務的日誌資訊,確認套件是否都成功安裝。
![](/uploads/upload_161fdbee81f97ebf381788c9895c642c.png)
:::
## 使用情境 - 掛載儲存服務空間使用情境
### 情境一:自動擴增開發環境所需 Python Package
系統提供的開發框架雖然滿足了大部分開發者所需的 Python packages,若您需要增加額外的 Python package,可透過放置 **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**](https://pip.pypa.io/en/stable/cli/pip_freeze/#examples "可參考 pip freeze 官方說明") 指令 pip freeze > requirements.txt 產生 requirements.txt。
2. 進入「**儲存服務管理**」頁面 [建立儲存體](/s/storage#建立儲存體 "建立儲存體的說明文檔"),假設該儲存體的名稱命名為 `mybucket`。
3. 將 **requirements.txt** [放入儲存體](/s/storage#上傳檔案 "將檔案上傳的方式教學"),也就是上傳到 `mybucket`。
4. 進入「**筆記本服務管理**」頁面點擊「**建立**」按鈕開始設定筆記本服務。
5. 在建立過程的第三個步驟中,設定儲存的頁面,預設至少必須掛載一個儲存體成為該筆記本服務工作空間,並且掛載路徑固定被命名為 `/workspace`,接著在旁邊儲存欄位的下拉式選單中挑選剛剛所建立的 `mybucket` 儲存體。這樣的設定在筆記本服務成功啟動後,使用者在筆記本服務的工作空間(`/workspace`)做的所有關於檔案或目錄的相關處理動作,就等同於直接是對儲存體內(這裡的範例是 `mybucket`)做處理。
7. 當設定建立筆記本服務流程完成,該筆記本服務啟動後,由於在筆記本服務的工作區(`/workspace`,也就是 `mybucket` 儲存體)存在 **requirements.txt**,所以會依 **requirements.txt** 中描述安裝 Python packages,接著就可以直接 import 使用。
### 情境二:透過儲存服務達成專案團隊共用資料集情境
專案團隊可以透過不同的儲存服務儲存體來管理資料集,並在「**筆記本服務**」中透過掛載儲存服務儲存體的方式來達到共用資料集的情境。
假設同一個專案內有 A、B 兩個模型開發小組基於同一份資料集,根據各自擅長的開發框架來訓練不同機器學習模型,由資料維護小組負責維護資料集。
#### 資料維護小組準備資料集上傳到儲存服務
1. 進入「**儲存服務管理**」頁面 [**建立儲存體**](/s/storage#建立儲存體 "建立儲存體的說明文檔"),假設該儲存體的名稱為 `cat-images-dataset`。
2. 在 `cat-images-dataset` 儲存體中分別 [**建立兩個資料夾**](/s/storage#建立資料夾 "建立資料夾的說明文檔") **train** 及 **valid**。
3. 分別進入 **train** 及 **valid** 資料夾,然後開始 [**上傳**](/s/storage#上傳檔案 "上傳檔案的說明文檔") 訓練任務或驗證任務所需的資料集。
#### 模型開發小組在各自的筆記本服務讀取共用的資料集進行訓練
A、B 開發小組在各自建立筆記本服務的過程中,額外掛載 `cat-images-dataset` 儲存體。
1. 進入「**儲存服務管理**」頁面 [**建立儲存體**](/s/storage#建立儲存體 "建立儲存體的說明文檔") 準備用來放入各模型開發小組的開發程式碼並成為各自筆記本服務的工作區,假設 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` 目錄下讀取資料集來進行模型訓練。