Google I/O 2017 上有哪些关于 TensorFlow 的前沿应用和分享?

366 阅读6分钟
原文链接: www.zhihu.com

#Cloud TPU,XLA,Tensorflow 1.2 从下到上全面优化,I/O大会上Tensorflow的大新闻都在这里了!

这次大会的主题大家都知道了吧?Mobile first ro AI first

<img src="https://pic1.zhimg.com/v2-23b9995bc164de3b336797f91f690b6c_b.jpg" data-rawwidth="1024" data-rawheight="768" class="origin_image zh-lightbox-thumb" width="1024" data-original="https://pic1.zhimg.com/v2-23b9995bc164de3b336797f91f690b6c_r.jpg">

各种各样的产品新功能都搭上了机器学习的影子,所有这些酷炫功能的源头,都来自于Tensorflow的代码。所有这些代码,都来自于计算单元TPU,Google深度学习的大新闻可不能漏了。这才是真正决定Google的未来,还有我们自己未来的新闻呢!

Tensorflow 是什么?

想来用最简单的话科普下Tensorflow是什么。Tensorflow是一个深度学习框架,也就是进行深度学习训练的工具,可以在分布式系统上执行的引擎。

<img src="https://pic1.zhimg.com/v2-9a6278982ad25f57bc99ae73ab79997c_b.jpg" data-rawwidth="3264" data-rawheight="2448" class="origin_image zh-lightbox-thumb" width="3264" data-original="https://pic1.zhimg.com/v2-9a6278982ad25f57bc99ae73ab79997c_r.jpg">

这个图内容太多。但对大多数人来说,关键点就是 Python Fronted, Layers 和上层的所有东西。给大家一点小代码展示一个最简单的模型。


<img src="https://pic3.zhimg.com/v2-f0abf6a27509943bf21a80886714f3c2_b.png" data-rawwidth="2218" data-rawheight="858" class="origin_image zh-lightbox-thumb" width="2218" data-original="https://pic3.zhimg.com/v2-f0abf6a27509943bf21a80886714f3c2_r.png">
>>> import tensorflow as tf
>>> sess = tf.Session()
>>> x = tf.ones(3)
>>> y = tf.ones(3)
>>> a = tf.constant(2.0)
>>> res = (a*x) + y
>>> print(sess.run(res))
[ 3.  3.  3.]

我们就是在一个session中跑了一个叫做res的“图”,最后得到结果 [3,3,3]

下面进入正题

TPU 和 Cloud TPU

Google在15年就开发出了自己的计算芯片,运算速度比市面上最快的GPU快10倍。但也有局限性,因为只能用来做推理不能做训练(机器学习的模型都是先训练,后推理,好难想象不能训练只能推理的硬件芯片)

<img src="https://pic2.zhimg.com/v2-bbc254afdddafdc5397bcdc4557010fd_b.png" data-rawwidth="2462" data-rawheight="1124" class="origin_image zh-lightbox-thumb" width="2462" data-original="https://pic2.zhimg.com/v2-bbc254afdddafdc5397bcdc4557010fd_r.png">

16年开发出了第二代TPU,180 teraflop 的性能。180T 是什么概念呢?对比一下就知道了。 Nvidia 的 GeForce GTX 980,最新的笔记本目前大概都用这个显卡,是4358 gigaflop,也就是4.3 Teraflop. TPU 差不多快了40倍!!! 以前一小时的训练,现在只要1分30秒了,想想就好激动。

<img src="https://pic3.zhimg.com/v2-11f510a6fde645f2b3f29bc568fb1c46_b.png" data-rawwidth="2476" data-rawheight="1262" class="origin_image zh-lightbox-thumb" width="2476" data-original="https://pic3.zhimg.com/v2-11f510a6fde645f2b3f29bc568fb1c46_r.png">

这还没有结束,它还设计为可连接的元件,也就是可扩展。Google会把TPU组成一个个阵列。并且放到云端供开发者使用。


<img src="https://pic3.zhimg.com/v2-c1160630e00f60eaaaa9627d47b0ca82_b.jpg" data-rawwidth="2362" data-rawheight="1184" class="origin_image zh-lightbox-thumb" width="2362" data-original="https://pic3.zhimg.com/v2-c1160630e00f60eaaaa9627d47b0ca82_r.jpg">

开发者怎么用呢?只要把上面的代码修改两句话

