新Kubeflow,新征程 (一):简化部署体验

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 时光飞逝,Kubeflow这个基于Kubernetes的云原生机器学习平台方案已经诞生了1年多的时间,人们审视它的眼光不再是好奇和宽容。人们已经开始审视,思考甚至挑战Kubeflow的价值, 而Kubeflow社区包括Google本身也在思考和变革,在这种背景下Kubeflow 0.4.0发布了。

综述

2017年底,奥斯汀的Kubecon上,Google项目的产品经理 David Aronchick 和首席工程师 Jeremy Lewi将Kubeflow这个项目带到了大家的视野里。经过一年的发展,在2018年的西雅图的Kubecon上, Kubeflow的热浪席卷整个会场,大约有近15-16个与KubeFlow相关的分享,来自于Google,阿里巴巴,Intel,IBM等公司的社区贡献者都介绍了自己和KubeFlow相关的经验。应该说,Kubeflow在2018赢得业界的关注。

kubeflow.png

但是平心而论,它还没有获得用户的信任。从能力上来看还有硬伤:

  1. 不能升级,作为一款软件方案,如果没有升级方案只能重建,对于用户来说是不可以接受。
  2. 不支持多租户,目前仅适用数据科学家的solo场景,无法支持数据科学家团队合作场景。缺乏隔离和资源限制导致并不适合规模中等以上的公司使用。
  3. 不够安全,许多组件都没有认证机制。

要承认Kubeflow距离真正的生产可用还有比较大的距离,但是从Kubeflow的Roadmap看,这也是Kubeflow社区在努力的方向。同时也能看到Google在发力,有了更多的工程师投入,同时向Nvidia,Cisco,红帽,微软等许多公司也真正有专人在KubeFlow上投入。如果有明确的方向,再加上持续的大规模投入从长期看Kubeflow的发展还是很有希望的。

与其临渊羡鱼,不如退而结网,改善Kubeflow真正有效的方法是大家尝试用KubeFlow解决自己在机器学习或者深度学习场景下的问题,并且将各种问题,吐槽甚至是解决方案回馈给社区,才能真正帮助KubeFlow成为云原生下解决数据科学家团队运行机器学习问题的利器。在这个背景下,Kubeflow 0.4.0于1月7日正式发布了。在0.4.0中包含了:

  • Jupyter Hub可以使用PVC
  • TFJob和PyTorch已经进入Beta阶段
  • Katib支持TFJob
  • Pipeline
  • Kubeflow的部署也变得更加简单,用户不用再似懂非懂的运行一堆ksonnet param和apply命令

其中Pipline(机器学习工作流)和Katib (自动机器学习框架)是0.4.0中新加入的能力;而TFJob进入了V1Beta1,距离真正的V1也是近在咫尺了。而Jupyter Hub与之前也有比较明显的变化。我们会在系列文章中与大家介绍。

为了能让国内的用户方便的体验到KubeFlow 0.4.0,阿里云容器服务团队第一时间对KubeFlow进行了适配。您可以按照本文档在阿里云容器服务上部署Kubeflow 0.4.0的版本。后续随着KubeFlow的不断完善,我们也会将KubeFlow和阿里云的能力进行深度整合。为您提供基于Kubernetes的完整的云原生机器学习体验。

部署Kubeflow

部署阿里云Kubernetes容器服务

选择GPU类型 (您也可以选择CPU类型,结合您的实际需求)

具体参考创建GPU集群

安装ksonnet

Kubeflow 利用 ksonnet 打包和部署其组件。

首先,安装ksonnet版本 0.13.1

cd /tmp/
curl -O http://kubeflow.oss-cn-beijing.aliyuncs.com/ks_0.13.1_linux_amd64.tar.gz
tar -xvf ks_0.13.1_linux_amd64.tar.gz
cp */ks /usr/local/bin/
rm -rf ks_0.13.1_linux_amd64*

部署PVC

和之前的版本相比,在0.4.0的版本中,KubeFlow依赖于katib-mysql,pipeline-mino,pipeline-mysql这三个有状态服务。而这些需要提前部署,您也可以根据自己的需求修改PV和PVC的配置

wget http://kubeflow.oss-cn-beijing.aliyuncs.com/storage.yaml
kubectl create namespace kubeflow
kubectl create -f storage.yaml

注意: 这里提供的方案是为了满足快速部署,您可以根据自身需求配置更为合理的PV和PVC配置。

下载Kubeflow的repo

KUBEFLOW_SRC=~/kubeflow-repo
mkdir ${KUBEFLOW_SRC}
cd ${KUBEFLOW_SRC}
curl -O http://kubeflow.oss-cn-beijing.aliyuncs.com/download.sh
bash download.sh

在阿里云上安装Kubeflow

由于国内访问Google默认的的镜像仓库不稳定,请您在选择platform时候,指定云平台为ack( Alibaba Cloud Kubernetes)

