Kubeflow 入门——为 Kubernetes 打造的组件化、可移植、可扩展的机器学习堆栈

Kubeflow——K8S的机器学习利器 Kubeflow是Kubernetes的机器学习工具包。Kubeflow是运行在K8S之上的一套技术栈,这套技术栈包含了很多组件,组件之间的关系比较松散,我们可以配合起来用,也可以单独用其中的一部分。下图是官网显示Kubeflow作为在Kubernetes上安排ML系统组件的平台:Kubeflow架构图我们先大体看一眼Kubeflow都有哪些组件,是不是很多?接下来我会带大家逐步了解每个组件都有哪些作用。当我们开发和部署ML系统时,ML工作流程通常包括几个阶段。开发ML系统是一个反复的过程。 阅读详情

Kubeflow 入门——为 Kubernetes 打造的组件化、可移植、可扩展的机器学习堆栈

【编者的话】本文来自  Kubeflow 项目的产品经理 David Aronchick 和首席工程师 Jeremy Lewi,主要讲了他们新的开源项目——Kubeflow 的一些入门知识,Kubeflow 致力于使 Kubernetes 上的机器学习堆栈变得简单,快速及可扩展。

Kubernetes 已经迅速成长为部署复杂工作负载的混合解决方案。 虽然提供的只是无状态服务,但客户已经开始将复杂的工作负载转移到Kubernetes 平台上,并充分利用了 Kubernetes 提供的丰富API、可靠性以及良好的性能。其中增长最快的用途之一是使用 Kubernetes 作为机器学习的部署平台。

构建一套生产环境下的机器学习系统需要涉及各种组件,通常需要使用混合供应商并结合自研的解决方案。使用相对复杂的配置来连接和管理这些服务,给学习机器学习带来了巨大障碍。基础设施工程师通常会花费大量时间手动部署,然后才能测试一个模型。

更糟糕的是,上述部署与他们部署的集群紧密相关,这些堆栈是不可移植的,这意味着在没有进行重大重新架构的情况下,将模型从笔记本电脑迁移到高度可扩展的云端集群实际上是不可能的。所有这些差异都会浪费极大的精力,并且每次转换都可能会引入 bug。

Kubeflow 入门

为了解决这些问题,我们决定创建  Kubeflow 项目,一个新的开源 Github repo,致力于在 Kubernetes 上让 ML(Machine Learning)堆栈变得简单,快速、可扩展。 

这个仓库包含:
  • JupyterHub,用于创建和管理交互性的 Jupyter notebook
  • Tensorflow Custom Resource (CRD),无论是 GPU 和CPU的选择还是调整集群大小,一条命令就能搞定。
  • 一个 TF 服务容器

因为此解决方案基于 Kubernetes, 所以任何运行 Kubernetes 的地方都可以使用此方案。只需启动一个集群,便可使用。

使用 Kubeflow

假设你正在使用两个不同的 Kubernetes 集群:一个本地的  minikube 集群和一个使用 GPU 的 GKE集群,而且有两  kubectl 上下文,分别命名为 minikube 和 gke。

首先需要初始化  ksonnet,并安装 Kubeflow(ksonnet使用前需要在操作系统中安装,具体可参考 此处)。
ks init my-kubeflow
cd my-kubeflow
ks registry add kubeflow \
github.com/google/kubeflow/tree/master/kubeflow
ks pkg install kubeflow/core
ks pkg install kubeflow/tf-serving
ks pkg install kubeflow/tf-job
ks generate core kubeflow-core --name=kubeflow-core

然后定义两个集群通讯的环境变量。
kubectl config use-context minikube
ks env add minikube

kubectl config use-context gke
ks env add gke

在集群中创建环境变量,首先在 minikube 上创建:
ks apply minikube -c kubeflow-core

然后在用于快速训练的多节点 GKE 集群中创建:

ks apply gke -c kubeflow-core


为了在任何地方都能轻易部署这样一套丰富的 ML 堆栈,环境变量的修改和重写应该保持在最低限度。

