【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技( 五 )


【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
说点题外话,为啥我在看到这里的时候特别激动呢,笔者之前在开展团队内部的分布式训练平台时就遇到这个问题,我们在测试模型时,发现多个ps上的带宽占用差别极大,原因在与模型的最后三个全连接参数太多,造成了ps的不均衡 。
上面说了下 我特别激动的东西,之后talk的就是比较简单的了,如果在做分布式的job,文档里面都有,很简单,这里不提了不对,这里还必须说下对于容灾的一个支持 。
下图是几种分布式下机器挂掉的情况:
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
多麻烦是吧,但是没有关系,在下能够自动对这些进行一个快速的恢复,只需要更改一行代码:
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
将模型布入生产环境
如何把训练好的模型快速部署在生产环境提供可用的服务, 就是专注在这块,我这里简单介绍下吧:
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
把训练好的模型提供生产环境可用的服务,通常有以下几个需求:
的设计就是为了解决这些需求,而且基于gRPC,支持多种语言 。
生态
这部分讲了如果利用生态结合一些流程的框架比如Spark、等等来更好地使用 。
1.数据准备工作
支持的数据读取方法,从快到慢依次是:
tf., tf.对象;
原生的读取CSV,JSON的OP;
直接从 feed数据(最简单) 。
如何在其他如, Spark上支持(Beam原生支持) 见(//)
2. 集群的管理
支持以下多种框架:
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
3. 分布式存储
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
4. 容器支持
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
5. 模型导出
移动端以及嵌入式应用
and
Pete 介绍了怎么在移动设备比如安卓、IOS设备、树莓派上面怎么使用来做一些开发,具体的可能对移动设备程序开发的小伙伴们比较有用,有兴趣的可以去看看
Hands On
这个talk主要是介绍了的一些应用,很多用法以前都没有尝试过,听演讲者描述之后受益匪浅 。
#alayer def (input, , ): w = tf 。(tf 。zeros([5, 5, , ])) b = tf 。(tf 。zeros([])) conv = tf 。nn 。(input, w, =[1, 1, 1, 1], ="SAME") act = tf 。nn 。relu(conv + b)act# And a fullylayer def (input, , ): w = tf 。(tf 。zeros([, ])) b = tf 。(tf 。zeros([])) act = tf 。nn 。relu(tf 。(input, w) + b)act# Setup , andthe data x = tf 。
(tf 。, shape=[None, 784]) y = tf 。(tf 。, shape=[None, 10])= tf 。(x, [-1, 28, 28, 1])#theconv1 = (, 1, 32) pool1 = tf 。nn 。(conv1, ksize=[1, 2, 2, 1], =[1, 2, 2, 1], ="SAME")conv2 = (, 32, 64) pool2 = tf 。nn 。(conv2, ksize=[1, 2, 2, 1], =[1, 2, 2, 1], ="SAME")= tf 。(pool2, [-1, 7 * 7 * 64])fc1 = (, 7 * 7 * 64, 1024)= (fc1, 1024, 10)#crossas our loss= tf 。
( tf 。nn 。(=, =y))# Use anto train the= tf 。train 。(1e-4) 。()#the= tf 。equal(tf 。(, 1), tf 。(y, 1))= tf 。(tf 。cast(, tf 。))#all thesess 。run(tf 。())# Train for 2000 steps for i in range(2000): batch = mnist 。train 。(100)#if i % 500 == 0: [] = sess 。