深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法
2017 年 6 月,EGO 邀請了 6 位行業(yè)大咖,聚焦深度學(xué)習(xí)框架選擇與應(yīng)用實戰(zhàn),進行了近 3 小時的在線探討。本文根據(jù)當(dāng)天內(nèi)容精編而成。6位參與人分別是(排名不分先后):
彭垚-七牛人工智能實驗室負(fù)責(zé)人(主持人)
郭烽-易成自動駕駛CTO
于振華-科大訊飛內(nèi)核研發(fā)總監(jiān)
楊軍-阿里大規(guī)模深度學(xué)習(xí)優(yōu)化技術(shù)負(fù)責(zé)人
張鵬-新浪深度學(xué)習(xí)負(fù)責(zé)人
趙曉萌-小紅書算法科學(xué)家。
開場與自我介紹
彭垚:我是彭垚,花名叫土土,現(xiàn)在在七牛云,負(fù)責(zé)整個人工智能實驗室。咱們先做個自我介紹吧。
于振華:我是于振華,訊飛研究院副院長,內(nèi)核研發(fā)中心研發(fā)總監(jiān),我在公司負(fù)責(zé)敏捷開發(fā)和Deep Learning高性能計算平臺建設(shè)。
郭烽:我是郭烽,剛剛從美國回來,加入易成自動駕駛不久。之前我是在高通,負(fù)責(zé)高通公司整個計算機識別、機器識別、深度學(xué)習(xí)系統(tǒng)芯片開發(fā),現(xiàn)在在易成主要是做自動駕駛方面的研發(fā)。
趙曉萌:我是趙曉萌。我一直在做搜索和推薦,一年前加入小紅書。小紅書是做社區(qū)電商的,我主要負(fù)責(zé)搭建完善搜索服務(wù)。小紅書是以圖像為主的社區(qū),圖像搜索是很重的一塊業(yè)務(wù)。
楊軍:我是楊軍,在阿里巴巴計算平臺事業(yè)部,主要負(fù)責(zé)對深度學(xué)習(xí)的優(yōu)化跟加速相關(guān)工作。我們整個部門的產(chǎn)品叫做PAI,是阿里開發(fā)的一套同時對外和對內(nèi)的AI基礎(chǔ)設(shè)施,我在這邊負(fù)責(zé)底層模型的計算加速,包括訓(xùn)練的加速、inference的加速、Modeling的探索。希望了解彼此公司和行業(yè)對deep learning model應(yīng)用的情況,以及實際應(yīng)用中對的框架選型和遇到的問題,比如model過大的問題或者計算量過大的問題。
張鵬:我是新浪網(wǎng)的張鵬,在新浪門戶。我前10年一直在做工程,最近六七年在做機器學(xué)習(xí)和深度學(xué)習(xí)相關(guān)工作。我這邊主要是側(cè)重深度學(xué)習(xí)的應(yīng)用和理論層面的計算可解釋性,應(yīng)用場景主要包括文本生成、人臉檢測識別、文章配圖、自動配圖、視頻推薦、OCR等,主要是圍繞內(nèi)容生產(chǎn)和文章分發(fā)兩個領(lǐng)域。
圖片來自https://yq.aliyun.com/articles/57677
話題一:框架選型及原因
彭垚:關(guān)于框架選型,比如MXNet、TensorFlow、Caffe、Torch,大家在用哪些?用在哪些場景?
于振華:這幾個框架我們都在用。像Torch、Caffe、TensorFlow是研究員人員在用,尤其是比較靈活的PyTorch;需要落地和不停迭代的,用的是MXNet,好處是training效率比較高。深度學(xué)習(xí)團隊針對MXNet投入最多,做了不少自主的優(yōu)化,大約一半的力量投入在MXNet,開發(fā)了比較完備的MXNet通用訓(xùn)練框架。業(yè)務(wù)層面,無論是基于CNN、DNN和IPM的識別,還是基于Encoder-Decoder的ED框架的翻譯,所有的云上代碼都是自主開發(fā)的,幾乎沒用現(xiàn)成的開放框架。我們也開發(fā)了一些工具,把torch、Caffe、TensorFlow的結(jié)果轉(zhuǎn)到MXNet上。
可以這樣理解,我們的生產(chǎn)系統(tǒng)是MXNet為主,研究系統(tǒng)是根據(jù)各個研究員喜好去做。
圖片來自http://echiev.com/index.php
郭烽:今天嘉賓在服務(wù)器端比較多,高通和易成自動駕駛主要是在嵌入式端。高通早期以開源的Caffe為主,現(xiàn)在逐漸往TensorFlow上移植。我們的應(yīng)用是手機端目標(biāo)檢測、人員檢測、智能監(jiān)控、無人機解決方案,Caffe比較易用。另一方面,高通要支持Google的硬件平臺,高通整個公司也在轉(zhuǎn)向支持TensorFlow,這是兩部分的訓(xùn)練框架。
在應(yīng)用框架方面,高通有自有芯片,也有自己的神經(jīng)網(wǎng)絡(luò)處理引擎SNPE包(Snapdragon Neural Processing Engine)。訓(xùn)練平臺的模型都可以轉(zhuǎn)到SNPE,在高通自己的平臺上做homogeneous計算,這是現(xiàn)在基本訓(xùn)練選型和實現(xiàn)手段。
在嵌入式端,在訓(xùn)練上不光是簡單的模型訓(xùn)練,還要做模型的篩檢、壓縮、硬件化,包括深度的模型匹配和優(yōu)化。
圖片來自https://www.xiaohongshu.com/
趙曉萌:我們暫時沒有自己搭建平臺。我們使用的還比較淺,主要針對圖像做feature抽取,做圖像檢測分類,在用Caffe。Caffe有Model Zoo這樣預(yù)先train好的模型,我們可以直接用。我們跟Caffe團隊的成員有一些交流。
同時,我們不排除以后考慮其他品牌,尤其TensorFlow社區(qū)在慢慢壯大,可以考慮。
圖片來自https://mxnet.incubator.apache.org/
楊軍:阿里的框架比較多元化。我們在Caffe上做過優(yōu)化,比如Caffe多級多卡的優(yōu)化,包括怎么樣把迭代過程中訓(xùn)練圖形量降下來。剛才訊飛的朋友說prefer MXNet,阿里更看中TensorFlow。原因比較簡單,TensorFlow更popular,更容易上手。
對TensorFlow的優(yōu)化首先是單卡的優(yōu)化。TensorFlow自己在卷積處理做得還不錯。這塊有個趨勢,就是會調(diào)用優(yōu)化cuDNN,讓英偉達幫我們做更多的事情。但是,它在某些具體OP層面不夠好,我們會做優(yōu)化。在多卡方面,我們做了一些有損的圖形優(yōu)化,包括我們在機器翻譯TensorFlow里做了優(yōu)化,還達到了不錯的效果。
TensorFlow本質(zhì)上是由Google來控制的,對于做云平臺的公司會有一點不利。我們判斷,TensorFlow的性能在不斷的提升,其他的問題還是屬于細節(jié)的問題,不是框架本身的問題。這就決定了,我們愿意把更多資源投入進去優(yōu)化框架。
張鵬:我們Deep learning還沒有做特別大規(guī)模的應(yīng)用,目前生產(chǎn)環(huán)境部署全部是在TensorFlow上面。我們以應(yīng)用為導(dǎo)向,模型本身看的比較多。我們的模型大概有50%是自己構(gòu)建的,另外50%是采用開源的模型,尤其是圖像領(lǐng)域。在OCR領(lǐng)域,模型基本上都是由我們自己來建的。我們偏重于研究,包括模型、參數(shù)和我們自己做的周邊工具,工程層面考慮比較少。我們平臺的服務(wù)器也不是很多,廣告加內(nèi)容自動生產(chǎn)也就大概20臺的規(guī)模,所以我們關(guān)注底層比較少。
彭垚:大家可以對每位嘉賓做提問。我想問楊軍,我們之前也是很早測就開始TensorFlow,但是在訓(xùn)練效率尤其是分布式上面,跟MXNet差得特別遠。當(dāng)然我們也沒有像阿里這樣對每個OP性能調(diào)優(yōu)。整體測試下來,差距還不是一點兒。你們怎么去看這個問題?我們的時間上測試出來是要相差五倍。
于振華:我們在語音上大概差了兩到三倍。
楊軍:做平臺會考慮到一些更general的問題,比如有多少用戶關(guān)心這個問題。涉及到多機的訓(xùn)練,我們會發(fā)現(xiàn)可能90%是不需要多機。另外我們分析業(yè)界態(tài)勢看到,單機里面卡的數(shù)量會變得越來越高,比如說現(xiàn)在單機8卡比較多,英偉達已經(jīng)在研發(fā)單機32卡的機器;同時很多場景下可能需要跑到10臺以上規(guī)模的Model會比較的少。所以對于我們來講,用戶怎么樣更容易上手、更容易從社區(qū)獲得更多建模收益,這是關(guān)注的第一點。第二點,因為我不確定你們評估的版本是哪個。TensorFlow的版本演化很快,它剛出來的時候性能很糟糕,甚至在圖像領(lǐng)域里也很糟糕,在1.0版本以后,在主流的model里面,TensorFlow單卡圖像性能跟Caffe幾乎沒有差異了。關(guān)于優(yōu)化方面,我們認(rèn)為相應(yīng)的場景應(yīng)用優(yōu)化早晚會以某種方式提供,一個是我們自己的improvement,一個是TensorFlow內(nèi)部improvement。
再說多卡和多機。多卡優(yōu)化的話,我認(rèn)為不存在本質(zhì)系統(tǒng)差異。多機的話,TensorFlow確實比較慘,它的主流實現(xiàn)存在一些問題,第一個問題是TensorFlow的多機通訊跟Google內(nèi)部的通信框架不太一樣;第二,它的序列化和反序列化做得不太講究,因為TensorFlow設(shè)計理念很激進,力度很高,一般人看了不太敢下手會改。兩個原因造成多機性能更差一些。這個里面會有些變化,并且通過社區(qū)也可以知道有大量工作已經(jīng)在籌備研發(fā)中。
所以,我會有這種判斷,TensorFlow本身的性能是存在一些潛在的問題,但是更多是一個框架的問題,不存在fundamental的問題。從阿里來看,我們希望找一個讓用戶獲得建模、社區(qū)、收益的平臺框架,我們在繼續(xù)投入。這是我們這邊對這個事情的一個考量。
問:我是很同意。尤其對我們這樣的小公司,量也不是特別大,數(shù)據(jù)不是特別多,我們首先考慮能不能很快上手。容易上手是非常關(guān)鍵的。
我們很關(guān)注容易上手這個問題。阿里的子公司很多,有搜索,有廣告,有螞蟻金服,有高德,有優(yōu)酷,大家使用習(xí)慣也不一樣,我們會找最大公約數(shù)。
問:我的理解你們現(xiàn)在是有一個開源的Caffe,然后你們會做具體優(yōu)化,同時在優(yōu)化TensorFlow是這樣嗎?
目前主要在優(yōu)化TensorFlow,Caffe花的力氣會越來越小。
問:Caffe的優(yōu)化做完了嗎?
Caffe工作做得比較早,當(dāng)時Caffe甚至都沒有像樣的LSTM的實現(xiàn),當(dāng)時是我們自己加進去的。這兩年Caffe有很多變化,包括像英偉達、浪潮等很多公司也有相應(yīng)版本出現(xiàn)。第一,現(xiàn)在已經(jīng)有趨同情況;第二,Caffe的靈活性,我個人認(rèn)為已經(jīng)到極限了。更多的優(yōu)化不太好把持的,所以我們基本暫時停止了。
問:假設(shè)有新的Caffe Model,沒有優(yōu)化過的話,你們會繼續(xù)support,還是根據(jù)客戶的需求來考量?
楊軍:我們會去跟客戶negotiate一下,有沒有可能去遷到我們TensorFlow平臺里面去,如果他不愿意的話,我們考慮做支持。
問:我有個問題,TensorFlow版本更新非常快,我看從1.0跳到最新研發(fā)的版本,加了很多改進。我們平臺這邊跟它的版本是怎么保持一致的,尤其是我們的一些優(yōu)化可能跟它的新功能已經(jīng)重復(fù)了?
楊軍:你問了一個特別好的問題。如果我個人來看,這是平臺公司應(yīng)用TensorFlow最大的痛點。關(guān)于TensorFlow演化的趨勢和歷程,我們也很頭痛。TensorFlow演化過程是由Google強勢主導(dǎo)的,阿里作為平臺方的期待,不僅僅是Follow Google的趨勢,可能在未來希望有一定的自研甚至超越的機制。這個需要一段路程,我們要承認(rèn)國外的公司進展會更快一些,這是第一個。第二個,優(yōu)化做重復(fù)了怎么辦?這是我們該有的代價。做基礎(chǔ)設(shè)施,我們要先Follow才能超越它,這個過程中需要交學(xué)費。而這個cost可能就需要跟管理層溝通好,大概有一個量化的估計,比如說我們在選型時,盡可能避開特別容易發(fā)生沖擊的點,比如如果這個優(yōu)化是偏cuDNN層面的,我們一般不會去碰,我們認(rèn)為是會跟英偉達撞車的;同時,我們也會對TensorFlow優(yōu)化的方向做預(yù)估,我們會找一些基于行業(yè)的信息判斷、它不太容易進到的開源點會去打,這是我們的態(tài)度。對于那些繞不過去的,我們愿意去承擔(dān)相應(yīng)的后果。
問:我就想問一下,群里有人考慮過Caffe 2嗎?
答:效率很高,但是我們也不大考慮。
楊軍:我們曾經(jīng)討論過是不是接Caffe 2。我們擔(dān)心的是,這個框架太年輕,而且重新接入新的框架,是不劃算的。所以暫時沒有考慮用這個東西。
彭垚:我這邊感覺PyTorch出來以后,research層面好像是用的最多。不知道大家怎么看?我覺得有些Model、有些training是在PyTorch上面去做,然后inference還是按照自己的inference去推,在做converse之類。大概是這樣的做法。
楊軍:我的理解是,現(xiàn)在從research角度,不管是從model還是framework角度,Caffe、PyTorch基本上比較成熟,也有一些establish的Model比較好。但是專業(yè)的工程開發(fā)還是會根據(jù)應(yīng)用的具體情況、流行趨勢和support的力度,這個很難講。我覺得從Caffe、TensorFlow到TPU,業(yè)界的形式都是在變化,現(xiàn)在英特爾和高通都出專用的hardware。從工業(yè)界來說,我覺得以后還會再不斷演進。
楊軍:我也稍微補充下我的觀點。我知道,Facebook的researcher用的PyTorch,他們市場環(huán)境用的是Caffe 2。我個人覺得現(xiàn)在Deep learning社區(qū),或者這個行業(yè),處于一個轉(zhuǎn)變階段,硬件在變,軟件也在變,暫時很難統(tǒng)一起來。到未來的時候可能就剩下一套或者兩套,做得比較general。過程中不斷地迭代,最終收斂。
彭垚:我感覺,到最后應(yīng)該會收斂到兩三套,不會像現(xiàn)在這么多的Deep learning Framework。
張鵬:最后可能是大廠每人一套,Facebook的Caffe 2,Amazon的MXNet,Google的TensorFlow,Google整個生態(tài)包括TPU都是在TensorFlow。我覺得現(xiàn)在工程層面,對深度學(xué)習(xí)的支持稍微滯后,深度學(xué)習(xí)理論很多方面還不太完備,大家其實靠經(jīng)驗驅(qū)動和靠實驗驅(qū)動比較多。這些框架都在改,現(xiàn)在看來是呈現(xiàn)加速發(fā)展的趨勢。所以說,深度學(xué)習(xí)框架品牌可能會稍微穩(wěn)定,但是這幾大品牌在具體的深度學(xué)習(xí)任務(wù)上,我估計還會走比較長的路。
于振華:通過我們訊飛的一些經(jīng)驗,我認(rèn)為可能會走兩個極端,公司應(yīng)用角度比較看好還是MXNet,但是另外一個就是無論是高校還是公司研究人員,他們更喜歡靈活的,我認(rèn)為目前靈活度最高的還是PyTorch。目前他的對抗網(wǎng)絡(luò)和異地框架都支持的非常好,而且最關(guān)鍵的是,PyTorch網(wǎng)絡(luò)設(shè)備是動態(tài)的,所以強化學(xué)習(xí)對于他來說最容易實現(xiàn)的。而其他框架,目前我們還沒有能夠把它做的比較現(xiàn)成的東西。
將來,對于高校、研究機構(gòu)和公司研究人員,靈活性最高的框架可能會是流行度最高的,效率不是他們的首要需求。在企業(yè)之外,高校的學(xué)生和研究人員實際上也會是風(fēng)向標(biāo)。我也面試很多高校研究生,前兩年高校里最流行的是Caffe,現(xiàn)在PyTorch在高校中流行度更高。從長久來看,靈活性最高的框架的傳播度和大家接受的程度會是更高的。
彭垚:剛剛于振華這邊也是說了蠻重要的一件事情,大家在工作環(huán)境里邊做是分兩塊工作的,一塊是跟實現(xiàn)和產(chǎn)品更相近的,把算法應(yīng)用到行業(yè)工程,另外一塊基本上一直在做research Framework相關(guān)的。
其實我個人大部分時間都在用PyTorch,因為PyTorch做東西特別快,很多東西很容易上手。
圖片來自 https://www.tensorflow.org/
話題二:深度學(xué)習(xí)的應(yīng)用與發(fā)展
彭垚:下一個話題,聊一下深度學(xué)習(xí)應(yīng)用和Research相關(guān)的發(fā)展情況。
于振華:訊飛在識別效果上、云的規(guī)模、落地等方面,都走在比較前列。我們最近在Deep learning這塊取得了比較大的突破。我們當(dāng)初做CNN效果提升比較大,對我們來說是個意外。我們?yōu)槭裁醋鯟NN呢?講個很現(xiàn)實的工程問題,我們LTM模型考驗的核心就是前后幀的相關(guān)性。在高性能計算平臺上,相關(guān)性會導(dǎo)致并發(fā)路數(shù)會上不來。為什么呢?對任何一路進來的識別服務(wù),它的第N幀跟第N+1幀是沒辦法并行的,它必須是串行的。但是我們做CNN,在一路上可以多幀并行,這樣在inference上會做到比較好的效率實現(xiàn)。
在工程上,我們已經(jīng)實現(xiàn)了int 8的系統(tǒng),這個工作大約是兩年前開始做。Nvidia的P4和P40都是支持int 8的,理論上int8相當(dāng)于3倍加速。我們做到了3.2倍。
問:改到int8,在別的平臺,比方說inference、FPGA之類會更方便?
是的。我們公司也做了FPGA實現(xiàn)。我們還跟Intel合作在微機上做到了0.87到0.89的CPU效果。CPU這塊我們投入的就是兩三個人和兩三個月,實實在在的做到了P4差不多的水平,大概是0.9倍的量級。有個更重要的優(yōu)勢是,現(xiàn)在它的低功耗。
問:int8優(yōu)化達到3.2倍加速,是在CPU還是GPU上?
于振華:GPU。P4。
郭烽:我在高通的多媒體研發(fā)部門,主要是視覺的應(yīng)用,包括手機端目標(biāo)檢測和智能拍攝的接口。我們也有智能監(jiān)控的應(yīng)用,包括跟海康、大華都有合作,同時也有無人機平臺和VR平臺。早期我們集中在目標(biāo)分類,現(xiàn)在關(guān)注重點是在圖像的目標(biāo)檢測和分辨率提高。
另外,我們還有一塊業(yè)務(wù)是DSP。前面大家對GPU關(guān)注比較多,高通芯片是多樣化的,有CPU,有GPU,還有DSP。在DSP端做一定研發(fā)之后,DSP效果和一些專用芯片得到的效果,尤其是稍早版本的芯片效果,差不太多。到下一代芯片,在DSP端會看到高通有一些成功的應(yīng)用。高通的DSP的核會開放給OEM用,另外會加上vital process類似于sim效果的DSP,這是早期版本。高通的GPU主打低功耗,我們的目標(biāo)要求是在1W以下。
易成自動駕駛第一個重點在訓(xùn)練端,包括數(shù)據(jù)、精度,這是一個最基本的保證。另外,作為解決方案,我們不光是依賴于攝像頭,肯定要有多傳感器。在多傳感器的融合端如何實現(xiàn)深度學(xué)習(xí),這是兩塊業(yè)務(wù)。第三塊業(yè)務(wù),因為現(xiàn)在公司不大,英偉達支持訊飛等大公司會比較多,對于不大的公司的支持非常有限,在這種情況下,我們也開發(fā)一些適用硬件。
問:做自動駕駛的產(chǎn)品方向,包括哪幾個關(guān)鍵環(huán)節(jié)?你們在產(chǎn)業(yè)里面會去做哪些事情?
郭烽:易成不完全是一家startup,我們在深圳有一家投資方,他在汽車產(chǎn)業(yè)鏈有一些上下游渠道;同時我們也在做一些早期的研發(fā)產(chǎn)品,自動駕駛現(xiàn)在來說為期遙遠。另外,從技術(shù)角度來說,我們會做融合解決方案。至于解決方案和產(chǎn)業(yè)鏈上的哪些渠道廠商進行合作,還要進行探索。
趙曉萌:大家的分享都比較深。我們不太涉及優(yōu)化等深度學(xué)習(xí)本身算法的東西,我覺得我是你們的用戶。對我們小公司來說,深度學(xué)習(xí)的應(yīng)用和開發(fā)趨勢很明顯:門檻降低的非常快——不管是計算能力,計算機平臺,還有Model本身開源。小公司可以做的,就是把這東西盡快的用到業(yè)務(wù)當(dāng)中——如果容易上手,更多的人會參與進來。以后應(yīng)用這些東西,包括在大平臺上的使用,可能是創(chuàng)業(yè)公司的標(biāo)配。在內(nèi)容圖片文本方面,我們會做更多的嘗試,也會有些比較有意思的應(yīng)用。我大概就分享這么多。
彭垚:我們繼續(xù)。楊軍講一下你們現(xiàn)在平臺主要的應(yīng)用點?
楊軍:我這邊比較典型的是傳統(tǒng)的NLP和圖像。阿里有廣告推薦的經(jīng)典業(yè)務(wù)場景,也在開始嘗試深度學(xué)習(xí)做優(yōu)化。
機器翻譯是阿里基于深度學(xué)習(xí)獲得很大提升的項目,比如我們已經(jīng)完成的離線訓(xùn)練優(yōu)化。其中單卡比較多,計算比較耗時,我們通過某些tricks獲得更優(yōu)的計算圖形比,做些小tuning配合,以獲得效果;另外,傳統(tǒng)機器翻譯和傳統(tǒng)翻譯的inference很簡單,耗時也很短,但是換成神經(jīng)網(wǎng)絡(luò)翻譯,如果不做優(yōu)化,它的耗能會高出一個數(shù)量級,這塊我們會做一些工作。
NLP的應(yīng)用是在客服機器人。阿里有很多的店鋪、商家、買家,與淘寶客服,或者買家跟商家的對話方面,我們會研發(fā)機器人減少客服的工作量。
圖像方面,阿里會用AI方法做一些智能設(shè)計的工作,包括UED的團隊希望做的素材生成、素材識別、素材提取。抽象來看,這就是個簡單的圖像監(jiān)測識別的問題。在這里面,我們會把OCR的技術(shù)應(yīng)用進去。除了這個,UED能不能根據(jù)某些場景、某些信息自動生成一些圖片及素材,屬于生成學(xué)習(xí)的范疇,這塊是比較艱難的新領(lǐng)域。不過這一年非常火,也有很多的開源的代碼。真做項目就會感覺喜憂參半,喜的是開源項目多,憂的是問題也多。我們對這個效果要求很高,所以需要做很多優(yōu)化及嘗試。搜索和廣告方面,跟Google會有點相似,不同的是我們輸入比較龐大,所以需要在輸入層做針對系數(shù)的優(yōu)化,這是它跟NLP和圖像不一樣的地方。圖像場景的優(yōu)化對于搜索不太適用。
另外就是搜索廣告。搜索廣告是典型的模型大、計算量大,所以需要更多的機器規(guī)模才可以跑的更多一些,對多機的通勤優(yōu)化要求更為苛刻。這些是離線訓(xùn)練的范疇。
在線預(yù)測我們也在做。在AMT里面,我們會用基于Spark的方法,目前的項目大概有近3倍的加速效果,我們還在繼續(xù)優(yōu)化。圖像這塊我們也在做自動化網(wǎng)絡(luò),確實存在精度問題,目前在base model上還有兩到三個點的gap,說大不大,說小也不小,還有很多要去探索。或者,如何把Model做的更復(fù)雜來彌補精度的下降,同時獲得性能的加速?這是優(yōu)化這塊的一些事情。
因為歷史原因,阿里有很多的線上業(yè)務(wù)跑CPU的,從機器資源利用率和降低CPU來講,我們關(guān)注CPU會多。這在將來會限制我們的空間,因為CPU有些硬件設(shè)計對inference優(yōu)化并不非常有利。
另外,阿里也在基于FPGA做優(yōu)化,大概適用圖象場景,針對model做吞吐的優(yōu)化。
于振華:我們在FPGA方面已經(jīng)有一個落地的東西,大約在單顆芯片上實現(xiàn)了相當(dāng)于P4 的50%左右性能。如果我在板上裝兩片MTP,首先設(shè)計會很困難,這是其一;其二,這樣做得話,功耗上不占優(yōu)勢。我們知道,P4已經(jīng)做到70W以下的性能,實際上就證明MP路線是對inference絕對可以的。當(dāng)然我們知道英特爾還會推出新東西,這是很期待的。MP開發(fā)還是比較痛苦的,我也參與了做DNN、LTM、CNN、TMC的優(yōu)化,這個開發(fā)難度非常大。如果沒有很強的功能能力,我建議不要隨便碰,這個東西很痛苦。
問:開發(fā)很大一塊是數(shù)據(jù)流的,因為不同網(wǎng)絡(luò)應(yīng)用有些不太一樣。我想問,是開發(fā)FPGA版本還是相對比較通用一點?
楊軍:相對比較通用的。這個痛苦是多,本質(zhì)上底層有個DNN,一塊是MP的邏輯實現(xiàn),一塊就是所有的DMP,還有一塊將近40%去控制外圍的拓?fù)湔{(diào)度——這個跟做軟件差別是很大的。做軟件的話,拓?fù)涿枋龆际荈ramework本身,我不需要去關(guān)注,但是這塊是自己去開發(fā)的,比較麻煩的。
而且還有個更惡心的是,PSE和DPR做的接口是軟實現(xiàn)的,它占了幾大類,本身就占掉一塊,留給我們的邏輯空間只剩下70%。
問:你們最終FPGA的功耗方法沒有測過?
楊軍:它的功耗大概是70多瓦,但是我們只跑到了40瓦。另外我們知道FPGA能跑500兆,我們最終做到了將近400兆,大約實際功耗是40多瓦,比P3稍微低點。
問:剛才提到了大概百分之二到三個點下降,我想問的是,你們主要是在分類方面做的測試,還是在目標(biāo)檢測方面做的測試?
楊軍:目前在分類上做的測試。目標(biāo)檢測會更難、更有挑戰(zhàn)。
郭烽:拿手機應(yīng)用來舉例,實際上模型吞吐不是個非常大的瓶頸。說降低模型尺寸和把APP做得小都是忽悠人的,本質(zhì)上要有提升。就是相當(dāng)于我們在load的時候是load的int 8然后轉(zhuǎn)成16的,我們這塊大約有3%收益;去做int 16的變化,把它到減到int 8,運算還是使用int16,系統(tǒng)性能大約會有40%的提升。高通對功耗要比較高,所以我們注重這些方面。
彭垚:我稍微補充一點點。像郭烽說的,除了技術(shù)加入和內(nèi)存收益以外,他的功耗挺高的。另外,它的優(yōu)化機制不太一樣,這個時候是有優(yōu)勢的。
問:還有一個題外話,訊飛的數(shù)據(jù)量比較大,對于深度學(xué)習(xí),你看到數(shù)據(jù)量的提高,margin是不是下降。
于振華:現(xiàn)在在語音識別上,我們原來在做DNN的時候,做到六千小時數(shù)據(jù),就撞到邊界了,就不提升了。剛做MTM,做兩萬小時,到邊界了。我們現(xiàn)在做DEEP CNN,用了半年多,我們發(fā)現(xiàn)我們以前不Work的,在nxnet我哪怕做到十萬小時他還是有收益的。
問:從六千到一萬的收益率和從一萬到七萬的收益率是一樣的嗎?
當(dāng)然后面越大,收益率越小。語音識別想占位的話,哪怕是3%或者4%,對我們來說也是非常重要。
問:你覺得數(shù)據(jù)的貢獻會有極限,或者說到某一點之后他的貢獻就微乎其微?
就看你做什么/追求什么。如果要搶占第一的話,哪怕是百分之一二的提升也是要去搶占的。如果就想把它落地做個比較好的應(yīng)用,我覺得是做到一定程度就足夠了。
彭垚:新浪張鵬聊一聊最近的進展?
張鵬:我們現(xiàn)在的工作重點是幫助內(nèi)容生產(chǎn),工作重點是提升生產(chǎn)效率。一方面是機器文本內(nèi)容的自動生成,用在突發(fā)事件的報道以及轉(zhuǎn)播。還有一個領(lǐng)域是自動配圖。很多文章是沒有圖的,編輯人工找圖是非常大的工作量,我們會用算法做匹配。再有就是自動切圖——也是跟圖像相關(guān)的。自動切圖的內(nèi)容生產(chǎn)量比較大,在各個客戶端適配的時候,我們會對人臉物體都做相應(yīng)的檢測,然后根據(jù)情況提供最佳的切圖建議。
還有一部分就是視頻推薦,視頻推薦主要是我們在嘗試?yán)斫庖曨l的內(nèi)容。視頻可以有很多標(biāo)簽,但是目前它能夠提供的文本信息很少,所以這方面我們也做了一些工作。這方面我們用Google的Inception V3,把里邊的視頻信息提取物體特征,我們自己做了FrameNetwork,主要是把視頻映射到自己的語義空間里面去,然后根據(jù)用戶的行為來做推薦。未來繼續(xù)提升內(nèi)容的生產(chǎn)和分發(fā)效率。我們也在看圖像增強,因為我們現(xiàn)在圖像質(zhì)量不是很高,但是還沒有什么比較有效的解決辦法。
彭垚:七牛是云服務(wù)廠家,跟阿里云差不太多。不一樣在于,我們的客戶都是短視頻,或者直播,或者是社交的APP,我們這邊對AI的大部分需求都是在圖片和視頻,比如給社交場景做圖像標(biāo)簽。我們平臺上有各種各樣社交軟件,像男同社交、女同社交、短視頻。我們需要識別非常少見的內(nèi)容,比方男的穿黑絲襪。我們通過客戶提供的少量素材,依靠快速的Learning,之后爬取,再滾動做標(biāo)注,有很多APP層的training迭代。我是主要在做的工作。
我比較好奇,阿里的客戶都用你們的平臺去做什么?
楊軍:像小蟻是一個小米生態(tài)系統(tǒng)的公司,他做視頻的分析和解析工作。像機器人公司,對NLP處理會有訴求。搜索推薦場景在我們的深度學(xué)習(xí)平臺比較少。比較多的是以圖像為主,語音少一些。我的判斷是,語音的技術(shù)門檻相對比較深,產(chǎn)品形態(tài)相對不是那么多樣化,更多是被幾家比較出色的公司壟斷了,比如訊飛,不像圖像能夠開放和多元。
圖片來自 http://caffe.berkeleyvision.org/
話題三:深度學(xué)習(xí)展望
彭垚:我們做視頻相關(guān),我覺得影視多線索標(biāo)注有很大提升空間。現(xiàn)在的Learning可以做到非常少的標(biāo)注,多線索標(biāo)注還在Research的階段。
楊軍:我認(rèn)為,對抗生成學(xué)習(xí)GAN(Generative adversarial networks)和強化學(xué)習(xí)未來會有更大的發(fā)展空間。
原因有兩個,一是對抗生成在一定程度上可以幫我們解決樣本稀缺的問題,二是它會把我們的視角從判別問題領(lǐng)域更多走向生成領(lǐng)域。
強化領(lǐng)域我比較關(guān)注,是因為我發(fā)現(xiàn),有更多的工作可以通過限制反饋來拿到結(jié)果,大量節(jié)省了獲取樣本的成本。比如說像最近深度學(xué)習(xí)訓(xùn)練的多卡的placement有最新的工作,大概是5月份Google已經(jīng)有這樣的信息出來。這就是典型的一個Reinforcement Learning,來減少標(biāo)準(zhǔn)樣本做優(yōu)化的過程。我也非常看好組合優(yōu)化的問題。
強化學(xué)習(xí)引出一個新問題。很多時候想用reinforcement learning去做一些事情,就會發(fā)現(xiàn)硬件不夠了。這可能會推動新一輪的硬件變化。我自己看中GAN和reinforcement learning兩個方向。
郭烽:我比較關(guān)注的是在目標(biāo)方面的應(yīng)用。在圖像上面,單禎圖片不管是目標(biāo)檢測還是目標(biāo)分類都比較多,但是對目標(biāo)追蹤沒有比較好的方法。怎么能簡化運算量,同時提升智能效果,我覺得還有些值得探討的地方。
另外一大塊,是深度學(xué)習(xí)的應(yīng)用、深度學(xué)習(xí)的公眾化。以后如果手機端的硬件大規(guī)模普及,手機端智能應(yīng)用發(fā)展起來,可以有各種各樣單禎或者視頻流的分析應(yīng)用場景。是不是在手機端能夠鋪開,這是個值得關(guān)注的點。
于振華:從我的理解,不管是高通,還是海思,都在做深度學(xué)習(xí)的專用芯片。我估計未來要不了多久,基于深度學(xué)習(xí)專用芯片肯定會有的,可能不會面向普通的開發(fā)者,而是會面向比較大的客戶。這是第一。
第二,剛才于總提到的GPU,至少從我的理解,一般不會用GPU來做移動端大規(guī)模計算。一旦你把在手機上把GPU打開,特別是連續(xù)待機,功耗非常大。GPU應(yīng)用會有限制。這是我的基本理解。
張鵬:我有兩個問題。我們一直挺關(guān)注合成語言領(lǐng)域,未來內(nèi)容分發(fā)很可能是通過語音的。在個性化的語音生成這塊,訊飛進展如何?在語言識別領(lǐng)域,尤其是在高背景噪音的情況下,現(xiàn)在公開出來的幾種技術(shù)都非常糟糕,比如雞尾酒會問題等,訊飛這方面進展如何?
于振華:我先回答你第二個問題。環(huán)境嘈雜和多人說話,實際上不能單靠軟件,肯定要結(jié)合硬件,包括多麥克。會議室很大的問題是混響,如果不結(jié)合硬件的話,效果也是不太好的。結(jié)合硬件系統(tǒng),將來的解決方案,對于雞尾酒會問題或者會議室環(huán)境噪音,都是能夠有效解決的。目前的會議效果會差些,基本上能做到80%以上的準(zhǔn)確率。用手機輸入法會好些,因為人知道在對計算機講話,他會配合、會特別注意語音語調(diào)語速,所以輸入法能做到97%或者98%。
第一個問題方面,我們以前做語音合成有70%是像的,30%是不像的。我們現(xiàn)在做什么水平?可以做到都是相同的。70%以上他講的內(nèi)容是我們平時熟悉的人分辨不出來的,聽不出來是錄音還是機器合成的。剩下的30%的內(nèi)容,熟悉的人可以察覺,一聽聲音就知道是誰,但是能分辨這不是他自己在說話。
趙曉萌:我們現(xiàn)在深度學(xué)習(xí)用的比較好的,是把圖片用CNN向量化,文本用doc2vec去向量化,然后通過淺的神經(jīng)網(wǎng)分類器,能夠把主題等東西識別出來。
我們還有一個比較有意思的應(yīng)用。有一段時間,小紅書上面臉上長痘子的特別多,不是每個人都喜歡看到長滿痘子的照片,我們就做了一個能夠識別痘痘臉圖片的應(yīng)用,CNN可以非常好的識別全臉、半臉、甚至1/4臉的圖片,有少量器官的圖片都會識別出來。這個對我們來說很有用。
下一步,在深度學(xué)習(xí)方面要做的是,把搜索和推薦系統(tǒng)從統(tǒng)計搬到深度學(xué)習(xí)上。我們會參考平臺提供的解決方案,也會讀一些這方面的paper自己來試一試。以后,一切比較牛B的我們覺得很好的事情,比如用戶分享圖片的質(zhì)量,甚至是圖片的逼格,我要識別出來這種圖。我們想研究用戶穿衣的style和風(fēng)格等方面,比如都是鞋,用戶更喜歡哪種鞋;都是眼鏡,用戶更喜歡哪些眼鏡。這個是不太好拿出來去搜的,但是能從用戶交互的過程中,通過深度學(xué)習(xí)把相應(yīng)特征提取出來。我覺得對我們來說非常有用。
總結(jié)
彭垚:最后大家輪流總結(jié)一下。我感覺收獲比較大,老于介紹了語音方面的東西,包括平臺上的優(yōu)化。聽了楊軍在平臺上做優(yōu)化,我感覺我們對TensorFlow的投入不夠,值得花點時間再看看。
于振華:我們在圖像圖片領(lǐng)域也是剛剛起步,跟大家學(xué)到挺多。大家在不同平臺投入的都挺多,我們也要加大些投入了。
郭烽:首先非常高興認(rèn)識大家。我剛回來沒多久,在國內(nèi)能認(rèn)識大家,很高興。在深度學(xué)習(xí)方面,不管是從應(yīng)用層還是從實驗層,大家見解也非常深,對我也是個很大的提高。我分享了一些比較底層的東西,受眾稍微少一點,希望今后和大家多交流。
趙曉萌:我今天學(xué)到很多東西。我原來關(guān)注底層優(yōu)化比較少,聽了大家的交流,我想還是先借用大家的已有優(yōu)化成果。
楊軍:我之前并沒有接觸過PyTorch,今天不只一位朋友在提PyTorch,我會關(guān)注一下。通過交流,我確實了解到很多use case,高清圖片生成、訊飛語音、小紅書圖片搜索、新浪內(nèi)容業(yè)務(wù)和郭烽自動駕駛都蠻不一樣的。我們做平臺,最需要知道頂層應(yīng)用有哪些困擾,這是我覺得有收獲的地方,可以說超過預(yù)期。
張鵬:我最大的感受是大家比較多樣。我這邊一直是做應(yīng)用很多,底層考慮較少。對我們來講,應(yīng)用場景不成問題,現(xiàn)在最大的問題就是成本。我們也在測阿里的云服務(wù),未來應(yīng)該還會有比較深入的合作。謝謝大家。
結(jié)語
彭垚:感謝大家,大家的分享都非常精彩,我也受益匪淺。希望之后大家常聯(lián)系。今天就到這里。
總結(jié)
以上是生活随笔為你收集整理的深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPU编程语言选择(OpenCL、CUD
- 下一篇: Caffe上用SSD训练和测试自己的数据