执行以下命令就可以访问任何一个部署:

kubectl port-forward tf-hub-0 8100:8000

打开地址  ttp://127.0.0.1:8100 访问 JupyterHub。使用下面的命令,就可以通过 kubectl 修改环境变量:
# To access minikube
kubectl config use-context minikube

# To access GKE
kubectl config use-context gke

执行 应用 时, 就会在 k8s上启动:
  • 启动和管理 Jupyter notebook 的 JupyterHub
  • 一个 TF CRD

假设你想提交一个训练任务,Kubeflow 提供了  ksonnet 原型,可以轻松定义组件。tf-job 原型可以很容易地为你的代码创建一个任务,但是对于训练任务,我们将使用运行了 TensorFlow CNN 基准的 tf-cnn 原型。

提交训练任务前,首先从模型中生成一个新的任务
ks generate tf-cnn cnn --name=cnn

tf-cnn 模型默认使用一个 worker,没有使用 GPU,很适合 minikube 集群,直接提交即可。
ks apply minikube -c cnn

对于 GKE,我们要转为使用另外一个模型,以便充分利用其多节点及 GPU 的优势,首先,列出所有可用参数:
# To see a list of parameters
ks prototype list tf-job

调整参数:
ks param set --env=gke cnn num_gpus 1
ks param set --env=gke cnn num_workers 1  

ks apply gke -c cnn

注意,我们设置变量后,在只有部署到 GKE 时才会生效,minikube 中的参数并未改变(编者注: 使用了  -- env 来指定想要修改参数的集群)。

训练之后,就可以将模型迁移到用到的服务上。

Kubeflow 还包括一个服务包。在另外一个单独的例子中,我们训练了一个标准的 Inception 模型,并将训练好的模型存储在名为  gs:// kubeflow-models 的 bucket 中,路径为  / inception。

可以通过下面的命令,部署一个训练好的模型
ks generate tf-serving inception --name=inception
---namespace=default --model_path=gs://kubeflow-models/inception
ks apply gke -c inception

这也同时突出了 Kubeflow 另外一个功能 -- 部署时接受输入。这条命令创建了一个基于 GKE 集群的  tf-serving 服务,面向应用程序可用。

有关部署和监控 TensorFlow 训练任务和 TensorFlow 模型的更多信息,请参阅 用户指南。

Kubeflow + ksonnet

我们想引出的是 ksonnet 的使用。我们认为多环境(dev,test,prod)开发将会是大多数 Kubeflow 用户的常态。通过将环境作为一等概念,ksonnet 使 Kubeflow 用户可以在不同环境之间轻易地迁移工作负载。

我们觉得 Ksonnet 是一个不错的选择,特别是现在 Helm 正在把 Ksonnet 整合到其下一个版本的平台中。有关 ksonnet 的更多信息可以在  ksonnet文档中找到。

我们也要感谢 Heptio 团队加快支持了 Kubeflow 用到的一些 ksonnet 关键功能。

接下来呢?

我们正在努力建立一个社区,并期待大家的贡献!我们已经和许多团队合作比如  CaiCloud、 Red Hat&OpenShift、 Canonical、 Weavework、 Container Solutions等等。CoreOS 对 Kubeflow 寄予了厚望:

“Kubeflow 在简易化 Kubernetes 上配置和生产化机器学习工作负载上取得了重大进步,我们认为这会极大程度上让更多企业接受该平台。我们期待与 Kubeflow 团队合作,提供 Kubeflow 与企业级 Kubernetes 平台 -- Tectonic 的紧密集成。“ -- Reza Shafii,CoreOS 产品副总裁
如果你现在想在浏览器中尝试 Kubeflow,我们已经与 Katacoda合作, 点击 这里轻松尝试!

我们才刚刚起步!我们很乐意为您提供帮助,可以通过以下方式关注我们:
从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。尽管 K3s 自身需要的资源不多,但是 kubeflow 套件组件众多,需要设置 Docker 的资源分配,避免安装过程中发生 Pod Pending.注意:本文以 deyloyKF 发行版作为主要安装对象,本地环境仅适用于开发测试使用,不可用于生产环境! 阅读详情