export KFAPP=mykubeflow

cd ~
${KUBEFLOW_SRC}/scripts/kfctl.sh init ${KFAPP} --platform ack
cd ${KFAPP}
${KUBEFLOW_SRC}/scripts/kfctl.sh generate platform
${KUBEFLOW_SRC}/scripts/kfctl.sh apply platform
${KUBEFLOW_SRC}/scripts/kfctl.sh generate k8s
${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s

注意:第一次执行${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s的时候,会报出如下错误:

error.jpg

此时不用担心,这是Kubeflow的已知issue,可以重新执行一次apply命令解决。

${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s

部署pytorch

这是Kubeflow 0.4.0的已知issue,由于Katib要依赖pytorch, 需要提前部署一下pytorch

cd ~
cd ${KFAPP}/ks_app/
ks apply default -c pytorch-operator

关闭Kubeflow使用报告 (可选)

默认Kubeflow会想Google匿名上报用户的使用情况,如果您感到不妥,可以按照以下方法关闭

kubectl delete -n kubeflow deploy spartakus-volunteer
cd ~
cd ${KFAPP}/ks_app/
ks delete default  -c spartakus
ks component rm spartakus

访问Central UI

Kubeflow提供了一系列的UI:

  • Argo UI
  • JupyterHub
  • Katib
  • TFJobs Dashboard

Kubeflow提供了Central UI方便用户访问不同的服务,由于KubeFlow目前在安全上还有所欠缺,不建议您在互联网上暴露服务。您可以在本机使用port forward命令访问Central UI

export NAMESPACE=kubeflow
export PODNAME=`kubectl get po -n kubeflow  -l service=ambassador | grep -v NAME| head -1| awk '{print $1}'`
kubectl port-forward ${PODNAME} -n ${NAMESPACE} 8080:80

最终您可以直接访问Central UI, 并且导航栏访问不同的Kubeflow服务。这样您就可以开始您的Kubeflow之旅了。

http://localhost:8080/

central_ui.png

总结

本文向您介绍Kubeflow最新的变化以及如何在阿里云上部署Kubeflow最新版本的步骤,欢迎您亲自尝试。我们后续也会介绍如何在阿里云上使用Kubeflow具体服务的方法。

Kubeflow当前版本的部署安装对于GCE有比较强的绑定,导致使用者独立部署有一定的难度,为了方便您在非GCE的平台尝试,阿里云容器服务团队提供了阿里云上的部署方案,后续我们也会与Kubeflow进行更深入的整合,提供基于Kubeflow,并结合阿里云的存储,弹性和安全能力的机器学习解决方案。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
设计模式 人工智能 开发工具
安卓应用开发:构建未来移动体验
【2月更文挑战第17天】 随着智能手机的普及和移动互联网技术的不断进步,安卓应用开发已成为一个热门领域。本文将深入探讨安卓平台的应用开发流程、关键技术以及未来发展趋势。通过分析安卓系统的架构、开发工具和框架,本文旨在为开发者提供全面的技术指导,帮助他们构建高效、创新的移动应用,以满足不断变化的市场需求。
18 1
|
26天前
|
Kubernetes API 调度
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
50 0
|
26天前
|
存储 Kubernetes 数据安全/隐私保护
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
33 0
|
26天前
|
运维 Kubernetes 网络协议
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(服务治理与网络访问)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(服务治理与网络访问)
19 0
|
2月前
|
人工智能 API 开发工具
基于流程编排工具低代码搭建大模型应用
流程编排是一种面向开发者的可视化开发工具,支持LLM、API、脚本等类型节点,旨在简化接入大型语言模型(LLM)流程,同时提供应用流程的全生命周期管理,包括流程的编排、试验、部署等,为开发者提供自定义AI应用开发一站式服务。
|
4月前
|
运维 Kubernetes Java
Higress 开源一周年:新版本,新标准,新工具,新征程
Higress 开源一周年:新版本,新标准,新工具,新征程
402 1
|
9月前
|
存储 弹性计算 运维
开发者评价:Serverless 容器最值得推荐的能力是什么?
开发者评价:Serverless 容器最值得推荐的能力是什么?
开发者评价:Serverless 容器最值得推荐的能力是什么?
|
前端开发 应用服务中间件 Linux
《小团队web技术搭建》(五)项目的简单部署方式
《小团队web技术搭建》(五)项目的简单部署方式
208 0
|
Serverless
Serverless 带给 web 开发的改变
Serverless 带给 web 开发的改变自制脑图
392 0
Serverless 带给 web 开发的改变
|
运维 资源调度 Kubernetes
没有银弹,只有取舍 - Serverless Kubernetes 的思考与征程(一)
本文试着梳理 Kubernetes 所遇到的挑战,设计 Serverless Kubernetes的原因、挑战和发展路径。
1590 0
没有银弹,只有取舍 - Serverless Kubernetes 的思考与征程(一)