Kubeflow 1.0 上线: 体验生产级的机器学习平台

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: # 背景 从2017年12月Kubeflow在Kubecon USA宣布开源至今,已经经过2年多的时间。在过去的两年里Kubeflow已经成长为一个拥有数百名贡献者的优秀开源项目。Kubeflow的目标是让机器学习工程师或者数据科学家可以利用本地或者共有的云资源构建属于自己的ML的工作负载。2020年3月,Kubeflow正式发布1.0版本。在Kubeflow 1.0的版本中, 有多项重要的核心

背景

从2017年12月Kubeflow在Kubecon USA宣布开源至今,已经经过2年多的时间。在过去的两年里Kubeflow已经成长为一个拥有数百名贡献者的优秀开源项目。Kubeflow的目标是让机器学习工程师或者数据科学家可以利用本地或者共有的云资源构建属于自己的ML的工作负载。2020年3月,Kubeflow正式发布1.0版本。在Kubeflow 1.0的版本中, 有多项重要的核心应用毕业,这些应用帮助用户在Kubernetes的平台上高效的开发、构建、训练和部署模型。毕业的应用有:

  • Kubeflow's UI, the central dashboard
  • Jupyter notebook controller and web app
  • Tensorflow Operator (TFJob) and PyTorch Operator for distributed training
  • kfctl for deployment and upgrades
  • Profile controller and UI for multiuser management

通过使用Kubeflow1.0, 用户可以通过Jupyter开发模型,然后利用Kubeflow提供的工具fairing(Kubeflow’s python SDK)来构建镜像,最后通过Kubernetes调度资源来训练模型。一旦他们有了训练好的模型,他们可以使用KFServing来创建部署推理服务。


376257940305ae2238f663078b7ab029.png

在阿里云上部署Kubeflow1.0

环境检查

1.需要Kubernetes集群1.14及以上
2.有些用户在安装时,因为集群预先安装过istio,所以导致安装失败,建议之前先清理掉istio的相关内容

Kubeflow1.0 服务部署

1.下载kfctl工具用于kubeflow部署

wget http://kubeflow.oss-cn-beijing.aliyuncs.com/kfctl_v1.0-0-g94c35cf_linux.tar.gz
tar zxvf kfctl_v1.0-0-g94c35cf_linux.tar.gz
mv kfctl /usr/bin/

2.初始化部署环境和下载部署所用manifests (此处为了适配阿里云ACK的一键部署,类似国内镜像拉取超时、服务访问不通等问题已经处理,请使用阿里适配后的CONFIG文件)

export KF_NAME=my-kubeflow
export BASE_DIR=/root/
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="http://kubeflow.oss-cn-beijing.aliyuncs.com/kfctl_k8s_istio.v1.0.1.yaml"
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_URI}
export CONFIG=${KF_DIR}/kfctl_k8s_istio.v1.0.1.yaml

3.创建服务运行时需要的本地PV,用户可以根据自己情况创建不同类型的PV,

cat << EOF > local_pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pipeline-mysql-pv
  namespace: kubeflow
  labels:
    type: local
    app: pipeline-mysql-pv
    key: kubeflow-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/pipeline-mysql
    type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pipeline-minio-pv
  namespace: kubeflow
  labels:
    type: local
    app: pipeline-minio-pv
    key: kubeflow-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/pipeline-minio
    type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: katib-mysql
  namespace: kubeflow
  labels:
    type: local
    app: katib-mysql
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/katib-mysql
    type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: metadata-mysql-pv
  namespace: kubeflow
  labels:
    type: local
    app: metadata-mysql-pv
    key: kubeflow-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/metadata-mysql
    type: DirectoryOrCreate
EOF
kubectl create -f local_pv.yaml

4.服务部署,时间稍长,请耐心等待....(预计10min以内)

kfctl apply -V -f ${CONFIG}

部署后环境检查

1.istio-system下的pod是否启动正常,执行kubectl get pods -n istio-system


0838e04374c8a0a32eb8e3b3747572d6.png

2.Kubeflow下的pod是否启动正常(此处由于服务部署的先后顺序,有些Pod会运行失败,可以等待服务重启),执行kubectl get pods -n kubeflow


a485b9f935918fe02bacb7f7615a3f28.png

3.是否能够正常访问Kubeflow页面
3.1执行 kubectl get svc -n istio-system istio-ingressgateway,查询istio对外暴露的IP

由于无法直接访问到Kubeflow的地址,可以通过使用sshuttle来访问,例如: sshuttle -r root@47.89.59.51 192.168.0.0/16

