KubeFlow安装指南

【摘要】 Kubeflow是Google推出的基于kubernetes环境下的机器学习组件,通过Kubeflow可以实现对TFJob等资源类型定义,可以像部署应用一样完成在TFJob分布式训练模型的过程。

 

8c8213f350aa123d6708e5df5c7de9975e8.jpg 

组件

http://pachyderm.io/ 

http://www.argoproj.io/

Kubeflow使用场景

  • 希望训练tensorflow模型且可以使用模型接口发布应用服务在k8s环境中(eg.local,prem,cloud)

  • 希望使用Jupyter notebooks来调试代码,多用户的notebook server

  • 在训练的Job中,需要对的CPU或者GPU资源进行调度编排

  • 希望Tensorflow和其他组件进行组合来发布服务

依赖库

  • ksonnet 0.11.0以上版本 /可以直接从github上下载,scp ks文件到usr/local/bin

  • kubernetes 1.8以上(直接使用CCE服务节点,需要创建一个CCE集群和若干节点,并为某个节点绑定EIP)

  • kubectl tools

 1、安装ksonnet

 ksonnet 安装过程,可以去网址里面查看ks最新版本

wget https://github.com/ksonnet/ksonnet/releases/download/v0.13.0/ks_0.13.0_linux_amd64.tar.gz
tar -vxf ks_0.13.0_linux_amd64.tar.gz
cd -vxf ks_0.13.0_linux_amd64
sudo cp ks /usr/local/bin

安装完成后

image.png

2、安装kubectl工具

wget https://cce-storage.obs.cn-north-1.myhwclouds.com/kubectl.zip
yum install unzip
unzip kubectl.zip
cp kubectl /usr/local/bin/
#在集群页面查看kubectl工具
#下载并复制下图中的config文件内容
mkdir /root/.kube/
touch /root/.kube/config
vi /root/.kube/config
#黏贴内容 :wq!保存
#因为这边节点已经绑定了EIP,直接选择集群内访问即可
kubectl config use-context internal

image.png

安装成功后执行kubectl version查看版本信息是否符合要求

image.png

3、安装kubeflow

配置参数介绍

  • KUBEFLOW_SRC:下载文件存放的目录

  • KUBEFLOW_TAG:代码分支的tag,如Master(当前还有一个v0.2分支)

  • KFAPP:用来保存deployment、tfjob等应用的目录,ksonnet app会保存在${KFAPP}/ks_app目录下面

  • KUBEFLOW_REPO: kubeflow仓库路径,可以自己load下来,放到指定位置。具体做法:curl -L -o /root/kubeflow/kubeflow.tar.gz https://github.com/kubeflow/kubeflow/archive/master.tar.gz;tar -xzvf kubeflow.tar.gz;KUBEFLOW_REPO=/root/kubeflow/kubeflow-master/

安装过程

mkdir ${KUBEFLOW_SRC}
cd ${KUBEFLOW_SRC}
export KUBEFLOW_TAG=<version>
curl https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_TAG}/scripts/download.sh | bash #如果要自行安装可以看下download.sh 这个脚本${KUBEFLOW_REPO}/scripts/kfctl.sh init ${KFAPP} --platform none  #初始化,会生成一个KFAPP目录
cd ${KFAPP} 
${KUBEFLOW_REPO}/scripts/kfctl.sh generate k8s                   #生成需要的component
${KUBEFLOW_REPO}/scripts/kfctl.sh apply k8s                      #生成对应的资源

4、查看当前启动的工作负载

image.png

image.png

  • Argo 基于K8s的工作流引擎  https://argoproj.github.io/

  • Ambassador  API Gateway  https://www.getambassador.io/

  • tf-operator   https://github.com/kubeflow/tf-operator/blob/master/developer_guide.md

对外暴露了的workflow和jupyter notebook,提供可视化的交互

image.png

image.png

5、下载kubeflow官方的example:基于TensorFlow的分布式CNN模型训练

执行脚本

CNN_JOB_NAME=mycnnjob
VERSION=v0.2-branch
KS_APP=cnnjob
KF_ENV=default
ks init ${KS_APP}
cd ${KS_APP}
ks registry add kubeflow-git github.com/kubeflow/kubeflow/tree/${VERSION}/kubeflow
ks pkg install kubeflow-git/examples
ks generate tf-job-simple ${CNN_JOB_NAME} --name=${CNN_JOB_NAME}
ks apply ${KF_ENV} -c ${CNN_JOB_NAME}
#

查看定义TFjob资源

