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;/…

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…

用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 新版本…

宿主机为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程序&…

禁用 Microsoft 软件保护平台服务

以前没怎么注意&#xff0c;老觉得cup没事就声音很大&#xff0c;后来发现这玩意儿占用巨多cup&#xff0c;希望有大佬帮助解决一下&#xff0c;谢谢 解决方法&#xff1a; 首先使用【Win】 【R】组合快捷键&#xff0c;快速打开运行命令框&#xff0c;在打开后面键入命令&am…

asp.net mvc3.0安装失败之终极解决方案

安装失败截图 原因分析 因为vs10先安装了sp1补丁&#xff0c;然后安装的mvc3.0&#xff0c;某些文件被sp1补丁更改&#xff0c;导致“VS10-KB2483190-x86.exe”安装不了&#xff0c;造成安装失败。 解决方案 方法1&#xff1a; 解压mvc安装包&#xff08;AspNetMVC3Setup.e…

asp.net mvc3.0第一个程序helloworld开发图解

步骤一&#xff1a;新建asp.net mvc3.0项目 &#xff08;选择Razor模板&#xff09; 步骤二&#xff1a;创建控制器 步骤三&#xff1a;控制器源码内右键创建对应视图 步骤四&#xff1a;控制器内添加代码 步骤五&#xff1a;视图页面输出内容 步骤六&#xff1a;F5调试

在Windows系统中下载并安装Docker-desktop

在Windows系统中下载并安装Docker-desktop 推荐目录&#xff1a;https://t.cn/A6ApnczU Docker for Windows 在Windows上运行Docker。系统要求&#xff0c;Windows10x64位&#xff0c;支持Hyper-V。 下载 Docker for Windows Dokcer Desktop for Windows 安装要求 Docker …

c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...

今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化:什么是Json ?Json【它是一个轻量级的数据交换格式&#xff0c;我们可以很简单的来读取和写它&#xff0c;并且它很容易被计算机转化和生成&#xff0c;它是完全独立于语言的。Json支持下面两种…

PowerDesigner使用笔记

1、PowerDesigner添加字段说明 打开表设计视图>选择Columns栏目>点击“Columns and Filter”> 沟中“Comment”选项&#xff0c;随后便可添加列说明。如图&#xff1a; 2、添加表索引双击表视图进入表设计页面 > 点击Indexs栏目 > 新增一列索引 > 双击新增索…

跌倒识别 摔倒识别 -lightweight_openpose

最近做了一个跌倒检测demo&#xff0c;使用的是lightweight_openposefullconnection&#xff0c;这篇文章是以应用为主&#xff0c;已经在GitHub上开源啦&#xff0c; 源码openpose_fall_detect 为什么使用lightweight_openpose&#xff0c;在此之前跑了很多模型哈&#xff0c;…

entity framework框架生成摘要文档为空(没有元数据文档可用)的bug解决方案

简介 entity framework在vs中生成的.edmx文件&#xff0c;会导致摘要&#xff08;说明&#xff09;为空的bug&#xff0c;具体bug信息为“没有元数据文档可用。”&#xff0c;导致我们表名打点去字段时&#xff0c;无法预知字段代表的含义&#xff0c;这在开发当中也是比较致命…

ElasticSearch可视化工具Dejavu安装使用

目录 1、安装 Docker 环境2、运行 ElasticSearch 服务3、安装运行 Dejavu 服务 Dejavu 是一个 ElasticSearch 的 Web UI 工具&#xff0c;支持通过 JSON 和 CSV 文件导入数据&#xff0c;支持可视化定义 Mapping (字段映射)等。 相关描述在 https://github.com/appbaseio/dej…