>>> import tensorflow as tf
>>> sess = tf.Session('grpc://tpu.machine.ip:port')
>>> with tf.device('device:TPU:0'):
... 	x = tf.ones(3)
... 	y = tf.ones(3)
... 	a = tf.constant(2.0)
... 	res = (a*x) + y
>>> print(sess.run(res))
[ 3.  3.  3.]

我们就用上了TPU了。我已经激动不已要去试试看了。

Tensorflow 1.2

硬件说完,下面来说说软件。对比上面那个tensorflow的图,Tensorflow 1.2 新添了下面几个方块。从底层硬件TPU,到编译器XLA,到上层封装好的Estimator,再到整个对于数据的支持。如此全面覆盖,真的堪称良心。

<img src="https://pic4.zhimg.com/v2-ef5b1636932a943d5dfbd15d0dbb4287_b.png" data-rawwidth="2174" data-rawheight="1336" class="origin_image zh-lightbox-thumb" width="2174" data-original="https://pic4.zhimg.com/v2-ef5b1636932a943d5dfbd15d0dbb4287_r.png">

XLA

XLA全称是 Accelerator for Linear Algebra

<img src="https://pic1.zhimg.com/v2-d8d94f4c1dfc24a7f74e606043b5c364_b.png" data-rawwidth="2416" data-rawheight="1206" class="origin_image zh-lightbox-thumb" width="2416" data-original="https://pic1.zhimg.com/v2-d8d94f4c1dfc24a7f74e606043b5c364_r.png">

也就是专门针对 TPU 优化的编译器。将高级语言(例如python)中定义的 tensorflow 图编一个机器语言中的矩阵乘法。对传统的计算机视觉领域比较熟悉的同学都知道,凡事能用矩阵运算的千万不能用循环,效率千差万别。GPU之所以比CPU快也是因为他对于复杂的线性代数运算有更好的优化。现在有专门针对TPU优化的编译器,可谓从下到上都磨了一遍刀,效率杠杠的。

Estimator

说完了硬件的优化,编译器的优化最后就到了高级语言的优化,是时候给程序员写程序加加速了!现在Tensorflow写起来也更容易了。我们可以把写好的模型封装起来直接用, 如果你接触过sklearn的话,就立刻能发现它的方便之处了。

tf.contrib.learn.LinearClassifier 
tf.contrib.learn.LinearRegressor 
tf.contrib.learn.DNNClassifier
tf.contrib.learn.DNNRegressor

LinearClassifier, LinearRegressor 这些名字熟悉不熟悉?以后就可以直接用了!DNN是什么,DNN就是deep neural network,最普通的深度学习神经网络,无论是用来分类还是回归,也可以直接用了!

Datasets

巧妇难为无米之炊,就算Tensorflow从上到下全部优化了一遍,没有数据还是白搭。

<img src="https://pic4.zhimg.com/v2-c79dc4acad3bb324120cef2d6754eccb_b.png" data-rawwidth="2376" data-rawheight="1148" class="origin_image zh-lightbox-thumb" width="2376" data-original="https://pic4.zhimg.com/v2-c79dc4acad3bb324120cef2d6754eccb_r.png">

Cloud TPU支持本地,云存储甚至在云端进行模拟(例如要做增强学习), 不过这存储估计也是要花不少钱,aws 现在在这一块领先很多,google也要加油啊!


说太多了,总结一下?

一个计算机就是有硬件,编译器和软件组成。Tensorflow 这个生态分别更新了

  • 硬件(TPU)
  • 编译器(XLA)
  • 软件(Estimator)

可以说从上到下全部焕然一新,这还不包括他们更新的API,他们对于数据的支持,他们开放的The TensorFlow Research Cloud项目,所有的这些都会对工业界学术界有莫大的益处!10086个赞!

最后show个合影,感谢下讲者,我专门跑去了他的Office Hour去问问题,受益匪浅,哈哈哈哈!


<img src="https://pic2.zhimg.com/v2-f09052f9cfd39f2b9f8f57642203bfb9_b.jpg" data-rawwidth="1280" data-rawheight="960" class="origin_image zh-lightbox-thumb" width="1280" data-original="https://pic2.zhimg.com/v2-f09052f9cfd39f2b9f8f57642203bfb9_r.jpg">
<img src="https://pic4.zhimg.com/v2-0e27838b47f8843d563667c7ee2f4693_b.jpg" data-rawwidth="3264" data-rawheight="2448" class="origin_image zh-lightbox-thumb" width="3264" data-original="https://pic4.zhimg.com/v2-0e27838b47f8843d563667c7ee2f4693_r.jpg">

想每天第一时间收到 AI 相关高质量技术内容?

扫描二维码关注公众号:AI训练场