云原生AI套件支持通过Kubeflow Pipelines构建和部署基于容器的可移植、可扩展的机器学习工作流。本文介绍如何通过Kubeflow Pipelines创建及查看工作流。
前提条件
- 已创建Kubernetes集群。本文以包含GPU的Kubernetes集群为例。具体操作,请参见使用Kubernetes默认GPU调度。
- 集群节点可以访问公网。具体操作,请参见为已有集群开启公网访问能力。
- 已创建PV和PVC。具体操作,请参见通过控制台的方式使用NAS静态存储卷或通过控制台的方式使用OSS静态存储卷。
- 已创建Notebook。具体操作,请参见创建并使用Notebook。
背景信息
Kubeflow Pipelines是一个用于构建端到端机器学习工作流的平台,主要由以下三个组件构成:
- Kubeflow Pipelines UI:用于Experiments,Pipelines和Runs的创建和查看。
- Kubeflow Pipelines SDK:用于定义和构建Components和Pipelines。
- Workflow Engine:工作流的执行引擎。
通过Kubeflow Pipelines可以实现如下功能:
- 借助Pipelines的Workflow能力,构建符合您业务场景的机器学习CI/CD流水线,加速算法的商业化落地。
- 借助Pipelines的Experiments能力,对比和分析不同参数或数据下Pipelines的运行情况。
- 借助Pipelines中的Tracking能力,记录每一次上线模型的Data、Code、Config、Input和Output等信息。
关于Kubeflow Pipelines的更多信息,请参见Kubeflow Pipelines。
准备工作
本文示例从Git URL下载源代码,且下载的数据集放在共享存储系统(基于NAS的PV和PVC)中。示例假设您已经获得一个名为fashion-pvc的PVC实例(共享存储),且已经将代码传递到Git中,代码内容请参见mnist.py和download_mnist_dataset.sh。
操作步骤
本文以使用KFP SDK和KFP Arena SDK构建一个机器学习工作流为例,安装Python SDK、编写并提交工作流均在Notebook环境下进行。关于KFP SDK的更多信息,请参见Introduction to the Pipelines SDK。
- 安装Kubeflow Pipelines。
- 未安装云原生AI套件:安装云原生AI套件时,工作流需选中Kubeflow Pipelines。具体操作,请参见安装云原生AI套件。
- 已安装云原生AI套件:
登录容器服务管理控制台,在左侧导航栏单击集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择
。- 在组件列表的操作列下,升级ack-ai-dashboard和ack-ai-dev-console,并部署ack-ai-pipeline。
组件 说明 ack-ai-dashboard 需升级到1.0.7及以上版本。 ack-ai-dev-console 需升级到1.013及以上版本。 ack-ai-pipeline 部署ack-ai-pipeline时,控制台会判断系统中是否存在kubeai-oss Secret,若存在则使用阿里云OSS作为Artifact的存储,若不存在则使用集群内置MinIO作为Artifact的存储。
- 执行以下命令,安装Python SDK。本文需要安装两个Python SDK,包括KFP SDK和KFP Arena SDK。
- KFP SDK:提供Pipelines编排和提交的能力。
pip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-1.8.10.2.tar.gz
- KFP Arena SDK:提供开箱即用的Component。
pip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-arena-0.1.0.tar.gz
- KFP SDK:提供Pipelines编排和提交的能力。
- 使用以下Python文件,编写并提交Pipelines工作流。
Pipelines工作流包含两部分:执行数据下载的操作、根据下载的数据执行模型训练。
import kfp from kfp import compiler from arena import standalone_job_op, pytorch_job_op def mnist_train_pipeline(): #数据下载OP,将数据下载到PCV中。 download_op = standalone_job_op(namespace=ns, name="download-mnist-dataset", image="busybox:1.35", working_dir="/root", sync_mode="git", data=["fashion-pvc:/mnist_data"], env=["GIT_SYNC_USERNAME=<GIT_USERNAME>", "GIT_SYNC_PASSWORD=<GIT_PASSWORD>"],, sync_source='https://codeup.aliyun.com/622f0c211c3bb48e78fc****/mnist-pytorch.git', command="/root/code/mnist-pytorch/download_mnist_dataset.sh /mnist_data/test_data") #模型训练OP,从PVC中读取download_op的数据进行训练,并将结果写入到PVC中。 train_op = pytorch_job_op(namespace=""default-group", annotation="kubai.pipeline:test", name="pytorch-dist-step", gpus=1, workers=2, working_dir="/root", image="ai-studio-registry.cn-beijing.cr.aliyuncs.com/kube-ai/pytorch:1.11.0-cuda11.3-cudnn8-runtime", sync_mode="git", env=["GIT_SYNC_USERNAME=<GIT_USERNAME>", "GIT_SYNC_PASSWORD=<GIT_PASSWORD>"], sync_source='https://codeup.aliyun.com/622f0c211c3bb48e78fc****/mnist-pytorch.git', data=["fashion-pvc:/mnist_data"], logdir="/mnist_data/pytorch_data/logs", command="python /root/code/mnist-pytorch/mnist.py --epochs 10 --backend nccl --dir /mnist_data/pytorch_data/logs --data /mnist_data/test_data") train_op.after(download_op) #创建Client并提交数据。 client = kfp.Client() client.create_run_from_pipeline_func(mnist_train_pipeline, namespace="default-group", arguments={})
- 查看Kubeflow Pipelines。
- 登录AI开发控制台。
- 在AI开发控制台的左侧导航栏中,单击Kubeflow Pipelines。
- 在左侧导航栏单击Runs,然后单击Active页签,查看运行的Pipelines。
- 单击目标Run,查看运行详情。
反馈
- 本页导读 (1)
文档反馈