相关推荐

【kubeflow文档】kubeflow介绍与架构

Kubeflow项目致力于使机器学习(ML)工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务,而是提供一种直接的方法,将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes,都能够运行Kubeflow。

zhonglinzhang 4052

从零搭建机器学习平台Kubeflow

来自官网的一段介绍: Kubeflow 项目致力于使机器学习 (ML) 工作流在 Kubernetes 上的部署变得简单、可移植和可扩展。Kubeflow的目标不是重新创建其他服务,而是提供一种直接的方法,将用于 ML 的同类最佳开源系统部署到不同的基础设施中。在任何运行 Kubernetes 的地方,开发者都应该能够运行 Kubeflow。从官网这段介绍可以看出,Kubeflow与Kubernetes是形影不离的。

yanqianglifei的专栏 1万+

2、深入了解Kubeflow:功能、优势与替代方案

本文深入探讨了Kubeflow的功能、优势及其在机器学习开发生命周期(MDLC)中的应用。Kubeflow作为一套云原生工具集,支持从数据探索到模型部署的端到端流程,具备可组合性、可移植性和可扩展性。文章还介绍了其核心组件如Jupyter笔记本、数据准备工具、分布式训练框架、超参数调优和模型服务等,并对比了Clipper和MLflow等替代方案。通过MNIST、邮件列表分析和推荐系统等案例研究,展示了Kubeflow的实际应用场景。最后总结了其优势,提供了工具选择建议,并展望了未来发展趋势。

c7d8e9的博客 119

KubeFlow组件介绍

这很大程度上减少了运维的工作。kubeflow是一个胶水项目,它把诸多对机器学习的支持,比如模型训练,超参数训练,模型部署等进行组合并已容器化的方式进行部署,提供整个流程各个系统的高可用及方便的进行扩展部署了 kubeflow的用户就可以利用它进行不同的机器学习任务。(自定义资源),通过这样一个资源类型,使用 TensorFlow 进行机器学习训练的工程师们不再需要编写繁杂的配置,只需要按照他们对业务的理解,确定 PS 与 worker 的个数以及数据与日志的输入输出,就可以进行一次训练任务。

Pistachiout的学习博客 3124

MAIXCAM无线连接实战:5分钟搞定远程调试与代码烧录(避坑版)

本文提供了一份详细的MAIXCAM无线连接实战指南,帮助嵌入式视觉开发者快速配置远程调试与代码烧录。文章重点介绍了通过MaixHub IDE进行Wi-Fi配置、建立远程终端连接、使用SFTP进行文件传输以及管理自启动应用程序的完整流程,并针对IP地址变动、信号中断等常见问题提供了实用的避坑解决方案,旨在提升开发效率与灵活性。

weixin_29188043的博客 299

S4 Hana SD -信贷管理 - 03

自动信用控制将针对同一信用控制范围的不同的客户风险类别和信贷组执行不同的信用控制政策。对于ECC系统而言,无需单独设置检查规则,可在自动信贷控制进行设置即可,如图1-5-2。在S4 HANA版本中,自动信贷控制和检查规则是分离的。S4系统需要在定义自动信贷控制的时候,给字段“SAP信用管理”打钩,激活检查规则,然后需要单独在检查规则页签设置检查规则。接下来,我们分别介绍ECC和S4 HANA系统中两种不同配置方式.6.2SPRO。

weixin_46525734的博客 2888

kubeflow_Kubeflow简介

kubeflow 模型构建和训练只是支持机器学习(ML)工作流的一小部分。 您需要解决的其他问题包括将数据移植到可访问的格式和位置; 数据清理和特征工程; 分析您训练有素的模型; 管理模型版本控制; 可伸缩地为您训练有素的模型服务; 并避免训练/服务偏斜。 当工作流需要可移植且始终如一地可重复并且需要集成许多活动部件时,尤其如此。 此外,大多数这些活动会在多个工作流中重复发生,也许只是使用不...

