數據科學家可以使用云原生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頁面,阿里云容器服務團隊提供的官方鏡像只支持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及以上版本。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在容器組頁面中找到已保存鏡像的Notebook的容器組,單擊該容器組名稱,在Pod詳情頁面獲取該Pod所在節點的節點名稱。
在Notebook頁面,創建一個新的Notebook。
在鏡像拉取憑證中選擇已制作的Notebook自定義鏡像,然后在右側的高級配置中配置NodeSelector條目,配置NodeSelector的Key為
kubernetes.io/hostname
,Value為步驟4獲取的Pod節點名稱。單擊創建Notebook,Notebook創建成功即視為已使用保存的鏡像。