8d0e4d6a83a7b6b68f990be301de3925.png

3.2访问对应的IP:80显示Kubeflow的主页面标识部署成功


87a420596f9001059c433a1a40022859.png

体验Jupyter Hub

1.在主界面上选择Notebook Servers


9af2e9e8f6c92202666bc960016b8e88.png

2.新建New Server


1b627c9aed7de2732e5158c1022f3654.png

如果有提示No default Storage Class is set. 用户可以自行设置default Storage Class

8a8036b94778f34a0a9b57f784182048.png

例如在阿里云上设定disk-ssd为default stroage class

kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

3.编辑Server信息
用户可以选择Custom Image解决gcr镜像拉取不下来的问题


db624cee3ec6349a19fdbe44181d828c.png

阿里云提供如下的docker镜像:

registry.cn-hangzhou.aliyuncs.com/kubeflow-images-public/tensorflow-1.15.2-notebook-cpu:1.0.0
registry.cn-hangzhou.aliyuncs.com/kubeflow-images-public/tensorflow-1.15.2-notebook-gpu:1.0.0
registry.cn-hangzhou.aliyuncs.com/kubeflow-images-public/tensorflow-2.1.0-notebook-cpu:1.0.0
registry.cn-hangzhou.aliyuncs.com/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0

如果配置了Workspace Volume并且将alicloud-disk-ssd设为default stroage class,由于最低限制的原因,请将Size设置为20G


ecb74744d3586e809540a9f483ac678a.png

选择设定需要的GPU资源


ecb74744d3586e809540a9f483ac678a.png

4.使用Jupyter
服务启动成功后,状态显示为绿色


3af3372e2b1a3570df1ee71ba0d127a8.png

登录Terminal,检查GPU环境

dd37a16b3890810e1a1cbb1fc978e206.png


8799161b2208bd7ac227adae66a22377.png

使用Jupyter的开发环境

f819c5d958d3c00e41a39ff8f9284fa9.png

将示例代码复制到文本框中

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

import tensorflow as tf

x = tf.placeholder(tf.float32, [None, 784])

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

y = tf.nn.softmax(tf.matmul(x, W) + b)

y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

train_step = tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy)

sess = tf.InteractiveSession()
tf.global_variables_initializer().run()

for _ in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("Accuracy: ", sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

运行代码得出训练结果


a144aa1a62ed71aef25d9fcc3f176e86.png

展望

未来我们会带来更多的Kubeflow的实践文章,敬请期待~

参考文献: 1 https://medium.com/kubeflow/kubeflow-1-0-cloud-native-ml-for-everyone-a3950202751

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
9月前
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
6月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
12月前
|
机器学习/深度学习 测试技术
阿里云入选Gartner数据科学和机器学习平台挑战者象限
Gartner® 正式发布了《数据科学与机器学习平台魔力象限》报告(Magic Quadrant™ for Data Science and Machine Learning Platforms),阿里云成为唯一一家入选该报告的中国厂商,被评为“挑战者”(Challengers)。
|
机器学习/深度学习 人工智能 Shell
人工智能平台PAI操作报错合集之在分布式训练过程中遇到报错,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
7月前
PAI-Rec推荐平台对于实时特征有三个层次
PAI-Rec推荐平台针对实时特征有三个处理层次:1) 离线模拟反推历史请求时刻的实时特征;2) FeatureStore记录增量更新的实时特征,模型特征导出样本准确性达99%;3) 通过callback回调接口记录请求时刻的特征。各层次确保了实时特征的准确性和时效性。
156 0
|
7月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
691 0
|
机器学习/深度学习 人工智能 数据处理
人工智能平台PAI操作报错合集之任务重启后出现模型拆分报错,该怎么办
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
11月前
|
机器学习/深度学习 人工智能 监控
AutoTrain:Hugging Face 开源的无代码模型训练平台
AutoTrain 是 Hugging Face 推出的开源无代码模型训练平台,旨在简化最先进模型的训练过程。用户无需编写代码,只需上传数据即可创建、微调和部署自己的 AI 模型。AutoTrain 支持多种机器学习任务,并提供自动化最佳实践,包括超参数调整、模型验证和分布式训练。
911 4
AutoTrain:Hugging Face 开源的无代码模型训练平台
|
9月前
|
人工智能 智能设计 数据处理
|
12月前
|
机器学习/深度学习 人工智能 算法
机器学习【教育领域及其平台搭建】
机器学习【教育领域及其平台搭建】
290 6