启动了一个ps(相当于参数服务器)和worker(相当于计算服务器)

image.png

tfjob的yaml定义

apiVersion: kubeflow.org/v1alpha2
kind: TFJob
metadata:annotations:ksonnet.io/managed: '{"pristine":"H4sIAAAAAAAA/+yRTWvcTAzH78/H0Nle7zpPaGPwqSWUHtqlCc2hBCOPZe/U84ZGs8Fd9ruXcUi3L5+g0DkM0l8aifn/ToBBfyaO2jtoYE49jcY/bTxP1XGHJhywhgJm7QZo4P72ve+hAEuCAwpCcwKDPZmYozl650g22lfK2+AdOYEG7KKc++p7OBfg0NLP0rMSA6osDzRiMpIbYyCVZ8r4iYLRCu8CqXXLfr2FbDAolOOXXuWdoHbEEZovJ0CecgBhkYN3UICMnXKu68mpg0We4yYsUEBZ9ijq0EX9jdqrelWsH8i0TNGRXG9X6YissTfUpTCgUBuQ0ZIQd5H4SLw2jSbFQxdl8Ela4USr6pLtppBiu1tT4xWa7vJ+oKNW1KqQ1vLvKQp2o2eL0n549/AGHgvQFqds2KQ4u/1CrZKxvPyuVCE1x3q7e7Wrt3XZD9hf39yUg2ZZyvr1/zhewQ8iQi56zkOggCfPs3bTW83QQOWD/Dq4iop1kFj9YSicHwtgioIse2+0WqCBj+4WtUlMcD4XF6D3S8iL93cZ94PnmThD5OdqhGZX/KP8d1LO57/vAAAA//8BAAD//zMKTHZaBAAA"}'clusterName: ""creationTimestamp: 2018-09-26T15:33:07Zgeneration: 0labels:app.kubernetes.io/deploy-manager: ksonnetksonnet.io/component: mycnnjobname: mycnnjobnamespace: defaultresourceVersion: "2293964"selfLink: /apis/kubeflow.org/v1alpha2/namespaces/default/tfjobs/mycnnjobuid: 777da1bb-c1a1-11e8-8661-fa163e4006b8
spec:cleanPodPolicy: RunningtfReplicaSpecs:PS:replicas: 1restartPolicy: Nevertemplate:metadata:creationTimestamp: nullspec:containers:- args:- python- tf_cnn_benchmarks.py- --batch_size=32- --model=resnet50- --variable_update=parameter_server- --flush_stdout=true- --num_gpus=1- --local_parameter_device=cpu- --device=cpu- --data_format=NHWCimage: gcr.io/kubeflow/tf-benchmarks-cpu:v20171202-bdab599-dirty-284af3name: tensorflowports:- containerPort: 2222name: tfjob-portresources: {}workingDir: /opt/tf-benchmarks/scripts/tf_cnn_benchmarksrestartPolicy: OnFailureWorker:replicas: 1restartPolicy: Nevertemplate:metadata:creationTimestamp: nullspec:containers:- args:- python- tf_cnn_benchmarks.py- --batch_size=32- --model=resnet50- --variable_update=parameter_server- --flush_stdout=true- --num_gpus=1- --local_parameter_device=cpu- --device=cpu- --data_format=NHWCimage: gcr.io/kubeflow/tf-benchmarks-cpu:v20171202-bdab599-dirty-284af3name: tensorflowports:- containerPort: 2222name: tfjob-portresources: {}workingDir: /opt/tf-benchmarks/scripts/tf_cnn_benchmarksrestartPolicy: OnFailure
status:completionTime: 2018-09-26T15:33:58Zconditions:- lastTransitionTime: 2018-09-26T15:33:07ZlastUpdateTime: 2018-09-26T15:33:07Zmessage: TFJob mycnnjob is created.reason: TFJobCreatedstatus: "True"type: Created- lastTransitionTime: 2018-09-26T15:33:07ZlastUpdateTime: 2018-09-26T15:33:10Zmessage: TFJob mycnnjob is running.reason: TFJobRunningstatus: "False"type: Running- lastTransitionTime: 2018-09-26T15:33:07ZlastUpdateTime: 2018-09-26T15:33:58Zmessage: TFJob mycnnjob is failed.reason: TFJobFailedstatus: "True"type: FailedstartTime: 2018-09-26T15:33:10ZtfReplicaStatuses:Chief: {}Master: {}PS: {}Worker: {}

