数据科学家可以使用云原生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创建成功即视为已使用保存的镜像。