美文网首页
Tensorflow on Kubernetes疑问自答

Tensorflow on Kubernetes疑问自答

作者: CJJShare | 来源:发表于2017-11-05 21:49 被阅读0次

1.实现和训练深度学习算法为什么要使用Tensorflow?

Tensor=张量=容器,flow=流(我把它理解成数据流)

https://zhuanlan.zhihu.com/p/28234370(tensorflow 为何方圣物?)

这篇写的很好懂,想知道什么是Tensorflow看它。

算法的本质就是数学模型,说白了就是一堆数学公式。你想用计算机来实现算法,其实就是想他帮你解方程。

将做饭与之类比一下:我们很久很久之前做饭,要打猎、砍柴、生火等等(手工解方程);然后我们发明了煤气灶,这样我们就只用专注于炒菜(Tensorflow实现深度学习算法);现在我们发现煤气灶有些缺点,不如要自己换煤气罐不方便、不安全,然后我们就把煤气灶和其他能弥补它对应缺点的东西结合和改进,使用天然气灶(Tensorflow+Kubernetes)[今天突然觉得这个例子不太贴切,容我再思考一下]

附上tensorflow的使用方式:

将计算流程表示成图;

通过Sessions来执行图计算;

将数据表示为tensors;

使用Variables来保持状态信息;

分别使用feeds和fetches来填充数据和抓取任意的操作结果;

TF主要概念介绍:http://blog.csdn.net/stdcoutzyx/article/details/51645396(棒!)

2.什么是分布式Tensorflow?

随着设计的模型越来越复杂,模型参数越来越多,越来越大, 大到什么程度?多到什么程度? 多参数的个数上百亿个, 训练的数据多到按TB级别来衡量。大家知道每次计算一轮,都要计算梯度,更新参数。 当参数的量级上升到百亿量级甚至更大之后, 参数的更新的性能都是问题。 如果是单机16个GPU, 一个step最多也是处理16个batch, 这对于上TB级别的数据来说,不知道要训练到什么时候。于是就有了分布式的深度学习训练方法,或者说框架

tensorflow的分布式有in-graphbetween-gragh两种架构模式

in-graph模式和between-graph模式都支持同步和异步更新:

同步更新的时候, 每次梯度更新,要等所有分发出去的数据计算完成后,返回回来结果之后,把梯度累加算了均值之后, 再更新参数。 这样的好处是loss的下降比较稳定, 但是这个的坏处也很明显, 处理的速度取决于最慢的那个分片计算的时间。

异步更新的时候, 所有的计算节点,各自算自己的, 更新参数也是自己更新自己计算的结果, 这样的优点就是计算速度快, 计算资源能得到充分利用,但是缺点是loss的下降不稳定, 抖动大。

在数据量小的情况下, 各个节点的计算能力比较均衡的情况下, 推荐使用同步模式;数据量很大,各个机器的计算性能掺差不齐的情况下,推荐使用异步的方式。

PS结点和worker结点?

ps节点就是paramter server的缩写, 主要是保存和更新参数的节点, worker节点主要是负责计算的节点。

参考:http://www.tensorflow123.cn/baihuatfdistribute.html(白话tensorflow分布式部署和开发)

3. Kubernetes是什么?为什么要在它上面部署Tensorflow?

https://baijiahao.baidu.com/s?id=1577264677500576534&wfr=spider&for=pc

kubernetes是google开源的容器集群管理系统(大管家),提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用

4.容器技术?

容器与虚拟机拥有着类似的使命:对应用程序及其关联性进行隔离,从而构建起一套能够随处运行的自容纳单元。此外,容器与虚拟机还摆脱了对物理硬件的需求,允许我们更为高效地使用计算资源,从而提升能源效率与成本效益。

软件容器带来的优势也类似。你不必传送整个操作系统和软件,只需将你的代码和依赖包打包至可以随处运行的容器即可。

容器比如docker,容器的集群:多个容器;为了管理所有这些容器,你需要另一套专用软件,比如Kubernetes

参考:容器是什么鬼?https://news.cnblogs.com/n/561175/

参考:http://blog.csdn.net/wh211212/article/details/53535881?locationNum=4&fps=1

5.容器集群?

容器集群是将多台物理机抽象为逻辑上单一调度实体的技术,为 容器化的应用  提供资源调度、服务发现、弹性伸缩、负载均衡等功能,同时监控和管理整个服务器集群,提供高质量、不间断的应用服务。

6.K8s架构


K8s架构

详细架构参考:http://blog.csdn.net/jincm13/article/details/50886029

基本概念:https://www.cnblogs.com/chris-cp/p/5766153.html

相关文章

网友评论

      本文标题:Tensorflow on Kubernetes疑问自答

      本文链接:https://www.haomeiwen.com/subject/mahhmxtx.html