演講實錄——TensorFlow在物聯網硬件端的加速Edge TPU [復制鏈接]

2019-4-30 10:19
九霄逆鱗 閱讀:297 評論:0 贊:0
Tag:  
本文來自2019安卓巴士開發者大會現場實錄,由于錄入匆忙,內容可能存在偏差,歡迎大家掃描文末二維碼查看現場實錄視頻和下載大會完整PPT。作者:王玉成

謝謝大家,我是王玉成,也是谷歌2016年就開始做整個互聯網操作系統,大家也知道,現在在整個人工智能學習里面分了兩大塊,一大塊是谷歌的TensorFlow,另外一個是面向學術的。在TensorFlow這塊開始的0.1版一直往前跑,現在是2.0版本,現在做了很多分支,我專門應用云的,專門應用互聯網,專門用于科學服務的,不管我們在其它領域之下,都能夠用TensorFlow來解決問題。TensorFlow在互聯網硬件,因為Edge TPU在去年都已經公布這個事情,但是它是到今年2月份的時候,然后到現在的話,在美國市場上是可以買到了,大陸這邊暫時沒有銷售渠道,大概是這樣子。

我今天給大家帶了一款開發版的,我相信這款在國內現在只有幾十個人。我現在把TensorFlow在互聯網的應用還有Edge TPU這方面做一個介紹。最開始我講的這個PPT大概可能三部分,一點點應用。我們最開始去看TensorFlow也是懵懵懂懂去看這個事情,因為人工智能最開始發展起來,我們腦袋里面實際上是沒概念的。但是到現在基本上所有的應用大家都在提人工智能。原來也說人工智能這些算法,上一位嘉賓也講到,在云端去做識別,識別的結果全出來,原始數據全部出來,這上面對云端的負載太大。有人說能不能把TensorFlow推演這塊上云端。它主要完成的工作,就是解決兩個問題,是如何運用這個模型,最后實行推演。就這兩大塊的內容。TensorFlow Lite就是做推演。

在TensorFlow Lite本身,它的速度比TensorFlow還要快。我實際上做過這種移植,TensorFlow Lite它的速度會快很多。就我現在觀察到了,不去提安卓上面的GPU加速的東西。如果你用普通的日志去跑的話大概是一秒的話。如果用TensorFlow Lite,它需要再做進一步的加速,我們就假象一個場景,就是我們的門禁,假設我們過這道門禁,人往攝像頭一望,攝像頭確實了人臉,識別了打開門禁的步驟。假設我們單純識別人臉步驟達到幾秒鐘或者十幾秒鐘,肯定這個時候人就沒耐心,但是這部分TensorFlow識別的話,它也能達到10毫秒左右,我覺得在工業運用上應該是可以接受了。但就還是人臉識別來說,今天這個Edge TPU,我根據之前的測試人臉識別的速度大概在2毫秒左右,不是2秒。這個里面如果對大規模人多的這種識別,這種速度會很快。這是它的性能。

電池這些方面它優化浮點,為什么要這么做,浮點運作他們整云太多了,現在TensorFlow Lite對浮點的優化,它怎么去優化的,這個優化是量化這部分的優化。我們也知道現在所有CPU上能跑操作系統的話大概都是32位的,基本上是32位的,有的現在都跑64位,但是32位或64位做浮點特別麻煩。第二點做圖像處理的話,大家也知道圖像處理這里面還有大量的浮點運算,說到底你對于浮點怎么去處理,將很大程度上決定了你在整個視頻這方面的處理情況。所以它把32位的長度改成16位或者8位了,利用這款去運算的話,實際上會快很多。它現在量化了。但是擴展性的話,凡是大家能知道切入設備的擴展。這是TensorFlow的。但是現在實際上TensorFlow Lite,剛才我們給大家帶了Edge TPU,實際上它現在分成兩個部件,我手里還有一個USB的加速器,這個加速器你插到筆記本上,實際上這個推擬速度,你的容量比較小,想實現推擬,在那種情況下你可以用USB去完成Edge的加速。

