【AI工程】08-MLOps工具-在Charmed Kubeflow上运行MindSpore

news2025/1/13 14:09:46

作者:王磊
更多精彩分享,欢迎访问和关注:https://www.zhihu.com/people/wldandan

在【AI工程】02-AI工程(AI Engineering)面面观中,提到Gartner把AI工程化作为未来重要战略技术趋势,Gartner认为AI工程主要由DataOps、MLOps和DevOps三部分核心技术组成,其目标是通过跨职能协作、自动化、快速反馈等方法,来缩短数据分析、机器学习和应用部署上线的周期,从而让AI模型快速、持续地提供业务价值。开发者基于传统的工具平台很难实现MLOps等AI工程领域的实践,需要新的工具来完成对MLOps等技术实践的支持。

Kubeflow是一个基于K8S的机器学习平台,为开发者提供了从实验(Notebook)、训练(MLOps流水线)、调优以及部署、监控的端到端能力,也是当前排名第一的开源MlOps工具。

Kubeflow本身也是由一系列的开源工具组成,从它的架构图中不难看出,Kubeflow主要提供三部分能力:

  1. ML工具:主流开源框架支持,如Tensorflow,PyTorch等。
  2. Kubeflow应用及脚手架工具

(1). jupyter Notebook:开箱即用的Notebook,支持多AI框架。

(2). 分布式训练:支持Tensorflow、PyTorch等多框架的分布式训练(参数服务器形式)。

(3). 流水线管理:基于Argo的工作流管理,提供训练流水线管理能力。

(4). 镜像构建:将训练、notebook代码打包,以支持训练及部署任务。

(5). Serving部署:支持多AI框架的部署。

3. 周边配套:支持三方部署、监控等能力。

Canonical公司(Ubuntude发行商)在Kubeflow的基础上,包装了Charmed Kubeflow项目,提供构成KubeFlow最新版本的30多个应用程序和服务,并且让Kubeflow的部署更快,更简单。

在最新的1.6版本中,Charmed Kubeflow的Notebook原生支持了MindSpore,下面我们来看下如何基于Charmed Kubeflow 快速启动支持MindSpore的Notebook。

安装Charmed Kubeflow

要安装Kubeflow,首先得准备好K8S集群,然后通过juju这个运维管理工具安装Charmed Kubeflow。

通过MicroK8S工具部署K8S集群

Canonical提供了一个和Minikube类似的工具MicroK8S,通过Snap工具可以快速完成其安装。

在Ubuntu 20.04系统上执行如下命令:

sudo snap install microk8s --classic --channel=1.22/stable

安装完成后,为了方便使用,可以将当前的用户加入到microk8s的用户组中。

sudo usermod -a -G microk8s $USER
newgrp microk8s

确认用户可以访问kubectl的配置文件。

sudo chown -f -R $USER ~/.kube

MicroK8s在安装的时候就会启动,为了运行kubeflow,我们还需要一些额外的能力,比如DNS(服务发现)、存储、ingress(负载均衡),MicroK8S可以以插件的形式快速的添加这些能力

microk8s enable dns storage ingress metallb:10.64.140.43-10.64.140.49

整个安装需要花费一点时间,通过microk8s status --wait-ready可以确认MicroK8S是否安装成功。

microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
……

MicroK8S提供了kubectl命令,但是每次都需要在命令行输入microk8s kubectl,可以考虑增加一个别名alias kubectl='microk8s kubectl'方便使用,其次,如果集群的配置信息没有写到~/.kube/中,可以通过 microk8s config > ~/.kube/config完成覆写。

通过juju安装Charmed Kubeflow

Charmed Operator Lifecycle Manager (OLM)是一个应用(以特殊格式封装,称为Charm Operator)编排的平台,它可以方便的管理混合云中部署在虚机、K8S集群、裸机上的应用,对应用进行安装、配置、维护及更新。Canonical提供了这样的OLM框架,名为Juju,同时也提供了juju这个同名的命令行工具。

首先,我们使用sudo snap install juju --classic命令安装juju。其次,通过juju bootstrap microk8s在MicroK8S部署好的集群上安装juju的controller,作为juju在集群中的代理,管理Kubeflow应用。最后为juju在集群上添加kubeflow的命名空间juju add-model kubeflow

接下来,通过juju deploy kubeflow-lite --trust命令即可完成kubeflow的安装,通过watch -c juju status --color可以看到kubeflow组件准备状态。