cumj63710的博客 2705

使用R语言(ggplot2)绘制KEGG信号通路富集气泡图

本文详细介绍了如何使用R语言的ggplot2包绘制KEGG信号通路富集气泡图,从数据预处理到高级定制技巧,帮助生物信息学研究者直观展示富集分析结果。文章涵盖了气泡图的核心绘制方法、布局优化、常见问题解决方案以及交互式可视化扩展,是进行KEGG富集分析可视化的实用指南。

weixin_42625070的博客 452

云原生学习_Kubeflow:使用Kubernetes进行云原生机器学习

云原生学习 机器学习已完全改变了计算领域,为技术提供了全新的场景来解决,并使现有场景更加高效。 但是,为了拥有高效的机器学习解决方案,企业必须确保它包含以下三个概念:可组合性,可移植性和可伸缩性。 机器学习中的3个挑战 可组合性 当大多数人听说过机器学习时,他们通常会首先跳到建立模型。 有许多非常流行的框架使此过程变得更容易,例如TensorFlow,PyTorch,Scikit L...

cumo7370的博客 491

电感损耗 DCR/ACR/磁芯损耗 3 大来源解析:从集肤效应到磁滞回线

本文深入解析电感损耗的三大来源:DCR(直流电阻)、ACR(交流电阻)和磁芯损耗,从集肤效应到磁滞回线的微观机制。通过对比不同材料和设计策略,提供高频开关电源中电感损耗的优化方案,帮助工程师提升系统效率和可靠性。

weixin_34379433的博客 516

Weaxor勒索病毒实战分析:从加密算法到防御策略(附检测工具清单)

本文对Weaxor勒索病毒进行了深度实战剖析,详细拆解了其采用ChaCha20与AES-CTR的混合加密算法、横向移动手法及数据回传行为。文章重点分析了其密钥生成机制的“漏洞修复”,并提供了从主机加固、网络监控到基于IOC威胁狩猎的立体化企业级防御策略与检测工具清单。

weixin_29233333的博客 263

开源新项目Kubeflow:让Kubernetes集群具备机器学习能力

Kubeflow为Kubernetes集群用户部署机器学习带来了可组合的,更易于使用的堆栈,并提供了更多的控制和可移植性,而不仅仅是TensorFlow。Kubeflow是一个使Kubernetes上的机器学习变得简单,便携和可扩展的新项目。Kubeflow能够运行在可部署Kubernetes的任何环境中。Kubeflow不是重新创建其他服务,而是为Kubernetes用户提供最佳解决方案。为什么...

weixin_34112181的博客 515

程序员的自我修养

一个好的程序员的自我修养需要从不同角度出发,工作能力是一个方面,对自身的定位和了解也是一个方面,程序员的工作能力修养包括需求理解、功能设计、沟通确认、代码规范、成果验证、代码重构优化等,通过自我剖析来对自身进行定位并了解自身的优缺点,如去除劣根性、端正意识形态与态度、提升自己的核心竞争力等。 自我剖析 一个成功的人,必须要先了解自己,只有了解自己是什么样的人,了解自身有哪些优缺点,了解自己更合适做什么工作,知道自己做什么才能发挥出自身的优势,这样才能使自己在工作中发光发热,在职业生涯的道路上走的更远。

数通畅联 1682

Kubeflow将Kubernetes带入机器学习工作负载

开源的Kubeflow项目目前处于测试阶段,旨在帮助在Kubernetes容器编排系统上部署机器学习堆栈。 Kubeflow机器学习工具包项目旨在帮助在多个节点上部署机器学习工作负载,但在其中分解和分配工作负载会增加计算开销和复杂性。 Kubernetes本身的任务是使其更易于管理分布式工作负载,而Kubeflow的重点是使这些工作负载的运行具有可移植性,可伸缩性和简单性。 脚本和配置文件...

cxu0262的博客 309

LVGL 9Text Area 控件 (lv_textarea) 使用指南

