更多内容关注专辑:

机器学习实战

1 介绍

Kubeflow是在k8s平台之上针对机器学习的开发、训练、优化、部署、管理的工具集合,内部集成的方式融合机器学习中的很多领域的开源项目,比如Jupyter、tfserving、Katib、Fairing、Argo等。可以针对机器学习的不同阶段:数据预处理、模型训练、模型预测、服务管理等进行管理。只要安装了k8s,可以在本地、机房、云环境中部署。

2 开发工具集

机器学习的目标最终还是为了在生产环境或者业务场景中使用,但这个过程却是很复杂的,需要进行数据加载、切分、预处理、特征工程、模型训练、验证、超参数调优、模型部署等等;为了正常使用模型,还需要在模型上线后,持续不断的输入数据才能得到预测的结果。

人工构建整个过程并进行维护是很复杂的,使用Kubeflow可以节省很多成本。比如在构建模型时,可以选择你喜欢的算法框架进行模型开发,试验阶段可以通过Jupyter进行交互式的编程,基于Pipeline构建整个训练过程的工作流实现各种处理逻辑,基于Katib进行超参数的自动优化;生产环境中,可以使用TFJob等进行分布式训练,基于KFServing等进行在线模型的服务,基于Metadata或TensorBoard进行模型的监控。

3 使用场景

扩展性:Kf基于k8s可以达到可扩展、可移植、分布式ML平台, 通过Kf你可以轻松管理整个AI生命周期,比如在模型部署的时候自动进行扩容、在试验阶段自由创建笔记本。由于底层基于K8s来提供一致性与高可靠,使用者可以更聚焦于上层的算法模型设计,而不用过多的关注底层构建。

迭代性:构建高质量的机器学习模型可能需要快速的迭代,Kf提供友好的UI界面支持快速追踪对比实验结果,你可以很方便的决定哪个模型训练效果更好。Kf内部提供Jupyter笔记本,支持如Tensorflow、Pytorch等流行的深度学习框架。模型训练配置简单,方便进行分布式训练、部署,提升端到端的开发过程。

混合性:机器学习模型的训练可能涉及多个团队、多个集群和云环境的共享,Kf支持主流的云平台,提供各个环境之间的移植性。你可以在本地开发模型、在集群的GPU上进行训练、最后部署到云环境中,快速的开发模式和高效的部署使得整个过程就像单机操作一样。

超参调优:在模型训练中,超参数调优是很关键也很复杂的过程,对模型最终的准确度和性能有很大的影响,手动尝试各种超参数的组合非常浪费时间。Kf通过Katib来支持自动超参数优化,这种自动优化会节省大量的计算时间,提高模型优化的效率。

持续集成:Kf目前并没有这个方面成型的产品,但是可以通过Pipeline组件来实现。Pipeline支持创建可重复的工作流,可以自动触发整个工作流的重跑以及模型的训练。

4 部署

Kubeflow的部署其实很简单,主要是依赖的镜像大多出自Google因此会遇到很多网络问题。解决办法推荐是通过阿里云镜像手动下载docker镜像,然后tag成目标镜像;或者直接修改kustomize中的镜像地址。

安装时需要下载kfctl并按照文档配置环境变量,比如我试过Ubuntu 18,可以参考下面的文档:https://www.kubeflow.org/docs/started/k8s/kfctl-k8s-istio/,大致流程如下:

1 到地址中下载对应的kfctl,darwin为mac,linux为其他,不支持windows
https://github.com/kubeflow/kfctl/releases/tag/v1.0.2 2 压缩包解压缩
tar -xvf kfctl_v1.0.2_<platform>.tar.gz 3 配置环境变量 vi /etc/profile
export PATH=$PATH:"<path-to-kfctl>"
export KF_NAME=<自定义名称>
export BASE_DIR=<path to a base directory>
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_k8s_istio.v1.0.2.yaml" 4 更新环境变量
source /etc/profile 5 执行命令
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl apply -V -f ${CONFIG_URI} 6 查看安装服务
kubectl -n kubeflow get all

整个安装过程很缓慢,尤其是前期需要安装cert-manager进行权限控制,需要等服务正常。

中间会有大量的镜像报错ImagePullBackOff,这表示镜像拉取失败。解决办法:

1 查看具体pod的详情
kubectl describe pod admission-webhook-bootstrap-stateful-set-0 -n kubeflow 2 去阿里云镜像站搜索镜像
docker pull registry.cn-hangzhou.aliyuncs.com/pigeonw/ingress-setup 3 重命名
sudo docker tag registry.cn-hangzhou.aliyuncs.com/pigeonw/ingress-setup:latest gcr.io/kubeflow-images-public/ingress-setup:latest 4 修改kustomize中的配置
cd ./kustomize/webhook/base
sudo vim deployment.yaml
修改镜像拉取策略
imagePullPolicy: IfNotPresent
原来如果是Always表示总是会去拉取远程镜像,IfNotPresent表示本地不存在时才会拉取 5 修改完成后等待一会,如果状态还没有变成Running,可以执行
kfctl apply -f kfctlxxx.yaml 重新创建

都部署成功后,大致可以看到如下的运行状态,仅供参考:





5 使用

部署成功后,通过端口映射可以支持在外部访问:

export NAMESPACE=istio-system
kubectl port-forward --address 0.0.0.0 -n ${NAMESPACE} svc/istio-ingressgateway 8080:80

然后访问目标地址即可,如localhost:8080,自定义namespace后可以看到如下画面:

后面将会分享Notebook、Pipeline、Katib等的使用,感谢关注。

Kubeflow实战: 入门介绍与部署实践的更多相关文章

  1. Ceph实战入门之安部署篇

    最近Ceph官方发布了luminous长久支持版,新版本增加了很多有意思的功能,但是入门还是先从部署安装开始. 环境说明 在Win10下安装VMware® Workstation 12 Pro软件,用 ...

  2. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  3. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  4. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  5. 基于AWS的自动化部署实践

    过年前,我给InfoQ写了篇文章详细介绍我们团队在过去4年基于AWS的自动化部署实践.文章包括了:为什么选择AWS.AWS上自动化部署的优势和挑战.我们的解决方案,以及和AWS DevOps方案(Op ...

  6. MySQL入门介绍(mysql-8.0.13)

    MySQL入门介绍(mysql-8.0.13单机部署) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL数据库介绍 1>.MySQL是一种开放源代码的关系型数据库 ...

  7. 学习Mysql过程中拓展的其他技术栈:Docker入门介绍

    一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...

  8. Redis介绍及部署在CentOS7上(一)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  9. 《OpenStack部署实践》

    <OpenStack部署实践> 基本信息 作者: 张子凡 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115346797 上架时间:2014-2-27 出版日期:2014 ...

随机推荐

  1. OSCP Learning Notes - Information Gathering

    Common Tools Google Exploit-DB/Google Hacking DB WHOIS Netcraft theharvester Example: Google search: ...

  2. 想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  3. git pull 放弃本地修改, 全部使用远端代码

    git强制覆盖:    git fetch --all    git reset --hard origin/master    git pull git强制覆盖本地命令(单条执行):    git ...

  4. web自动化 -- HTMLreport(一)测试报告自定义测试用例名,重写ddt

    一.需求痛点 1.HTMLreport测试报告的用例名不明确 2.希望可以自定义HTMLreport测试报告的用例名 3.痛点截图 二.解决办法 1.原因分析 HTMLreport测试报告中的用例名是 ...

  5. jsp课堂笔记1

    http协议:规范浏览器和服务器交互或通信的规则 https:基于http实现,比http更加安全,提供了身份验证和通信内容加密  服务器:1.配置比较高的电脑  2.他就是一个应用 http1.0: ...

  6. MySQL组复制MGR(二)-- 组复制搭建

    (一)主机操作 (1)路由信息vmnet5 192.168.10.0 (2)主机信息 主机名称 IP地址 操作系统版本 数据库版本 mgr-node1 192.168.10.11 centos 7.4 ...

  7. integrator.setTimeout 设置一个超时时间,超过这个时间之后,扫描的 Activity 将会被 finish 。

    integrator.setTimeout 设置一个超时时间,超过这个时间之后,扫描的 Activity 将会被 finish . +++++++++++++++++++ 经查,没有这个功能

  8. 感性认识JWT

    常见的认证机制 今天我么聊一聊JWT. 关于JWT,相信很多人都已经看过用过,他是基于json数据结构的认证规范,简单的说就是验证用户登没登陆的玩意.这时候你可能回想,哎哟,不是又那个session么 ...

  9. Centos 7下编译安装Mysql

    (1)官网下载地址:https://dev.mysql.com/downloads/mysql/ 此处下载的是 mysql-boost-5.7..tar.gz 百度云下载地址:https://pan. ...

  10. STL入门--sort,lower_bound,upper_bound,binary_search及常见错误

    首先,先定义数组 int a[10]; 这是今天的主角. 这四个函数都是在数组上操作的 注意要包含头文件 #include<algorithm> sort: sort(a,a+10) 对十 ...