如何評價 Caffe2go?
首先感謝賈大神,文章說將部分開源,會到什麼程度?該框架能做到在手機上進行深度學習,是怎樣進行模型尺寸縮減的?
不太清楚caffe2go是在移動設備上做train計算還是和之前mxnet tensorflow一樣的 load 模型做predict,如果是前者,有很多可以預見的問題:
0.誰家背書?英偉達做了那麼多工作才使得現在的DL設備上都使用他家的cuda+cudnn,移動設備上進行深度學習?至少也得有一家類似的公司(硬體支持)來為其背書吧1.移動終端作為一個計算設備,存儲與cpu(gpu)交互是否能跟得上,要知道在標配的DL機器中都是需要ssd來做數據的存儲介質;
2.計算力,移動設備的計算力能夠滿足DL這種級別的運算嗎?3.網路帶寬,單個GPU工作站尚且無法滿足計算力的要求,就算滿足其他的問題,在現有分散式框架下,基於PS的DL模型參數更新,ps與worker之間的網路帶寬消耗巨大,這個怎麼解決;4.動則幾百g的訓練數據哪裡放?5.電池怎麼辦 ^-^
DL是在海量數據下才保證模型的泛化能力,大數據下,移動設備估計夠嗆...不過還是希望快點開源,能夠run下腦洞開一下,莫非是配有了專屬的神經網路計算晶元的黑科技?
以上個人觀點,望輕噴本人一直很關注移動端CNN的實現,說下本菜鳥的看法。
1.首先,這個mxnet tensorflow本身都是支持的Android端的執行的。不過有點坑,我國產的手機都運行不了,兼容性真不好。(當然你自己寫的簡單的cnn,移植下也是可以的,就是效率問題)
2.但是這些框架都還沒有正式為mobile devices量身定做,Caffe2goo應該算是第一個。(估計很多公司早就做了,但是他們應該是不會開源的)3.看賈大神的文章,說,是在cpu上跑的,之前的框架也很少去支持gpu,除非量身定做(使用opencl)。4.賈大神之前的開源的caffe2 就提到了對android的支持。5. in real time, on people"s devices。應該是該項目的一個亮點。期待開源。
做嵌入式深度學習剛好一年,答一記來紀念一下。
用的是caffe。
首先先說明一下很多人的誤區,就是,嵌入式設備(手機等)的GPU,實際上要比CPU要慢得多,若gpu和cpu都沒有優化過,均使用開源庫,如cpu用openblas,gpu用clBLAS, CLBlast來做gemm(caffe的卷積的實現方式),那麼我測試的網路,要普遍慢幾倍到幾十倍,沒錯,有幾十倍,那是因為嵌入式用的gpu,主要是mali的gpu,其架構和pc端gpu架構差別過大,而上面提到的庫並沒有針對mali的gpu優化,甚至影響更差,比如local memory的影響。gpu的優化比cpu要難很多,要考慮東西多很多。
回到caffe2go來,賈揚清的原話沒看過,不過看各位回答,大致是,在手機上用cpu來跑caffe2,有些人糾結於,是訓練網路還是應用,這個其實都可以,看需要,不過,假若能在pc端訓練好的網路,又何必在手機端訓練呢?因此大部分網路是不用在手機端訓練的,少數如根據用戶特性做的應用倒是需要。
賈的caffe2go在我看來,其實做了倆件事,一個是做了個將caffe2用於手機的應用,一個是用手機cpu來跑caffe2。這倆件事,github上,shr01早就做了(用的是caffe),有源碼。那麼,賈為什麼還發布呢?最重要的是,shr01隻是移植了caffe,而賈針對手機的cpu做了優化,也就是,性能提高了。沒錯,優化,這個是深度學習應用最重要一環之一,也是我接下來要談的話題。
目前就我了解到的,在工業界,不少公司已經能將深度學慣用於實際,基本達到實時,而這些公司,幾乎用的都是cpu,為什麼我前面提到了,而賈也是基於cpu來做的。嵌入式設備性能有先限,因此優化是非常重要的。而cpu的優化要簡單直接多了。
那麼,gpu呢?其實這才是我想說的重點,我主要的優化工作是在mali gpu上的,也就是嵌入式設備的gpu。前面提到gpu性能要普遍差於cpu,甚至無法與之相比,主要原因,首先要從硬體上去分析了,這個額,我不是很懂,先挖個坑吧。還有一個重要方面就是, 目前的嵌入式gpu使用的是opencl,(不要說有nvidia的cuda,nvidia的tk1等設備,nvidia放出聲明不做這方面的了,所以nvidia的東西不在討論範圍,畢竟現在我知道的手機中沒有用nvidia的顯卡,更何況那麼貴),目前開源的庫中,很少有針對嵌入式端的opencl優化,導致mali等gpu不能達到其浮點運算該有的gflops。
所以,在我看來,硬體本身限制,加上沒有軟體優化支持是目前嵌入式端不用gpu來做深度學習的主要原因。而且,手機端的gpu更重要的是來做渲染,事實上手機端的圖形界面等渲染耗費了很多的gpu性能,gpu本身就半身不遂了,怎麼奢望它跑得快,gpu比cpu慢幾十倍的原因也在於此(這個原因是我猜測的,後來問了大牛,說有影響,但不是這個主要原因,而是android的方面沒有配合好,大致可以總結為,android沒調度好,差不多,就是沒優化好咯)。
那麼我為什麼還做gpu優化呢?因為在我看來,不久後肯定會有更強大適合的gpu出現來適應複雜繁多的計算。並且,我們現在做的gpu優化已經在部分設備趕上甚至超過cpu了(rk3288為例),當然這也和我們cpu的優化不是重點有關,我們優化了cpu,但是沒有其他公司或者團隊優化那麼好。
因此,我覺得,caffe2go肯定也做了移動端的gpu版本,只是目前受限,性能表現不好,沒發布而已。
gpu還是有很多cpu不能替代的優點,只是現在整體表現不好而已。
以上僅是個人觀點,歡迎指出錯誤,一定虛心學習。我在Github搜索了一下,目前還沒有發現Caffe2go的源碼,難道2017年12月了,還沒有開源碼嗎?
訓練還是通過pc來進行的,移動端只做預測運算量大大減少。並且高通也開始介入深度學習了,最新的835已經支持gpu加速,這樣手機端直接運行網路速度比雲端快速,並且可以離線運行。
我覺得你們忽略了一些技術的細節。
移動設備性能跟不上,但是也有巨大的優勢,那就是被頻繁使用,近年來個人pc業績下滑也是不爭的事實。手機不是幾乎已經淘汰了數碼相機了么。
還有更重要的一點,特別是樹莓派,你可以及其方便得命令他去執行一些事,比如閃個燈,驅動一個馬達等等。樹莓派天生就是干這個的。但是手機,pc等等就沒有這個優勢。樹莓派缺的就是一個智能的判斷所發出的指令,深度學習不就正好補位了么。
簡單說,物聯網特別需要深度學習的技術。
推薦閱讀:
※caffe用別人的model和prototxt測試,batch_size如何選擇?
※如何在torch7上增加一個新的層?
※萬元深度學習電腦如何配置?
※深度學習CNN,用卷積和下採樣,為什麼就有效?全連接的物理意義又是什麼?
※caffe 在Ubuntu下如何用已訓練出來的模型測試一張圖片?
TAG:機器學習 | 深度學習DeepLearning | Caffe深度學習框架 |