KubeFlow组件介绍

kubeflow是一个胶水项目,它把诸多对机器学习的支持,比如模型训练,超参数训练,模型部署等进行组合并已容器化的方式进行部署,提供整个流程各个系统的高可用及方便的进行扩展部署了 kubeflow的用户就可以利用它进行不同的机器学习任务。kubeflow是一个为 Kubernetes 构建的可组合,便携式,可扩展的机器学习技术栈。

img

Kubeflow想解决的问题是如何基于Kubernetes去方便地维护ML Infra。Kubeflow中大多数组件的实现都是基于Kubernetes Native 的解决方案,通过定义CRD来功能。这很大程度上减少了运维的工作。同时,利用Kubernetes提供的扩展性和调度能力,对大规模分布式训练和AutoML也有得天独厚的优势。

Kubeflow架构图

kubeflow的重要结构:

  • jupyter :jupyter 创建和管理多用户交互式Jupyter notebooks。

    img
  • 多租户隔离:简化用户操作以允许用户仅查看和编辑其配置中的 Kubeflow 组件和模型制品。这个 Kubeflow 的多用户隔离下的关键概念包括身份验证、授权、管理员、用户和配置文件。

  • TFJob-operator :K8S有一种Jobs的Controller类型,K8S会跟踪Job的状态,如果没有正常结束,K8S可以再次把任务调度起来。Job是有结束时间的任务,当Job正常结束之后,K8S会把刚刚的Job清理掉。这个特性非常适合用来执行机器学习的训练任务。TFJob-operator即是KubeFlow的深度学习框引擎,资源类型TFJob是一个基于tensorflow构建的CRD(自定义资源),通过这样一个资源类型,使用 TensorFlow 进行机器学习训练的工程师们不再需要编写繁杂的配置,只需要按照他们对业务的理解,确定 PS 与 worker 的个数以及数据与日志的输入输出,就可以进行一次训练任务。

    在这里插入图片描述
    在这里插入图片描述

    apiVersion: kubeflow.org/v1beta2
    kind: TFJob
    metadata:
      name: mnist-train
      namespace: kubeflow
    spec:
      tfReplicaSpecs:
        Chief: # 调度器
          replicas: 1
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
        Ps: # 参数服务器
          replicas: 1
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
        Worker: # 计算节点
          replicas: 2
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
    
  • katib :超参数服务器,Kubeflow 集成了一个超参调优工具 Katib,主要用来模型自动优化和超参数调整,提供了 超参数调整(Hyperparameter Tuning),早停法(Early Stopping)和神经网络架构搜索(Neural Architecture Search)。

  • 训练算子(Operators) :、每个深度学习框架都对应一个的 operator 独立在一个 repository 中进行维护。使您能够通过算子训练 ML 模型。例如,它提供了在 Kubernetes 上运行 TensorFlow 模型训练的 TensorFlow 训练(TFJob)、用于 Pytorch 模型训练的 PyTorchJob 等。img

    当然, Kubeflow 1.4 Release 预计会支持融合后的 tf-operator:部署单个 operator 即可支持包括 TFJob、PyTorchJob、MXNetJob 和 XGBoostJob 在内的四种 API 支持。

  • Kubeflow pipelines:一个机器学习的工作流组件,使您能够基于 Docker 容器构建和部署可移植、可扩展的机器学习工作流pipeline 定义了算法组合的模板,通过 pipeline 我们可以将算法中各处理模块按特定的拓扑图的方式组合起来。它包括一个用于管理作业的用户界面、一个用于安排多步骤 ML 工作流的引擎、一个用于定义和操作管道的 SDK,以及用于通过 SDK 与系统交互的 Notebooks ,基于argo 用于pipeline任务工作流编排。Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,Argo的步骤间可以传递文件与结果信息,下一步(容器)可以获取上一步(容器)的结果。详细介绍可以前往https://blog.csdn.net/qq_45808700/article/details/132188234

  • KFServingKFServing 提供一个稳定的接口,供用户调用,来应用该模型,serving 通过模型文件直接创建模型即服务(Model as a service),在 Kubernetes 上启用无服务器推理。Kubeflow提供基于TFServingKFServingSeldon等好几种方案。有了 KFServing,用户可以轻松地在 GPU 上部署推理服务,并使用 用户可以利用性能卓越的行业领先模型服务器在 GPU 上轻松部署推理服务,并从所有无服务器功能中获益。它还为 PyTorch、TensorFlow、scikit-learn 和 XGBoost 等 ML 框架提供高性能和高度抽象的接口。TensorFlow-serving可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。它支持模型热更新与自动模型版本管理。这意味着一旦部署 Serving 后,你再也不S需要为线上服务操心,只需要关心你的线下模型训练。借助 Serving,您可以轻松部署新算法和实验,同时保留相同的服务器架构和 API。

    在这里插入图片描述
    在这里插入图片描述

  • Istio:Kubeflow 主要利用 Istio 来进行资源的管理和进行运维, 例如查看相关资源的指标, 权限的验证, 资源的分配和测试等等。

    在这里插入图片描述

  • ambassador :Ambassador 对外提供统一服务的网关(API Gateway),它是一个 Kubernetes 原生的微服务 API 网关,它部署在网络边缘,将传入网络的流量路由到相应的内部服务(也被称为“南北”流量)。

