文档章节

Kubernetes集成TensorFlow服务

openthings
 openthings
发布于 2018/05/12 17:39
字数 1007
阅读 1057
收藏 0

Kubernetes集成TensorFlow服务

TensorFlow可以裸机运行、基于Virtualenv、Anaconda运行,在Docker中运行。把TensorFlow运行于Kubernetes之中,可以利用Kubernetes的强大容器管理和编排能力,实现集群化的分布式部署。

参考上图的架构将机器学习整合到DevOps的整个流程之中,具备ML模型的版本控制、快速部署和规模伸缩、集群化测试验证和运行、快速迭代和持续交付能力,从而建立机器学习的企业级能力。

1、直接运行Pod

1.1 基础环境安装

安装Kubernets、NVidia Docker2和Nvidia device Plugin,参考:

1.2 创建部署yaml文件

将下面内容保存为tensorflow.yaml文件。

apiVersion: v1
kind: Pod
metadata:
  name: openthings-tensorflow
spec:
  containers:
    - name: openthings-container
      image: tensorflow/tensorflow:latest-gpu
      resources:
        limits:
          nvidia.com/gpu: 1 # requesting 1 GPUs
  • 如果有多块GPU,修改上面的nvidia.com/gpu的值,但不能超过系统中当期空闲的GPU数量。

1.3 安装TensorFlow POD

安装TensorFlow为Kubernetes POD:

kubectl create -f tensorflow.yaml

查看是否启动成功:

kubectl get pod --all-namespaces

看下是否openthings-tensorflow的pod已经处于running状态。

由于需要下载镜像,需要等待一段时间。如果一直处于pending状态,使用下面方法查看问题:

kubectl describe pod openthings-tensorflow

单独拉取镜像:

docker pull tensorflow/tensorflow:latest-gpu

一直等到pod的状态处于running状态,然后进行下面的操作。

1.4 映射端口

在打开浏览器访问Tensorflow的Notebook服务之前,我们需要将端口映射到容器网络之外的网络地址:

kubectl port-forward openthings-tenorflow 8888:8888 --namespace=kube-system &

如果端口8888已经占用,改为别的端口。也可以使用ingress等其它方式映射IP地址和端口,更为通用,只是需要更多的配置,参见Kubernetes的网络配置外部服务访问的方法,如下:

1.5 查看日志

到Kubernetes的Dashboard选择“容器组”,选中“openthings-tensorflow”,选择“日志”,查看容器运行的输出:

[I 08:14:38.014 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 08:14:38.026 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 08:14:38.031 NotebookApp] Serving notebooks from local directory: /notebooks
[I 08:14:38.031 NotebookApp] 0 active kernels
[I 08:14:38.031 NotebookApp] The Jupyter Notebook is running at:
[I 08:14:38.031 NotebookApp] http://[all ip addresses on your system]:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d
[I 08:14:38.031 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 08:14:38.031 NotebookApp] 
    
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d

把里面的登录URL拷贝下来,输入浏览器。

1.6 访问jupyter notebook服务

在浏览器输入上面日志中的URL地址,类似于:

  • http://localhost:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d

应该就可以打开TensorFlow的Notebook服务了。

2、Kubeflow

上面的方法适合单机单容器实例使用,可以使用Kubernetes的容器管理工具。但如果扩展到多个实例甚至多个节点,容器之间是独立运行的,因此并没有把Kubernetes的集群管理能力充分利用起来。要充分使用容器集群能力,可以使用kubeflow来实现,不过目前该项目还处于0.1版本的状态。

3、Pachyderm

Pachyderm是另外一个可以在Kubernetes实现数据工作流的软件,可以将基于Tensorflow的机器学习工作流整合为一个统一的数据流,并在Kubernetes集群上运行。

© 著作权归作者所有

openthings
粉丝 325
博文 1140
码字总数 689435
作品 1
东城
架构师
私信 提问
加载中

评论(2)

openthings
openthings 博主

引用来自“张佳师”的评论

您好, 1.3 安装TensorFlow POD, 提到的tensorflow.yaml, 能发出来吗?
现在的问题是jupyter notebook 链接不是, 谢谢
please reference 1.2.
张佳师
您好, 1.3 安装TensorFlow POD, 提到的tensorflow.yaml, 能发出来吗?
现在的问题是jupyter notebook 链接不是, 谢谢
Kubernetes Meetup 中国2017 北京站

Caicloud 携手美国 CNCF 基金会主办中国地区 Kubernetes Meetup 源于 2016 年 4 月。去年,Caicloud 团队携手来自 eBay、腾讯、VMware、中国移动、浙大 SEL 实验室的架构师在北、上、杭、深四...

Caicloud
2017/03/15
41
0
Kubernetes Meetup 中国2017 北京站

Caicloud 携手美国 CNCF 基金会主办中国地区 Kubernetes Meetup 源于 2016 年 4 月。去年,Caicloud 团队携手来自 eBay、腾讯、VMware、中国移动、浙大 SEL 实验室的架构师在北、上、杭、深四...

Caicloud
2017/03/15
14
0
Kubeflow镜像的快速下载(V0.3.3)

Kubeflow是一个面向Kubernetes集群运行的机器学习框架。要想使用得先想办法把镜像搬到自己的环境里来。 目前版本0.3.3的容器镜像已经搬回来,可以使用下面的脚本来从Aliyun的镜像服务站下载:...

openthings
2018/11/28
693
0
在阿里云Kubernetes容器服务上打造TensorFlow实验室

简介 TensorFLow是深度学习和机器学习最流行的开源框架,它最初是由Google研究团队开发的并致力于解决深度神经网络的机器学习研究,从2015年开源到现在得到了广泛的应用。特别是Tensorboard...

必嘫
2018/04/20
0
0
Kubernetes Meetup 中国2017 南京站

自2016年4月,美国 CNCF 基金会正式授权才云科技(Caicloud)主办中国地区 Kubernetes Meetup 。在过去一年中,才云团队携手来自 eBay、腾讯、VMware、Google、中国移动、浙大 SEL 实验室的架...

Caicloud
2017/05/24
56
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
16分钟前
3
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
6
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部