最后,通过juju refresh jupyter-ui --channel=latest/edge命令确保jupyter-ui更新到最新的版本,包含MindSpore的Notebook镜像。

配置kubeflow

Kubeflow安装完成后需要做下简单的配置才能访问。首先配置访问的地址:

juju config dex-auth public-url=http://10.64.140.43.nip.io
juju config oidc-gatekeeper public-url=http://10.64.140.43.nip.io

然后配置访问的用户名和密码:

juju config dex-auth static-username=admin
juju config dex-auth static-password=ucantseeme

接下来在浏览器中输入http://10.64.140.43.nip.io,以及刚设置的用户密码,就可以看到Kubeflow完整的Dashboard了。

运行支持MindSpore的Notebook

在Kubeflow上运行Notebook非常简单。在Notebook tab选择创建notebook,输入notebook名称MindSpore,镜像选择jupyterlab,在列表中使用mindspore/jupyter-mindspore这个镜像,然后分配合适的CPU和内容资源,点击创建即可。

在Notebook界面很快就可以看到创建完成的提示。

点击Connect,我们就可以在另一个浏览器tab页打开notebook了。这里我们可以使用MindSpore官网现成的notebook,通过notebook页面将这个手写数字识别的notebook上传上去。

点击执行,就可以看到这个notebook直接运行起来了,不用额外的去安装MindSpore以及Vision套件。

总结

这是MindSpore和Charmed Kubeflow集成的第一步,后续我们还将持续的把MindSpore更多能力集成到Charmed Kubeflow中,方便开发者能在MlOps平台上更方便的使用MindSpore。

参考资料

  1. Charmed Kubeflow Quick Start

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于webpack(v5.74.0)的模块联邦原理

在webpack中模块联邦的实现主要依赖于两个插件ContainerReferencePlugin和ContainerPlugin,ContainerPlugin是用来添加入口依赖并给当前依赖添加异步依赖,ContainerReferencePlugin用来添加解析用户的请求并分析是否是远程模块,然后加载远程模…

使用 JPA、Hibernate 和 Spring Data JPA 进行审计

1. 概述 在ORM的上下文中,数据库审计意味着跟踪和记录与持久实体相关的事件,或者只是实体版本控制。受 SQL 触发器的启发,这些事件是对实体的插入、更新和删除操作。数据库审核的好处类似于源版本控制提供的好处。 在本教程中,我…

Shelby American 汽车 NFT 系列来袭!

我们在 The Sandbox 上推出 Shelby NFT 作品集,加入我们吧!该系列包含 Carroll Shelby 制造的一些最稀有和最抢手的汽车,也是现实生活中最具收藏价值的汽车。这些汽车构成了最伟大的汽车历史,也是传奇人物 Carroll Shelby 的伟大代…

为什么开源在线表单工具能做好数据管理?

在数字化时代,数据的有效应用和管理可以说是企业的无形资产,做好数据管理既能提升办公效率,又能帮助企业从规律的数字化管理中获取高效的管理策略。那么,什么样的开源在线表单工具可以实现这一目的?对于企业而言&#…

Axure药企内部管理平台+企业内部管理系统平台

这是一款根据药企的需求设计的内部管理系统,此系统主要是针对市场部和销售部的管理,此作品选择了管理员和地区经理两个角色进行了设计, 设计软件:Axure8.1(兼容9和10) 作品类型:实战原型 其主要…

抓包神器之Charles(绕过代理屏蔽)以及证书校验绕过

