iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
1
AI & Data

30 天學會深度學習和 Tensorflow系列 第 30

29. 工欲利其器:加速前進!

在前幾篇文章中,大略提到了深度學習架構中所用的計算圖,以及計算圖如何來幫助在異質化的計算平台中達到優化的高速計算。接著,我們將要介紹一個由 University of Washington SAMPL group 開源計畫所開發出來的深度學習編譯器架構,稱為 TVM

在這個開源的深度學習編譯器架構中,不僅利用 Nvidia 的 NNVM 實踐了前一篇貼文,提到以計算圖為 IR 的程式優化方法,更實踐另一層更低層與不同計算硬體設備後端相關的 IR 被稱為 Tensor Expression Language。有了這層 IR 的優化方式來產生最終的執行命令,有助於分配計算圖中不同的運算元到不同的計算後端,如高計算需求的 convolution 計算元分配至 GPU 後端。

Tensor Express Language

相較於計算圖作為 IR 來對整個計算圖做優化,Tensor Expression Language,多半使用於影像處理相關的計算優化中,有助於對單一運算元作優化,尤其是該計算元在 GPU 高度平行化的計算環境有較大的表現增益,據該計畫專頁宣稱,再經過 TVM 優化後的深度學習模型也較容易 deploy 到不同的平台上,如下圖所示。

TVM Flexible Deployment

另外一個使用 TVM 針對 Tensor Expression Language 優化的好處則是採用 Halide 相似的設計將演算法和程式優化的邏輯分開的設計方法。Halide 是一個 Domain Specific Language,主要是針對現今計算硬體,如:GPU 等後端,編寫高效能的影像處理原始碼。而使用 Halide 來編寫影像處理的演算法,程式設計師仍舊可以撰寫非高效能的序列執行程式,而讓編譯器排程如何針對多執行緒做排程計算優化的部分。

最後一個 TVM 的優點,則是能夠使用 RPC,使深度學習模型開發者,對遠端的智慧型手機或嵌入式設備做深度學習模型的跨平台編譯和優化。這項功能對於在硬體支援較多限制的智慧型手機以及發展 IoT 等等的大型智慧網路相當有助益。

目前 TVM 可以對不同現行的深度學習架構模型做編譯,如在前一篇文章中介紹的 ONNX,Keras ,MXNet,DarkNet 和 Tensorflow 等。有興趣的讀者可以參見 TVM 的官方文件,尋找更多編譯的範例。

最後關於深度學習架構計算優化的發展,多半是著重在影像處理上,原因大多是影像本身就可以當作許多區塊狀的小陣列,而非常適合在 GPU 這樣對高平行計算特化的硬體上。對於 RNN 序列化的上的優化,由於 RNN 本身在序列間相依性,而造成平行化的困難。所以,目前在 RNN 模型的計算優化上多針對 Batch Normalization 或 Attention 這些運算元做編譯優化。

後記:

關於 ”30 天學會深度學習和 Tensorflow” 這個鐵人挑戰系列,從第一篇,編號為 00 的緣起,到此最末篇編號為 29 的加速前進,我在短短的一個月中塞進了四大主題:

  1. 從機械學習到深度學習:在這個主題中,以預測鐵達尼的生還者的問題,由最簡單的線性模型進展到一個由 Tensorflow estimator API 建立起的 Feed Forward Network,希望讀者們能了解深度學習的演變亦是從最簡單的線性模型而來,。
  2. 電腦視覺研究和 Convolution network:在這個主題中,主要是介紹吳恩達教授在 Coursera 上的 Convolution network 課程。在這系列的文章中,多半是解釋課程中關於電腦視覺上的一些概念和 convolution network 的原理。
  3. 序列研究和 Recurrent network:在這個主題中,主要是介紹吳恩達教授在 Coursera 上的 Sequence Model 課程。在這系列的文章中,多半是解釋課程中關於使用 RNN 序列模擬上的一些概念和為了解決深度網路不易訓練的原理。
  4. 深度學習架構模型的優化:在這裡我們介紹了計算圖的概念,以及目前主要深度學習架構的提供者,如何對計算圖優化而發展的編譯器,最後篇中則提到了一個開源架構, TVM,不只提供了計算題優化的方式,更針對不同硬體後端做了運算元層級的優化,而使 deploy 深度學習模型至不同的設備中更為容易。

因為要在一個月內塞進深度學習的概念和 Tensorflow 的設計本來就是一個相當難的挑戰,相信大家是愈讀愈模糊。所謂,萬丈高樓也仍是由平地一磚一瓦蓋起,這 30 天把學習深度學習的藍圖給繪製好了,若讀者對這四大主題感到有興趣,並希望能閱讀更多有關最新資訊,一起學習或重溫基礎知識,並且能站在相互切磋的角度下,互相參考一些範例程式碼,請繼續關注本人在方格子(前 SOSReader)的「翻滾吧!駭客女孩!」寫作專案。

最後,身為偽文藝女青年,我不得不為這個系列下一個稍微文藝的結尾:

那標號為 30 的未曾寫完的最終文章,將會永遠的延伸和編寫,成為終生學習的最後一個章節。

參考資料:

  1. TVM: An End to End IR Stack for Deploying Deep Learning Workloads on Hardware Platforms

上一篇
28. 工欲利其器:深度學習編譯器介紹
系列文
30 天學會深度學習和 Tensorflow30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言