剛才提到加速我們是做硬件用內部和外部的加速,現在TensorFlow它跟我們在硬件這段總共提出的,硬件上加速其實方案大概有這么幾種,可以給大家說一說。首先它在我們的普通的桌面單可以用CPU加速,安卓8.1以及以上的版本,這部分只要你的安卓的手機它的GPU往上面掛的結構是支持API,這部分也可以進行加速。剩下來硬件這個加速,現在谷歌開發版這部分加速,再加上硬件的一些加速情況。實際上這個里面,實際上我最開始寫這段,這段的確是太多了,我都不想寫了。但是這塊讓我們知道,TensorFlow Lite它比TensorFlow究竟改了哪些東西,讓我們覺得TensorFlow Lite速度比較快。之前我提到量化,還會研究FlatBufFers,這幾類大的數據大家知道在TensorFlow用的是PratoBuffer,但是現在TensorFlow Lite用的是FlatBufFers。這個里面涉及到內存,這個里面和我們以前應用過了,大家經驗中提到,我們用編程的事后始終需要一個馬洛克(音),在推上有一個動態內存分配,但是這個動態內存分配涉及到什么問題,你在整個庫上面必須做一個內存池,然后用內存池管理你的各種內存,還要管理內存的消耗情況,內存最好的釋放情況,最后如果釋放以后你怎么去做內存。比如說內存中間存在一些,在虛擬里面去進行,你還得做另外的東西。比如說上一次我剩下的內存和這次剩下的內存剛好存在內存空隙,這個怎么去解決。我給大家說的話,實際上動態的方式去做內存方面內容的時候,你會在整個的涉及到這些方面的處理,也許這些方面的處理你作為一個運用人員根本不在乎的,但是它要默默做這些東西。

TensorFlow優化解釋器,它把這些靜態的內存分配器來進行。我們在變音器做一些操作。大家可以看到實際上它這種優化涉及到哪些東西?涉及到PratoBuffer以及我們裝載它的規則定義這部分,再加上浮點運算新的優化,再加上內存這一系列的優化,我們發現整個TensorFlow Lite,它在軟件上識別TensorFlow這邊做了很多的優化。但是應用TensorFlow Lite,現在nest ,還有谷歌,他們也在大量使用TensorFlow Lite去做他們一些新的優化。

前面提到也就是TensorFlow Lite和TensorFlow的一些不同點。我現在提到開發版就是Edge TPU這部分。這里面最中間關注它兩個方面的東西,一個是每瓦的功能,還有一個是每美元的功能。你可以想象它的Edge TPU在硬件上,它大概占的大小是10美分硬幣的大小,大概只有這么小了,真正核心來處理,這里都非常小了。大家看一下Edge TPU谷歌云這方面的東西,Edge TPU主要還是做推擬,包括它的硬件加速,包括云端做推擬的訓練,這是它一系列的區別。性能主要是說在高分辨率30多幀可以實現推擬的,速度非常快。TensorFlow的優化它的程度,量化達到8位和16位。IO接口,Pcle和USB這部分,USB現在加速器已經出來了,但是Pcle谷歌這邊很快也會推,但是現在還沒有產品,應該還是在測試。我們再看一下Pcle和USB這兩種種性,USB種性特別多,Pcle在工業還是蠻多接口的。所以就是把Pcle和USB這兩個接口去做,但是Pcle也是在桌面,我們在桌面包括服務器上都已經Pcle化了,你自己服務器來配置,硬件上你配得不是太好,你可以用Pcle Edge TPU來進行加速。

谷歌Cloud專門有這么一個服務。現在在谷歌Cloud它有一個Cloud loT Edge,所有大量的類似的服務都集成到Cloud IoT上去了。進行最開始的日志分析,日處理,進行數據的訓練,得到一些模型,再放大Edge TPU去執行。現在谷歌也有許多的mobile net這些模型供大家下載。它去做這些的好處,之前一位嘉賓提到了,在本地我們把數據都處理完了,本地甚至做預警,不是把結果存到云上面,所有數據都是在本地做一些安全加密型的處理,這樣實際上在數據特別在物聯網這端,再到互聯網這端,中間數據我們保存在本地,這樣它的安全性也得到提高。應用上面。在整個Edge TPU這部分,現在谷歌它是這樣,之前前兩年有關于TensorFlow去做創客的東西,那個叫AIY,谷歌做VSK,如何利用人工智能針對創客做一些定制開發版,但是現在到coral去了,創客也可以用一些開發版做一些自己喜歡的模型。這部分我之前做一些模型驗證對應過了。這個功耗確實很低。因為實際上在TensorFlow Lite,做這個也有一個初衷,我使數據在本地訓練,去說推擬的話在沒有網絡情況下也可以做,在本地也可以做。但是在消費領域這網絡不是到處都在嗎,很少沒有網絡,但是在礦山里面去做的話,有些礦工是沒有網絡的。所以需要在網絡覆蓋不到的地方去進行。