虽然kubeflow最开始只是基于tf-operator,但后来随着项目发展最后变成一个基于云原生构建的机器学习任务工具大集合。从数据采集,验证,到模型训练和服务发布,几乎所有步骤Kubeflow都提供解决方案的组件。

基于Kubeflow的ML流程图

通过Kubeflow ,用户可以使用Jupyter开发模型,然后使用fairing(SDK)等工具构建容器,并创建Kubernetes资源训练其模型。模型训练完成后,用户还可以使用KFServing创建和部署用于推理的服务器。再结合pipeline(流水线)功能可实现端到端机器学习系统的自动化敏捷构建,实现AI领域的DevOps。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队

导读 本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的NAT模型和DR模型的工作原理。通过本文可以了解到四层负载均衡的技术特点、NAT模型和DR模型的工作原理、以及NAT模型和DR模型的优缺点。读者可以重点关注NAT模型到DR模型演进的原…

Visual Studio 2022的MFC框架——theApp全局对象

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 MFC中的WinMain函数是如何与MFC程序中的各个类组织在一起的呢?MFC程序中的类是如何与WinMain函数关联起来的呢&#xff1f…

【C++】vector的使用

1、vector的使用 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <vector> using namespace std;void Test1() {vector<int> v1;vector<int> v2(10, 15);vector<int> v3(v2.begin(), v2.end());string str("hello world&…

使用Visual Studio 2022实现透明按钮和标签、POPUP样式窗体的一种工业系统的UI例程

例程实现的功能说明 1、主窗体采用POPUP样式&#xff0c;无标题栏、无菜单栏&#xff0c;适合工业类软件 2、按钮、标签使用自绘&#xff0c;实现透明样式&#xff0c;可以实现灵活的样式设计&#xff0c;更具设计感 按钮重绘函数&#xff1a;OnDrawItem()按钮样式设定&#…

便携式水质检测仪都测哪些水中指标

水质检测仪分为实验室&#xff08;台式&#xff09;和户外使用的便携式多参数水质检测仪。 便携式的有哪些特点&#xff1f; 相对于实验室的水质分析设备&#xff0c;便携式水质多参数分析仪体积小巧&#xff0c;结构简单&#xff0c;户外使用更加便捷&#xff0c;功能更丰富。…

YOLO V5 和 YOLO V8 对比学习

参考文章&#xff1a; 1、YOLOv5 深度剖析 2、如何看待YOLOv8&#xff0c;YOLOv5作者开源新作&#xff0c;它来了&#xff01;? 3、anchor的简单理解 完整网络结构 YOLO v5和YOLO v8的Head部分 YOLO v8的Head 部分相比 YOLOv5 改动较大&#xff0c;换成了目前主流的解耦头结构…

Nexus私有仓库+IDEA配置远程推送

目录 一、docker安装nexus本地私服&#xff0c;Idea通过maven配置deploy本地jar包&#xff08;简单&#xff09; 二、docker push镜像到第三方nexus远程私服&#xff08;shell命令操作&#xff09; 三、springboot通过maven插件自动生成docker镜像并push到nexus私服&#xf…

(三)行为模式:6、备忘录模式(Memento Pattern)(C++示例)

目录 1、备忘录模式&#xff08;Memento Pattern&#xff09;含义 2、备忘录模式的UML图学习 3、备忘录模式的应用场景 4、备忘录模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点 5、C实现备忘录模式的实例 1、备忘录模式&#…

7.react useReducer使用与常见问题

useReducer函数 1. useState的替代方案.接收一个(state, action)>newState的reducer, 并返回当前的state以及与其配套的dispatch方法2. 在某些场景下,useReducer会比useState更加适用,例如state逻辑较为复杂, 且**包含多个子值**,或者下一个state依赖于之前的state等清楚us…

部署你自己的导航站-dashy

现在每天要访问的网页都太多了&#xff0c;尽管chrome非常好用&#xff0c;有强大的标签系统。但是总觉的少了点什么。 今天我就来分享一个开源的导航网站系统 dashy。这是一个国外的大佬的开源项目 github地址如下&#xff1a;https://github.com/Lissy93/dashy 来简单说一下…

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作&#xff0c;一般是同步不同网站的同个仓库&#xff0c;比如说gitee 和github。某个网站更新了&#xff0c;你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库&#xff0c;把B仓库分支&am…

函数(个人学习笔记黑马学习)

1、函数定义 #include <iostream> using namespace std;int add(int num1, int num2) {int sum num1 num2;return sum; }int main() {system("pause");return 0; } 2、函数的调用 #include <iostream> using namespace std;int add(int num1, int num2…

2023-8-31 Dijkstra求最短路(二)

题目链接&#xff1a;Dijkstra求最短路 II #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue>using namespace std;typedef pair<int, int> PII;const int N 150010;int n, m; int h[N…

网络中的问题2

距离-向量算法的具体实现 每个routerY的路由表表项 involve<目的网络N&#xff0c;距离d&#xff0c;下一跳X> 对邻居X发来的报文,先把下一跳改为X,再把距离1,if original route table doesn’t involve N,add this item&#xff1b; else if original table’s relate…

Mysql 索引

索引 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09; 使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找到该行数据对应…

mongodb 分片集群部署

文章目录 mongodb 分片部署二进制安装三台config 配置shard 分片安装shard1 安装shard2 安装shard3 安装mongos 安装数据库、集合启用分片创建集群认证文件创建集群用户部署常见问题 mongodb 分片部署 二进制安装 mkdir -p /data/mongodb tar xvf mongodb-linux-x86_64-rhel7…

Python编程——深入了解不可变的元组

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、元组是什么 二、元组的定义 1、相同类型组成元组…

[C++]构造与毁灭:深入探讨C++中四种构造函数与析构函数

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…

05架构管理之持续集成-DevOps的理解与实现

专栏说明&#xff1a;针对于企业的架构管理岗位&#xff0c;分享架构管理岗位的职责&#xff0c;工作内容&#xff0c;指导架构师如何完成架构管理工作&#xff0c;完成架构师到架构管理者的转变。计划以10篇博客阐述清楚架构管理工作&#xff0c;专栏名称&#xff1a;架构管理…

分享一个vue-slot插槽使用场景

需求再现 <el-table-column align"center" label"状态" prop"mitStatus" show-overflow-tooltip />在这里&#xff0c;我想对于状态进行一个三目判断&#xff0c;如果为0那就是进行中&#xff0c;否则就是已完成&#xff0c;期初我是这样写…