工具平台对MLOps技术实践的支持

在【ai工程】02-ai工程(ai engineering)面面观中,提到gartner把ai工程化作为未来重要战略技术趋势,gartner认为ai工程主要由dataops、mlops和devops三部分核心技术组成,其目标是通过跨职能协作、自动化、快速反馈等方法,来缩短数据分析、机器学习和应用部署上线的周期,从而让ai模型快速、持续地提供业务价值。开发者基于传统的工具平台很难实现mlops等ai工程领域的实践,需要新的工具来完成对mlops等技术实践的支持。
kubeflow是一个基于k8s的机器学习平台,为开发者提供了从实验(notebook)、训练(mlops流水线)、调优以及部署、监控的端到端能力,也是当前排名第一的开源mlops工具。
kubeflow本身也是由一系列的开源工具组成,从它的架构图中不难看出,kubeflow主要提供三部分能力:
ml工具:主流开源框架支持,如tensorflow,pytorch等。
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 $usernewgrp 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 runninghigh-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.iojuju config oidc-gatekeeper public-url=http://10.64.140.43.nip.io  
然后配置访问的用户名和密码:
juju config dex-auth static-username=adminjuju 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。


MECE原则 随机约束的分类介绍
Java 中验证码的使用
idea如何运行main方法
亿纬船舶动力系列口碑产品为智慧港口建设注入新动力
一文知道边缘节点对工业物联网的重要性
工具平台对MLOps技术实践的支持
九款先进医疗机器人:人体内部自行组装治病
具有优化功率搜索和多种安全特性的完整高效的100 mA无线充电解决方案
让我们来看看都有哪些有趣的workshop吧!
叁仟智慧物联网太阳能路灯杆有哪些优势特点?
个人及入门存储市场复苏,一季度增长73.4%
环网柜基础知识介绍(开关柜、断路器柜,负荷开关柜)
点将科技自主设计和制作的TR-ZSY01蒸渗仪
浪潮发布业界首款 8颗GPU的AI服务器,可实现每秒千万亿次的AI计算性能
世界第一的芯片性能强悍,40万核心1.2万亿晶体管
28nm浪潮席卷 探究各晶圆代工厂产能状况
如何解决电源管理芯片效率不高的问题?
风口已经来临,机器视觉市场即将爆发!
莱斯大学的工程师们设计了一种新的、类似绷带的微针装置
CATV放大器及其调整