Google I/O 2017 上有哪些關於 TensorFlow 的前沿應用和分享?

本題已收錄至知乎圓桌:Google I/O 2017,更多「Google I/O」相關話題歡迎關注討論


#Cloud TPU,XLA,Tensorflow 1.2 從下到上全面優化,I/O大會上 Tensorflow 的大新聞都在這裡了!

這次大會的主題大家都知道了吧?Mobile first ro AI first

各種各樣的產品新功能都搭上了機器學習的影子,所有這些酷炫功能的源頭,都來自於 Tensorflow 的代碼。所有這些代碼,都來自於計算單元 TPU,Google 深度學習的大新聞可不能漏了。這才是真正決定 Google 的未來,還有我們自己未來的新聞呢!

Tensorflow 是什麼?

想來用最簡單的話科普下 Tensorflow 是什麼。Tensorflow 是一個深度學習框架,也就是進行深度學習訓練的工具,可以在分散式系統上執行的引擎。

這個圖內容太多。但對大多數人來說,關鍵點就是 Python Fronted, Layers 和上層的所有東西。給大家一點小代碼展示一個最簡單的模型。

&>&>&> 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倍。但也有局限性,因為只能用來做推理不能做訓練(機器學習的模型都是先訓練,後推理,好難想像不能訓練只能推理的硬體晶元)

16年開發出了第二代 TPU,180 teraflop 的性能。180T 是什麼概念呢?對比一下就知道了。 Nvidia 的 GeForce GTX 980,最新的筆記本目前大概都用這個顯卡,是4358 gigaflop,也就是4.3 Teraflop. TPU 差不多快了40倍!!! 以前一小時的訓練,現在只要1分30秒了,想想就好激動。

這還沒有結束,它還設計為可連接的元件,也就是可擴展。Google 會把 TPU 組成一個個陣列。並且放到雲端供開發者使用。

開發者怎麼用呢?只要把上面的代碼修改兩句話

&>&>&> 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 ,再到整個對於數據的支持。如此全面覆蓋,真的堪稱良心。

XLA

XLA 全稱是 Accelerator for Linear Algebra

也就是專門針對 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 從上到下全部優化了一遍,沒有數據還是白搭。

Cloud TPU 支持本地,雲存儲甚至在雲端進行模擬(例如要做增強學習), 不過這存儲估計也是要花不少錢,aws 現在在這一塊領先很多,Google 也要加油啊!

說太多了,總結一下?

一個計算機就是有硬體,編譯器和軟體組成。Tensorflow 這個生態分別更新了

  • 硬體(TPU)
  • 編譯器(XLA)
  • 軟體(Estimator)

可以說從上到下全部煥然一新,這還不包括他們更新的API,他們對於數據的支持,他們開放的 The TensorFlow Research Cloud 項目,所有的這些都會對工業界學術界有莫大的益處!10086個贊!

最後 show 個合影,感謝下講者,我專門跑去了他的 Office Hour 去問問題,受益匪淺,哈哈哈哈!


推薦閱讀:

anaconda安裝tensorflow,在import tensorflow時報錯,要怎麼解決?
求通俗講解下tensorflow的embedding_lookup介面的意思?
用Tensorflow自動化構建海洋生物系統,利用上萬的圖片訓練,找到瀕臨物種「海牛」是什麼原理?
請問batch_normalization做了normalization後為什麼要變回來?
當tensorflow模型超過單張顯卡顯存的時候,應該怎麼拆分到多個GPU上運行?

TAG:GoogleIO | TensorFlow |