6、分布式TensorFlow编程

  • 具体参考https://www.tensorflow.org/deploy/distributed

  • 样例:使用worker和parameter servers进行矩阵点乘运算 https://github.com/tensorflow/k8s/tree/master/examples/tf_sample

     

     

     

1
2
3
4
5
6
7
8
for job_name in cluster_spec.keys():for i in range(len(cluster_spec[job_name])):d = "/job:{0}/task:{1}".format(job_name, i)with tf.device(d):a = tf.constant(range(width * height), shape=[height, width])b = tf.constant(range(width * height), shape=[height, width])c = tf.multiply(a, b)results.append(c)
  • tf.train.ClusterSpec为这个集群内部的master调度运算的信息。

     

(1、ps类型的job定义需要计算的参数值,worker对参数值进行计算,2、参数的更新以及传输,ps向worker发送更新后的参数,worker返回给ps计算好的梯度值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 with tf.device("/job:ps/task:0"):weights_1 = tf.Variable(...)biases_1 = tf.Variable(...)with tf.device("/job:ps/task:1"):weights_2 = tf.Variable(...)biases_2 = tf.Variable(...)with tf.device("/job:worker/task:7"):input, labels = ...layer_1 = tf.nn.relu(tf.matmul(input, weights_1) + biases_1)logits = tf.nn.relu(tf.matmul(layer_1, weights_2) + biases_2)# ...train_op = ...with tf.Session("grpc://worker7.example.com:2222") as sess:for _ in range(10000):sess.run(train_op)

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

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

相关文章

c#字符相似度对比通用类

本类适用于比较2个字符的相似度&#xff0c;代码如下&#xff1a; View Code using System;using System.Collections.Generic;using System.Text;public class StringCompute{#region 私有变量/// <summary>/// 字符串1/// </summary>private char[] _ArrChar1;/…

linux 日记函数,每日记一些php函数,jQuery函数和linux命令(一)

每天记一些php函数&#xff0c;jQuery函数和linux命令(一)简介&#xff1a;学习完了php和jQuery之后&#xff0c;对函数的记忆不到位&#xff0c;导致很多函数没记住&#xff0c;所以为了促进自己的记忆&#xff0c;每天花一点时间来写这个博客。时间&#xff1a;2016-12-18 …

蒋家骏_百度百科

蒋家骏_百度百科蒋家骏

基于Kubernetes的Spark部署完全指南

基于Kubernetes的Spark部署完全指南 【编者的话】本文是在Kubernets上搭建Spark集群的操作指南&#xff0c;同时提供了Spark测试任务及相关的测试数据&#xff0c;通过阅读本文&#xff0c;你可以实践从制作Spark镜像、搭建Spark容器集群&#xff0c;到在集群上运行测试任务的…

javascript数字格式化通用类——accounting.js使用

简介 accounting.js 是一个非常小的JavaScript方法库用于对数字&#xff0c;金额和货币进行格式化。并提供可选的Excel风格列渲染。它没有依赖任何JS框架。货币符号等可以按需求进行定制。 代码内容及下载地址 accounting.js代码如下&#xff1a; View Code /*!* accounting…

linux清除cpu,解决kswapd0 CPU占用率高的问题-清除病毒

连接服务器时发现cpu使用率100%&#xff0c;使用top命令查看是kswapd0进程占用cpu极高百度下后知道kswapd0进程的作用&#xff1a;它是虚拟内存管理中&#xff0c;负责换页的&#xff0c;操作系统每过一定时间就会唤醒kswapd &#xff0c;看看内存是否紧张&#xff0c;如果不紧…

Apache+Mysql+php+ZenTaoPMS安装配置文档

基于ApacheMysqlphpZenTaoPMS安装配置一、Apache安装配置tar zxvf httpd-2.2.23.tar.gzcd httpd-2.2.23mkdir –p /usr/local/app/apache2./configure --prefix/usr/local/app/apache2 --enable-so \--enable-maintainer-mode --enable-rewrite #添加后面的参数是为了解析s…

富编译器汇总及二次开发Demo

富文本编译器汇总 名称总大小当前版本官方地址扩展方法xhEditor1.43 MBv1.1.14http://xheditor.comhttp://xheditor.com/demos/demo09.htmlMarkitUp98.7 KBv1.1.13http://markitup.jaysalvat.com/home在set.js里设置开发。jwysiwyg1.52 MBv0.98https://github.com/akzhan/jwys…

docker安装nginx并配置SSL到个人博客

1 准备 1.已安装好docker环境 2.已申请好域名 2 申请SSL证书 我使用的是腾讯云&#xff0c;申请免费的TrustAsia的SSL证书&#xff0c;阿里云等或者其他平台一般都会提供TrustAsia的SSL证书的 填好域名等相关信息&#xff0c;一般一天就可以下载证书了 3 docker安装Nginx …

redhat linux 6.5 vnc,redhat 6.5 YUM安装kvm 并用VNC远程管理

安装完REDHAT&#xff0c;我们首先配置yum源先卸载系统原来的YUM包一、配置redhat yum源#rpm -aq|grep yum|xargs rpm -e --nodeps下载YUM源&#xff0c;我用的是&#xff11;&#xff16;&#xff13;的# wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin…

Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用

简介 本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用&#xff0c;用途比较多的应该是例如采集类的功能&#xff0c;采集到的html字符串要怎样处理是一个头痛的问题&#xff0c;如果是截取就太麻烦了而且容易出错。所有就用到本文的第三方dll来处理了。 下载…

Mongo数据库安装成Windows服务

Mongo数据库安装成Windows服务每次运行mongod --dbpath D:/MongoDB/data命令行来启动MongoDB实在是不方便&#xff0c; 把它作为Windows服务&#xff0c;这样就方便多了。1、代码示例&#xff1a;D:\MongoDB\bin>mongod --dbpath D:\Work\MongoDB\Data --directoryperdb --l…

用DOSBox运行老游戏

DOSBox0.74-3-win32-installer.exe下载地址&#xff1a; https://nchc.dl.sourceforge.net/project/dosbox/dosbox/0.74-3/DOSBox0.74-3-win32-installer.exe 金庸群侠传&#xff1a;https://dos.zczc.cz/games/%E9%87%91%E5%BA%B8%E7%BE%A4%E4%BE%A0%E4%BC%A0/download 新版本…

HttpWebRequest采集读取网站挂载Cookie的通用方法

Asp.net 版本 HttpWebRequest采集时添加&#xff1a;httpWebRequest.CookieContainer new CookieContainer();就能远程挂载上cookie,那么怎样去读取挂载上的cookie呢&#xff1f; 下面方法为大家解除烦恼。 遍历方法&#xff1a; public static List<Cookie> GetAllC…

最小公约数最大公倍数c语言for循环,C语言的那些题(四)——最大公约数和最小公倍数...

今天&#xff0c;和大家分享一道关于求最大公约数和最小公倍数的题。关于最大公约数和最小公倍数可以算是一个学编程语言常见的题目&#xff0c;这里我和大家分享两种解法&#xff0c;循环法和辗转相除法。我们先看一下题目&#xff1a;输入两个数&#xff0c;求最大公约数和最…

宿主机为linux、windows分别实现VMware三种方式上网(转)

一、VMware三种方式工作原理1 Host-only连接方式 让虚机具有与宿主机不同的各自独立IP地址&#xff0c;但与宿主机位于不同网段&#xff0c;同时为宿主主机新增一个IP地址&#xff0c;且保证该IP地址与各虚机IP地址位于同一网段。最终结果是新建了一个由所有虚机与宿主主机所构…

摔倒、摔倒检测数据集

近期学习摔倒检测&#xff0c;接触摔倒数据集&#xff0c;自学笔记&#xff0c;仅用作个人复习。 the UR fall detection dataset (URFD)the fall detection dataset (FDD) UR Fall Detection Dataset &#xff08;University of Rzeszow - 热舒夫大学&#xff09; 数据集网…

visual studio内置“iis”组件提取及二次开发

简介 visual studio安装后会自带小型的“iis”服务器&#xff0c;本文就简单提取一下这个组件&#xff0c;自己做一个小型“iis”服务器吧。先来说用途吧&#xff08;废话可绕过&#xff09;&#xff0c;比如在服务器上没有安装iis&#xff0c;或者给客户演示asp.net程序&…

c语言 正号运算符 作用,C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,...

1级(左结合)   () 圆括号&#xff1b;[]下标运算符&#xff1b;->指向结构体成员运算符&#xff1b;. 结构体成员运算符.   2级(右结合)   !逻辑非运算符&#xff1b;~按位取反运算符&#xff1b;前缀增量运算符&#xff1b;--前缀减量运算符&#xff1b;正号运算符&a…

每一个问题都是一把锁

每一个问题都是一把锁&#xff0c;你要相信&#xff0c;世界上一定存在一把钥匙可以打开这把锁&#xff0c;你也一定能找到这把钥匙。