現在發布的產品就是這兩款,左上角那款是谷歌的開發版,待會我看那邊的網頁能不能打開,能打開的話把相關的要點給大家看一下。右邊這塊是USB的加速器,相當于說我們往電腦上一插,它有一些庫,你在上面做一些編程然后就可以。這部分是Dev Board的性能。這部分在互聯網能做一些應用的,GPU這部分,實際上這個GPU說實話在Edge TPU里面沒用上,因為它自己本身有些處理器,所以它就用不上,它本身GPU,再就是Edge TPU的處理器。下面所有這些資源都能夠滿足現在一些狀態下的應用。

這個里面差不多有USB,有兩個接口,這個待會看能不能用那邊的攝像頭投影出來。這些東西給你都配齊了以后,這就是一個開發版,你自己再去做你的擴展版,再去做任何相關的開發,你控制電路或者包括其它的這些都可以了,相當于給你一個開放性的,但是Dev Board這部分現在也通過美國的驗證了,是一個很好的事情。但是它現在就是擴容文檔之間還有這么一點,你如果是說去供電的話,供電的USB的電流應該是2安到3安。如果是1.5安卓供不起來,如果大家用到Edge TPU稍微注意一下。它上面有些資源,USB是兩個,它是供電的,它的電流USB電流要達到2安到3安,但是USB3.0這部分,如果是說我們數據和它的電源統一放到一個USB的口上去的話,我們也知道USB2.0最大的電流應該是500毫,USB3.0應該是900毫,所以USB涉及到單獨的加起來。模擬了就是音頻的,信號全部都給了,你可以在SD卡上做了之后,也可以用SD啟動。但是它的camera這部分,兩部分通道都做出了。

這塊開發版現在這么好我們現在怎么去做它的模型的流程。我們也做過TensorFlow大概知道這么回事。TensorFlow去把模型做出來,做完我們用了TensorFlow Lite的時候,然后我們用這些工具去轉成TensorFlow Lite。所以我們在轉的時候不支持,但是現在,這些常用的模型都已經支持了,所以TensorFlow模型到TensorFlow Lite的模型整個這部分轉的過程中是出不了太大的問題。然后模型轉換的過程中,再利用官方在線工具之后。最后只需要這兩個文件放到你的設備上就行了。模型運行這部分,它還是考慮的點特別多的。它不管是考慮了我去把TensorFlow Lite的模型,TensorFlow Lite也在在不斷的升級。硬件的升級是沒有軟件的升級速度快的,所以這塊模型的運行是為了解決這個問題,它有一部分問題它是在Edge TPU上去做操作,另外一部分它會用一些軟件的方法或者在CPU這部分去做處理,這部分接口,按我的理解更好的應該是說,它以后對未來擴展的兼容性,在做這部分的工作。

我給大家去看一下這部分相關的資料,再一個就是開發版。這部分大家能夠看到開發版,這個里面連了一個camera,這個接口都已經做好了。最開始我打算的確做這么一個系列做一個之后,人臉檢測識別的速度大概是幾毫秒,但是現在還是網絡的問題,因為這個板子沒有電板顯示器,所以我們必須在這個板子上做的東西,然后板子和我們這臺電腦,這個開發版給我們實際的電腦必須要在一個網絡,然后兩個人用IP地址連起來,一般來說是在開發版這邊我做了一個推擬,當然IP地址和端口號,在我們組機上去訪問這個端口號,是應該能去看到整個識別情況的。這個是用視頻做的例子,但是現在是網絡問題,我自己在網絡里面差不多搞了幾個小時,還是網絡不行。所以這個模型做得簡單一點,一部分給大家了一下,調攝像頭去看一下整個事情。如果說你如果用Windows這些都可以。

