Tensorflow on Kubernetes

介绍TensorFlow,和分布式的TensorFlow,以及为什么要选Kuberntes作为资源调度工具,GPU也作为一个独立的资源用起来,核心代码和问题描述都非常详细,可以作为生产环境使用的参考。
展开查看详情

1.利利⽤用 Kubernetes 實作 TensorFlow 分散式訓練與模 型服務分享 2017.07.18 Kyle Bai

2.About Me Software Engineer @ inwinSTACK ☑早期在校主要撰寫於 Java 與 Objc 程式語⾔言,並專注開發 iOS Mobile 應⽤用程式,並具備四年年開發經驗。次要研讀 Hadoop 與 Spark 資料運算框架,以及 Linux 相關技術。 ☑⼯工作期間則專注於 OpenStack、Ceph 與 Container 相關等 Cloud Native 技術與開源專案,閒暇之餘會參參與相關專案社區及貢獻,並利利 ⽤用部落落格、GitHub 與 GitBook 做筆記。 ☒現在則在學習如何利利⽤用相關技術管理理 Ethereum 礦場,以公司電費 轉換提升⾃自我年年終獎⾦金金(誤)。 kairen(kyle.b@inwinstack.com) https://kairen.github.io/

3.Agenda Background Why choose TensorFlow? Distributed TensorFlow Why TensorFlow + Kubernetes? TensorFlow on Kubernetes

4.Background 在 2016 年年⼀一場圍棋『⼈人機⼤大戰』中,⼈人類李世乭敗給了了 Google DeepMind 的 AlphaGo,這為全球帶來來了了⼀一些 震撼話題,甚⾄至讓⼈人聯聯想到『⼈人⼯工智慧將漸漸取代⼈人』這樣的想法。

5.1980s and 1990s https://www.slideshare.net/AIFrontiers/jeff-dean-trends-and-developments-in-deep-learning-research

6.1980s and 1990s https://www.slideshare.net/AIFrontiers/jeff-dean-trends-and-developments-in-deep-learning-research

7. 現在 https://www.slideshare.net/AIFrontiers/jeff-dean-trends-and-developments-in-deep-learning-research

8.Slide by Andrew Ng, all rights reserved.

9.

10.

11.Growing Use of Deep Learning at Google Of directories containing model description files https://www.slideshare.net/AIFrontiers/jeff-dean-trends-and-developments-in-deep-learning-research

12.Google Trend May 2012 - April 2017, Worldwide http://www.kdnuggets.com/2017/05/machine-learning-overtaking-big-data.html

13.

14.AI / Machine & Deep Learning

15.Accumulated GitHub metrics April 12, 2017

16.Deep Learning libraries: GitHub activity from February 11 to April 12, 2017

17.Why choose TensorFlow? 為何選擇 TensorFlow?是因為 Google 的開源專案?還是因為其特性呢?

18. - 2015 年年底,Google 在 GitHub 開源了了 TensorFlow。 - 2016 年年四⽉月,TensorFlow 釋出了了分散式運算版本。 - 2017 年年⼀一⽉月, 1.0 預覽版本釋出,在眾多開發者貢獻下,其功能越 來來越穩定。 Open, standard software for - 2017 年年三⽉月,在開發者⼤大會中,釋出⽤用於⼯工業的 1.0 正式版本。 general machine learning. - 現在 TensorFlow 已經來來到 1.2 版本,增加了了⼀一些特性,與優化效 能,並且更更穩定。

19. TensorFlow Pros Deep Learning framework from Google: • ⽀支援GPU/CPU/TPU,等異異構平台。 Great for Deep Learning in particular. • 前端⽀支援多種開發程式語⾔言,如 Python/C++/Go 等。 • 後端透過 C++ 與 CUDA 等開發⽽而成。 • 除了了能夠執⾏行行深度學習演算法外,還能夠實現許多常⾒見見演算 法,如隨機森林林與⽀支援向量量機等。 • 內建⽀支援分散式訓練與服務。 • DNN building block, ckpt/queue/… • Docker 與 Kubernetes ⽀支援。

20.

21.Connect Research and Production Providing Training -> Serving model

22.TensorFlow Architecture TensorFlow ⼀一般分為前端 API 程式開發介⾯面與後端 執⾏行行系統。 兩兩者分別提供定義建構運 算圖與利利⽤用硬體資源執⾏行行 運算圖。

23.Tensor + Flow TensorFlow 其實在意思上是要⽤用兩兩個部分來來解釋,Tensor 與 Flow: • Tensor:是中⽂文翻譯是張量量,其實就是⼀一個n維度的陣列列或列列表。 如⼀一維 Tensor 就是向量量,⼆二維 Tensor 就是矩陣等等. • Flow:是指 Graph 運算過程中的資料流.

24.Dataflow Graphs 資料流圖(Data Flow Graphs)是⼀一種有向圖的節點(Node)與邊 (Edge)來來描述計算過程。 a = tf.constant(1) b = tf.constant(2) c = tf.constant(3) d = tf.constant(4) add1 = tf.add(a, b) mul1 = tf.multiply(b, c) add2 = tf.add(c, d) output = tf.add(add1, mul1) with tf.Session() as sess: print sess.run(output)

25.Companies using TensorFlow

26.Distributed TensorFlow 去年年四⽉月中旬 Google 釋出 TensorFlow 0.8,新增加分散式運算能⼒力力,使 TensorFlow 可在數百台的機器上執⾏行行 訓練程序,建立各種機器學習模型,將原本要耗費數天或數個星期的模型訓練過程縮短到數⼩小時。

27.Distributed TensorFlow Architecture 資料流圖(Data Flow Graphs)是⼀一種有向圖的節點(Node)與邊 (Edge)來來描述計算過程。

28.TensorFlow training mode TensorFlow 在執⾏行行時,會分為單機模式與分散式模式。單機模式 下 client、master與 worker 都在同⼀一部機器上執⾏行行。⽽而分散式模 式則可以拆分 client、master等在不同機器上執⾏行行。

29.TensorFlow Job TensorFlow 的⼯工作(Job)可拆成多個相同功能的任務(Task),這些⼯工作⼜又分成 Parameter Server 與 Worker: • Parameter Server(ps):主要根據梯度更更新變數,並儲存於 tf.Variable,可理理解成 只儲存 TF Model 的變數,並存放 Variable 副本。 • Worker:通常稱為計算節點,主要執⾏行行密集型的 Graph 運算資源,並根據變數運 算梯度。存放 Graph 副本。 Image from: Large Scale Distributed Deep Networks