資料科學家可以使用雲原生AI套件建立Notebook(雲原生AI套件提供Jupyter和VSCode兩種類型的Notebook)來進行機器學習演算法的開發調試,並將演算法提交到ACK叢集中進行訓練。雲原生AI套件可按使用者選擇,將開源JupyterLab、使用者自訂的Jupyter或者VSCode服務鏡像,部署到ACK叢集中作為AI模型整合式開發環境,並將雲原生AI套件中的自動設定與ACK叢集中的使用者權限機制整合。本文介紹如何通過雲原生AI套件建立和使用Notebook。
前提條件
已建立ACK Pro版叢集,且叢集Kubernetes版本不低於1.18。
ACK Pro版叢集已安裝雲原生AI套件的開發控制台和調度組件,且ack-ai-dev-console組件版本為已升級至最新版本。
叢集管理員已為開發人員建立了RAM使用者(子帳號),並分配和關聯配額組。具體操作,請參見建立RAM使用者和步驟一:為使用者配置配額組。
配置訓練資料,具體操作,請參見配置訓練資料和代碼。
建立儲存卷(PVC),具體操作,請參見使用NAS靜態儲存卷或通過控制台方式使用OSS靜態儲存卷。
說明模型訓練資料一般存放在OSS、NAS等儲存卷上。
Notebook功能介紹
提供一個雲平台整合的機器學習實驗環境,在該環境中您可以進行機器學習的本地開發。
提供一個拷貝或者處理資料集的工具,將處理完的資料集直接提交至持久化儲存,還可以結合巨量資料工具進行資料集的處理。
提供機器學習的測試、預先處理等工作環境,在該環境中您可以編寫、調試機器學習主要代碼,且將其打包成
docker Image
推送至叢集本地或者遠端容器鏡像倉庫。
步驟一:建立Notebook
登入開發控制台。具體操作,請參見訪問AI開發控制台。
在開發控制台左側導覽列中,單擊Notebook。
在Notebook頁面,單擊建立Notebook。
在Notebook message、Notebook資源配置和進階配置地區,配置相關資訊後,單擊建立Notebook。
在Notebook message地區:
輸入Notebook名稱,選擇Notebook鏡像和命名空間,其中命名空間只能提交到叢集管理員為開發分配的命名空間中,Notebook鏡像可選擇預設鏡像和自訂鏡像,其他選項請按需配置。
說明選擇Notebook鏡像時,請務必選擇適合您需求的Notebook鏡像。Jupyter Notebook只能選擇Jupyter鏡像,VSCode Notebook只能選擇VSCode鏡像,否則Notebook無法正常工作。
自訂Notebook鏡像僅在當前叢集中可見,其他叢集或多使用者無法共用。
開啟Workspace PVC開關,在Workspace持久化的目標PVC下拉式清單,選擇Workspace掛載的PVC。
開啟Token開關,給Notebook注入自訂Token來增強安全性。目前僅支援Jupyter類型的Notebook。
通過選擇Notebook Type來決定鏡像的啟動方式,因為不同的Notebook類型需要在不同的環境中運行。例如,當Notebook Type選擇Jupyter時,表示建立一條Jupyter Notebook類型的Notebook。
在Notebook資源配置地區,輸入CPU(核心數)和GPU卡數,選擇記憶體(GPU)。
在進階配置地區,您可以選擇添加Label、Annotation、NodeSelector、Toleration為您的Notebook增加配置。
任務建立完成後,您可以在Notebook頁面,單擊剛建立的Notebook的名稱,即能查看Notebook的健全狀態等資訊。
步驟二:使用Notebook
使用Jupyter Notebook
在Notebook頁面,單擊選擇一個狀態為Running的Jupyter Notebook。
單擊Notebook地區下的Python3。
說明在建立Notebook頁面,阿里雲Container Service團隊提供的官方鏡像只支援Python語言。如果您有其他需求,可以根據製作Notebook自訂鏡像的說明內容進行自訂鏡像Dockerfile的製作與鏡像的打包操作,具體操作,請參見製作Notebook自訂鏡像說明。
在Jupyter Notebook中使用Arena進行任務提交。
方式一:在命令列工具使用Arena進行任務提交
方式二:在Python的SDK中使用Arena進行任務提交
使用VSCode Notebook
在Notebook頁面,單擊選擇一個狀態為Running的VSCode Notebook。
在VSCode頁面,您可以擁有和本地一樣的VSCode開發體驗,並且環境中已經注入了KubeConfig並設定了環境變數供您使用。
製作Notebook自訂鏡像說明
您在製作Notebook自訂鏡像之前,首先請在Jupyter Notebook或VSCode Notebook環境中安裝最新版的Arena組件,然後才能在開發環境中運行為您提供的Demo樣本流程。關於如何安裝Arena組件,請參見配置Arena用戶端。
自訂Notebook鏡像僅在當前叢集中可見,其他叢集或多使用者無法共用。
製作Jupyter Notebook自訂鏡像說明
為了滿足不同的使用者的不同需求,在建立Notebook頁面為您提供了自訂Notebook鏡像的入口,如下圖所示:
您可以基於以下流程進行自訂鏡像Dockerfile的製作與鏡像的打包操作:
鏡像中jupyterlab的版本必須大於等於3.0.0。
FROM tensorflow/tensorflow:1.15.5-gpu
USER root
RUN pip install jupyter && \
pip install ipywidgets && \
jupyter nbextension enable --py widgetsnbextension && \
pip install jupyterlab && jupyter serverextension enable --py jupyterlab
# 下載安裝Arena的Python SDK工具包。
RUN pip install arenasdk
# 您可以通過其他途徑安裝JupyterLab,但是必須暴露服務到8888連接埠。
EXPOSE 8888
USER jovyan
製作VSCode Notebook自訂鏡像說明
為了滿足不同需求,VSCode Notebook在建立Notebook頁面,為您提供了自訂VSCode Notebook鏡像的入口,如下圖所示。
您可以基於以下的流程進行自訂Dockerfile的製作與鏡像的打包操作:
FROM ubuntu:18.04
USER root
RUN apt update && \
apt install -y curl
RUN cd /opt && \
wget https://aliacs-k8s-cn-hongkong.oss-cn-hongkong.aliyuncs.com/arena/install.sh && \
/opt/install.sh
您需要根據自己選擇的基礎鏡像動態調整Dockerfile的內容細節,從而使得鏡像成功Build。
在Notebook中儲存自身為鏡像
雲原生AI套件開發控制台組件ack-ai-dev-console在1.0.22及以後版本中,支援在Notebook中提交該Notebook自身為鏡像並儲存到宿主機中,以達到儲存該Notebook開發環境的目的。
該功能僅支援對1.0.22及以後版本ack-ai-dev-console中建立的Notebook執行個體進行操作,對於已有的Notebook執行個體無法進行該操作。
如果您需要在Notebook中儲存自身為鏡像,可以按照以下操作步驟執行:
在Notebook中下載ack-commit-agent的一個用戶端二進位工具,這裡是該工具的下載地址。
下載結束之後,您需要在Notebook中執行以下命令,使得該用戶端全域可執行。
chmod +x ack-commit-ctl mv ack-commit-ctl /usr/bin/
使用該工具提交儲存Notebook的鏡像,這裡展示一個提交鏡像的樣本操作。
ack-commit-ctl commit image-commit-sample:v0.1.0-test INFO[0000] container id: xxx INFO[0002] Container save success, image: image-commit-sample:v0.1.0-test
提交操作結束後出現類似以上輸出說明將該Notebook儲存為鏡像提交成功。
執行以下命令,指定鏡像倉庫的使用者名稱和密碼,將鏡像推送到鏡像倉庫中。
ack-commit-ctl push image-commit-sample:v0.1.0-test --username=username --password=password INFO[0000] Start pushing the image: image-commit-sample:v0.1.0-test INFO[0000] Waiting... INFO[0003] Image pushed successfully: image-commit-sample:v0.1.0-test
出現類似以上輸出則說明鏡像已成功推送到鏡像倉庫中。
使用已經儲存的鏡像
確認ack-ai-dev-console組件已升級到1.0.21及以上版本。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在容器組頁面中找到已儲存鏡像的Notebook的容器組,單擊該容器組名稱,在Pod詳情頁面擷取該Pod所在節點的節點名稱。
在Notebook頁面,建立一個新的Notebook。
在鏡像拉取憑證中選擇已製作的Notebook自訂鏡像,然後在右側的進階配置中配置NodeSelector條目,配置NodeSelector的Key為
kubernetes.io/hostname
,Value為步驟4擷取的Pod節點名稱。單擊建立Notebook,Notebook建立成功即視為已使用儲存的鏡像。