我們現在這個開發軟件重新啟一下,看一下它整個的情況,最后這邊用一個數據庫做一個USB的IP通道,所以這里出來USB的文件。這個窗口調試之后有問題,這個窗口發出來的數據不是實時的。我們登錄進去就是一個傳統的。這個coral整個文檔,大家會看到這些資源,包括上面USB,然后TensorFlow,這部分都已經都完成了,而且這個里面它對所有相關的例子都做了一些操作。而且文檔特別豐富。這邊另外還有一個文具,把mdt,它最后定義的樣子和我們ADB一樣,和我們操作安卓一樣去操作。這塊是它整個模型,谷歌官方開源過、訓練過他們認為最好的模型是在這兒,這些模型直接可以拷到開發版去做一些示范。現在這邊已經出來了,這部分就是我們進的Mendet整個命運提示符里面去了。剛才大家看到這個目錄是整個的開發版,它的庫的支持問題。我們結合看Python大家直接去做開發就比較容易。今天給大家介紹就到。 
主持人:大家有什么問題想問王老師的嗎? 提問:王老師您好,我姓王,來自湖南。我覺得你這個講得非常好,但是我之前在海康威視搞了一個會,我就聽了,物理人工智能,這兩個三年我覺得還沒發展起來,我覺得應用不是很快,這個高科技設備的應用也不是很快。但是我對這個行業也不是特別懂,想跟你學。王玉成:今天你提的問題是什么呢?提問:提的問題就是說,想跟師傅了解這個編程,怎么用深度計算這塊,到底是什么原理搞不清?王玉成:人工智能這塊我給大家多介紹幾句吧,這部分實際上人工智能的話,我們最開始是說,到現在人工智能這塊是深度學習,深度神經網絡這部分,我們去追溯到在大學實驗室里面,40年前在大學實驗室就有人做這個東西,他們熬了幾十年之后,現在我們硬件包括云這部分全部都完善了,現在才有深度神經網絡這套內容,我們自己的消費者或者工業界的應用。實際上整個深度學習的算法數學基礎不難,就是概念的數據統計,實際上整個深度學習為什么要依賴于大數據?為什么非得要那么多大數據才能去做深度學習,因為這個里面用了對這些數據給個歸類,然后找出他們的特性。也就是說它的小孩去識別一樣,這是房子、這個車,這個什么,但是它腦袋里面多了之后,下一次見到這是房子、這個車,深度學習就是搞這些東西,以計算機的模型,計算機它自己認為一些特征先積累起來以后最后識別出來了。軟件編程這一方面的話,TensorFlow最開始是用Python,這是最初,但是TensorFlow還分了好多語言版本,Python也是GS,還有加網這些,這些都有了,我們學的話,用語言的話,在集中語言我們用其中一種就行了。但是TensorFlow最麻煩還是你如何去建立模型,如何去調參數這些內容是非常麻煩。提問:我想問一下老師講的很對,但是我不曉得怎么弄,因為我以前是學軟件工業,現在搞了一個深度計劃學習,這個深度計劃學習應該是在一個軟件和硬件當中可以合起來的吧,也有個數據庫?王玉成:我建議你別說什么軟件硬件這方面做,你就在軟件做先把這個做好,如果有物聯網上面的應用,你有那個基礎,再和這邊再結合,和應用結合,快一點。提問:現在軟件很精通,但是深度學習搞了3年還不行,我們沒這方面的圈子,到底怎么搞案例?王玉成:現在是這樣,現在TensorFlow,包括整個的規劃文檔,整個社區去討論深度學習,萬一你自己想學可以這么做,就一個最簡單的模型,你先跑成功,跑成功之后看一下關鍵幾個接口是什么,第一步搞清楚之后,接下來再去了解我要去訓練這個模型,要經過什么樣的哪些步驟,再一步一步往下發散,這樣會好一點。提問:謝謝老師,受益匪淺。 提問:老師,我問一個問題,我想我們分為兩步,一個是訓練模型,我想訓練模型之前需要有一個數據去訓練,我想問問,訓練之前要收取訓練這個數據,需不需要先借一些圖像處理,然后再把這個數據拿去訓練?王玉成:你說這個問題特別好,這我覺得也是深度學習中間一些問題。這部分我給你這么解答,如果是說你要正常環境下,假設背景白板去照這種人形象,我們在實際情況下又有光線、環境的其他原因,我們照出來的圖像不如這個清晰,甚至還有其他的問題。我自己也在想,它深度學習,就拿圖像識別來說,它是想解決就是原來圖像的模式識別,然后它自己去找出其中的規律,然后去做了。但實際上有些圖像在我們實際操作中間,或者我們需求是不一樣的,比較少,這部分在之前我們可以去做一些模式識別上的內容,然后把這個模式識別之后的,或者說我們對圖像進行處理,處理完了那些圖像,然后再當成深度學習數據再去做訓練。這里面給你舉一個例子,我跟一個公司做,他們那個膠膜在顯微鏡就是圈圈點點,來看一些分子的特性,但實際上我們看到都是一些圈圈,我們根據圈圈不同形狀數量,再通過人工智能的方法去做,但實際上現在它是受到其他一些干擾了,我們在前面可用模式識別或者調高通過色差一些方法,把這個圖像完全變成黑白的,這個時候再去進行深度學習,這樣的話學習效果會好很多。但是這部分有兩種出來的方法,第一部分我們用的是傳統模式識別的方法,相對來說處理一部分圖像。另一方面甚至我們去改深度學習內部的一些代碼,也就是說我們在相當于類似做了一個半監督學習,之前圖片達到我們處理那一份再深度學習代碼里面改,然后那一步去做整個的訓練,再訓練出來,這樣的條件比你直接去拉各種各樣的圖片去訓練的話效果好很多。提問:圖片或者推擬都要去經過處理再去訓練是吧?王玉成:看情況,有的也可以不經過。但是使用率特別高,但是數據源特別少,才幾十張圖片,還不到100張,在這個時候你估計會想用一些其他的半監督的模型去解決這些問題。 提問:您好,我想問一下處理精魔圖是用人臉的還是用人臉背景、2D人臉活體?王玉成:我們用人工的標注,標注這部分整個除了還是人臉,整個把這個區域標注出來了,但是現在通用的方法還沒有用也得區分背景,現在還沒有專門這個之前區分背景去做。提問:如果有連續間是不是加個背景會好一下。王玉成:這個看情況,因為現在實際上是這樣的,你在網上看到谷歌這些模型,實際上這些模型它用它大量的數據已經給你訓練好了,然后它自己再提供Coral的算法,它在它原來的模型上去做訓練,不是說完全拿你的一個圖片做一個訓練。實際上你在用它的模型自己再去做訓練的時候,它原來一些識別的方法已經在智能里面了,效果會好一些。但是整個你說CMA算起來,從這個技術角度來講就是準值的運算,但是這個準值也只能保證人臉和其它地方,差異性特別大的時候識別比較好,這里面也會出現一些模糊臉在里面。提問:你是認為如果做原始訓練的時候我加入背景會好一些?王玉成:單色會好一些。 提問:是這樣的,TPU跟MPU兩個有多大的差異,因為我們可能針對這種TensorFlow的應用我們是截屏,截屏做一個處理化延伸比較慢,所以針對我們視頻輸入端的應用端可能會技術性有高,我們電視上加上你的TPU或者加上APU是不是對產品識別比較快一些?王玉成:是,用模型來推擬說白就是OPM把原始的數據舉成中間的代進去計算,計算的結果返回。提問:TPU大概多少錢?王玉成:現在大概是150美金,一千塊錢左右,就是USB好像是77還是99。提問:比較貴,假如說帶有MPU,這種對圖像識別是不是比較快。王玉成:TensorFlow你的接口問題全部解決掉了,之前如果它跑安卓系統,安卓8.1以上MPU是完全支持的,并且它的安卓給你做過優化之后是沒有問題的,但如果用芯片中間,這一層東西得自己達成。提問:假設做一個模型,我電視可能要截屏,分辨率有要求嗎?王玉成:有不同,都是依據你自己訓練要求來,這都可以調。提問:假如說我結合圖片,包括各種素材比較多,識別比較仔細一下,但是是480P的,那個場景,我截屏跟我訓練模型的素材要一致性?王玉成:都可以調。提問:是不是根據識別場景成功率有下降?王玉成:有可能。我舉個例子,假設我舉一個比較極端的情況,你訓練的模型是320*320,你非得拿一個108識別效果也不是那么好。

講師博客:https://blog.csdn.net/wfingEdge 
TPU文擋地址:https://coral.withgoogle.com/

現場PPT分享:       
關注【安卓巴士Android開發者門戶】公眾號,后臺回復“420”獲取講師完整PPT。


大會現場視頻小程序:


我來說兩句
您需要登錄后才可以評論 登錄 | 立即注冊
facelist
所有評論(0)
領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

两码中特期期