简介 大多数进行渗透测试的时候都可以使用burp抓包,但有的app的部分功能会使用okhttp框架,这种框架会使App不使用默认的系统代理,解决方法就是通过proxy的方式走charles,下面是具体使用方法; Charles 是常用的网络封包截取工具, 通过将自己设置成系统的网络访问代{过}{…

11.21SSM-spring 第一天学习总结

1 Spring 是什么? 针对Bean 生命周期进行管理的轻量级容器 IOC : 浅谈IOC--说清楚IOC是什么_ivan820819的博客-CSDN博客_ioc 软件设计六大原则 : 设计模式六大原则 六大设计原则 1.开闭原则 定义:一个软件实体如类、模块和函数应该对扩展开放&a…

JavaScript/uni-app对接海康ISC openapi

JavaScript/uni-app对接海康ISC openapiJavaScript实现HMAC SHA256下载安装使用crypto-js使用签名生成工具参考JavaScript实现HMAC SHA256 Run the code online with this jsfiddle. Dependent upon an open source js library calledhttp://code.google.com/p/crypto-js/.<…

如何将驱动编译为kernel 模块

前言&#xff1a; 本文章目标平台是PC Linux,不包含其他平台。 执行下面的步骤之前&#xff0c;请先编译kernel通过。 linux KO编译 将驱动程序源码集成到Linux内核中&#xff1a; 将驱动源码文件放到drivers/net/wireless并命名 自己简单创建的几个没有任何关联的源文件&…

力扣(LeetCode)30. 串联所有单词的子串(C++)

滑动窗口哈希表 哈希表 tottottot 存 wordswordswords 所有单词的出现次数。 维护滑动窗口&#xff0c;窗口长度 mwm\times wmw &#xff0c; mmm 是单词数量 www是单词长度 &#xff0c; 窗口长度对应可行解的长度。哈希表 wdwdwd 维护滑动窗口内每个单词的出现次数。 维护…

jstack问题定位分析

目录 1、jstack是什么 2、jstack的使用 1、jstack是什么 jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用来打印出给定的java进程ID或者core file或者远程调试服务的java堆栈信息。 主要是用于生成java虚拟机当前时刻的线程快照&#xff0c;线程快照是当前java虚拟机…

记录运行项目的一些报错

一、git pull 报错 There is no tracking information for the current branch. Please specify whic... There is no tracking information for the current branch.Please specify which branch you want to merge with.See git-pull(1) for detailsgit pull <remote>…

身份安全的零信任方法

一、什么是零信任&#xff1f; 零信任是一组不断发展的网络安全范例术语&#xff0c;它将组织的防御措施从静态的、基于网络的边界转移到关注用户、资产和资源。这是一种安全心态&#xff0c;在明确验证之前&#xff0c;每个传入连接都被视为潜在的恶意请求。这个概念是由世界…

【特征选择】基于二元多邻域人工蜂群 (BMNABC) 特征选择问题(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

1.EdgeX实战 Ubuntu18.04搭建运行环境

文章目录前言:1、搭建Ubuntu18.04服务器平台2、安装docker和docker-compose3、运行EdgeX4、使用浏览器访问EdgeX前言: 想着把之前arduino和树莓派搭建的物联网平台迁移到EdgeX上来&#xff0c;原因有二&#xff1a; 不想去造轮子&#xff0c;自己从零开始写一个物联网的框架&…

影响 SEO 的排名优化的因素

我们在做网站SEO运营的时候&#xff0c;经常会遇到没有排名的情况。即使我们每天保持原创内容的更新和发布&#xff0c;也没有用。这时候就要马上检查网站存在哪些问题&#xff0c;及时解决&#xff0c;让我们的日常努力尽快盈利。以下因素按米贸搜排序&#xff0c;影响SEO排名…

凡亿教育嘉立创宠粉福利,9.9元秒杀PCB多层板设计实战特训班

层林浸染&#xff0c;秋意渐浓 随着双11活动的落幕 意味着工程师最忙碌的时候即将结束 然而在这多事之秋&#xff0c;还是项目高峰期 想必很多工程师都很少过好双11吧 这可不行&#xff01;&#xff01;&#xff01; 别人家有的&#xff0c;我们家的工程师都要有&#xff01;为…

pytest学习和使用10-Pytest中的测试用例如何跳过执行?

10-Pytest中的测试用例如何跳过执行&#xff1f;1 引入2 Unittest中的用例跳过3 pytest.mark.skip4 pytest.skip()5 pytest.mark.skipif()6 跳过标记7 pytest.importorskip1 引入 有时候我们需要对某些指定的用例进行跳过&#xff0c;或者用例执行中进行跳过&#xff0c;在Uni…

高项 成本管理论文

4个过程 1&#xff0c;规划成本&#xff1a;为规划、管理、花费和控制项口成本而制定政策、程序和文档的过程。 2&#xff0c;估算成本&#xff1a;对完成项目活动所需资金进行近似估算的过程。 3&#xff0c;制定预算&#xff1a;汇总所有单个活动或工作包的估算成本&…

【面试题】JavaScript面试题详细总结(一)

js基础部分 01 值类型与引用类型 1.1 问法 js判断数据类型&#xff1f;js值类型与引用类型有哪些&#xff1f;值类型与引用类型的区别&#xff1f; 1.2 介绍 JavaScript存储数据两个区域&#xff1a;栈和堆 栈&#xff1a;通常空间是固定的&#xff08;占据空间小、大小固定&…