是一个可编辑的文本输入控件,通常用于在用户界面中输入和编辑多行或单行文本。该控件支持文本插入、删除、光标控制、文本选择、密码输入等功能。它的文本内容可以通过键盘、API 或事件进行修改,还可以设置最大文本长度、占位符文本和密码模式等。是一个强大且灵活的文本输入控件,适用于多种用户输入场景,支持文本插入、删除、光标控制、密码输入等功能。通过 LittlevGL 提供的丰富 API,开发者可以自定义文本区域的外观和行为,实现复杂的文本输入需求。

m0_62599305的博客 1678

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

AirFlow/NiFi/MLFlow/KubeFlow进展

大数据分析中,进行流程化的批处理是必不可少的。传统的大数据处理大部分是基于关系数据库系统,难以实现大规模扩展;主流的基于Hadoop/Spark体系总体性能较强,但使用复杂、扩展能力弱。大数据分析向Kubernnetes等容器集群发展是大势所趋,AirFlow、NiFi、MLFlow、Kube...

chenhuipin1173的博客 2843

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Kubeflow文档1:介绍与架构

介绍Kubeflow的架构

青椒的学习笔记 2074

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Kubeflow 项目教程

Kubeflow 项目教程 项目介绍 Kubeflow 是一个开源项目,旨在使机器学习(ML)工作流在 Kubernetes 上的部署变得简单、可移植和可扩展。Kubeflow 项目由多个组件组成,涵盖了从数据准备到模型训练和部署的整个 ML 流程。 项目快速启动 安装 Kubeflow 以下是使用 kubectl 和 kustomize 安装 Kubeflow 的步骤: 安装 kubectl...

gitblog_00659的博客 1043

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何将方法参数带入注解_Kubeflow将Kubernetes带入机器学习工作负载

如何将方法参数带入注解 开源的Kubeflow项目现在处于测试阶段,旨在帮助在Kubernetes容器编排系统上部署机器学习堆栈。 Kubeflow机器学习工具包项目旨在帮助在多个节点上部署机器学习工作负载,但在其中分解和分配工作负载会增加计算开销和复杂性。 Kubernetes本身的任务是使其更易于管理分布式工作负载,而Kubeflow的重点是使这些工作负载的运行具有可移植性,可伸缩性和简...

cxu0262的博客 124

听闻 kubernetes,快速了解一番

看到 各位 大厂都在用这个, 而本人最多是用yarn 做些ML的事情, 赶快了解一下, 先扫盲记录一下。 一.名称趣闻 kubernetes缩写为k8s, 阿哈 ,原来是:k8s,意思就是k后面跳过8个字母后到s,就变成了k8s。 kubernetes /kubə'netis/,重音在第三个音节,读音:库伯耐踢死 不免说这些硅谷的人呀,起名有一套! 它是一个开源的,...

weixin_30273931的博客 160

大数据生态系统又一次更新!集装化成大趋势

全文共2737字,预计学习时长5分钟 图片来源:pexels.com/@bertellifotografia 近期,大生态数据系统领域发生了一件事情:思科(Cisco)将人工智能硬件框架与一个由八个GPU驱动的新型深度学习服务器相结合。Wikibon首席分析师James Kobielus在最近的一次采访中表示,思科承诺支持Kubeflow在人工智能领域的发展,“Kubeflow是一个开源工...

读芯术的博客 325

tensorflow sigmoid 如何计算训练数据的正确率_大数据生态系统又一次更新!集装化成大趋势...

全文共2737字,预计学习时长5分钟图片来源:pexels.com/@bertellifotografia近期,大生态数据系统领域发生了一件事情:思科(Cisco)将人工智能硬件框架与一个由八个GPU驱动的新型深度学习服务器相结合。Wikibon首席分析师James Kobielus在最近的一次采访中表示,思科承诺支持Kubeflow在人工智能领域的发展,“Kubeflow是一个开源工具,能使Te...

weixin_39791386的博客 116
上一篇: Istio:Google、IBM 和 Lyft 联合开源的微服务 Service Mesh 框架
下一篇: Kubespray节点伸缩
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值