0
本文作者: 宗仁 | 2016-08-31 20:48 | 專題:百度大腦與AI商業(yè)化——百度世界大會(huì)專題 |
宗仁,黃鑫聯(lián)合編輯
百度今天開源了其深度學(xué)習(xí)平臺(tái)Paddle,引發(fā)了挺多人工智能領(lǐng)域開發(fā)者的興趣,包括一些之前一直在Tensorflow和Caffe上練手的開發(fā)者。不過鑒于深度學(xué)習(xí)的開源平臺(tái)目前并不多,作為開發(fā)者也作為熱心吃瓜群眾的頭等大事,就是想知道——這個(gè)平臺(tái)怎么樣?別人怎么看這個(gè)平臺(tái)?以及這個(gè)平臺(tái)跟Tensorflow以及Caffe有何區(qū)別?
Paddle本身在開源前就一直存在,始于2013年的時(shí)候,因?yàn)榘俣壬疃葘?shí)驗(yàn)室察覺到自己在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練方面,伴隨著計(jì)算廣告、文本、圖像、語音等訓(xùn)練數(shù)據(jù)的快速增長(zhǎng),傳統(tǒng)的基于單GPU的訓(xùn)練平臺(tái)已經(jīng)無法滿足需求,為此在徐偉的帶領(lǐng)下,實(shí)驗(yàn)室搭建了Paddle(Parallel Asynchronous Distributed Deep Learning)多機(jī)并行GPU這個(gè)訓(xùn)練平臺(tái)。
但今天開源的Paddle當(dāng)然不是3年前的簡(jiǎn)單模型,3年前Paddle可能還是一個(gè)獨(dú)立的深度學(xué)習(xí)平臺(tái),不能很好地支持把數(shù)據(jù)從其他平臺(tái)接入的需求。但今天的Paddle已經(jīng)在處處強(qiáng)調(diào),它的特色是讓Spark與PADDLE耦合起來,是一個(gè)基于Spark的異構(gòu)分布式深度學(xué)習(xí)系統(tǒng)。并且經(jīng)過和百度相關(guān)業(yè)務(wù)的“緊密摩擦”后,它已經(jīng)迭代了兩個(gè)版本:從Spark on Paddle架構(gòu)1.0版,到Spark on PADDLE 架構(gòu)2.0版。根據(jù)平臺(tái)開源的規(guī)則,大概是在百度內(nèi)部用的非常得心應(yīng)手,修復(fù)了一系列bug后,實(shí)驗(yàn)室才終于打算把Spark on PADDLE以及異構(gòu)計(jì)算平臺(tái)開源。至于百度為什么要開源,這個(gè)理由大家都懂的
深度學(xué)習(xí)平臺(tái)目前還有很多bug——吸引更多的開發(fā)者來嘗試和使用深度學(xué)習(xí)技術(shù),對(duì)提高Paddle的檔次是絕對(duì)有幫助的。
知乎上賈清揚(yáng)的回答,目前是比較正面的評(píng)價(jià)。
1. 很高質(zhì)量的GPU代碼
2. 非常好的RNN設(shè)計(jì)
3. 設(shè)計(jì)很干凈,沒有太多的abstraction,這一點(diǎn)比TensorFlow好很多。
4. 高速RDMA的部分貌似沒有開源(可能是因?yàn)镽DMA對(duì)于cluster design有一定要求):Paddle/RDMANetwork.h at master · baidu/Paddle · GitHub
5. 設(shè)計(jì)思路比較像第一代的DL框架,不過考慮到paddle已經(jīng)有年頭了,這樣設(shè)計(jì)還是有歷史原因的。
5.1 config是hard-code的protobuf message,這對(duì)擴(kuò)展性可能會(huì)有影響。
5.2 可以看到很多有意思的類似歷史遺留的設(shè)計(jì):采用了STREAM_DEFAULT macro,然后通過TLS的方式定向到非default stream:Paddle/hl_base.h at 4fe7d833cf0dd952bfa8af8d5d7772bbcd552c58 · baidu/Paddle · GitHub (所以Paddle off-the-shelf不支持mac?)
5.3 在梯度計(jì)算上采用了傳統(tǒng)的粗粒度forward/backward設(shè)計(jì)(類似Caffe)??赡苡腥藭?huì)說“所以paddle沒有auto gradient generation”,這是不對(duì)的,autograd的存在與否和op的粒度粗細(xì)無關(guān)。事實(shí)上,TensorFlow在意識(shí)到細(xì)粒度operator超級(jí)慢的速度以后,也在逐漸轉(zhuǎn)回粗粒度的operator上。目前只看到這里??傊且粋€(gè)非常solid的框架,百度的開發(fā)功底還是不錯(cuò)的。
估計(jì)不少人都讀過賈清揚(yáng)的評(píng)價(jià),下面我們貼一個(gè)前百度數(shù)據(jù)工程師,極視角CTO纓寧的評(píng)價(jià)
看了一下,從設(shè)計(jì)理念來看和Caffe挺像的,但網(wǎng)絡(luò)模型沒有Caffe那么容易定義。最大貢獻(xiàn)是做了分布式,提高了建立模型的速度。再詳細(xì)的感受就得看代碼和上手用了。
另一個(gè)跟上面兩位觀點(diǎn)反差較大的某研究深度學(xué)習(xí)的學(xué)者表示
Tensorflow的架構(gòu)可以認(rèn)為是一個(gè)升級(jí)版的theano, theano比Caffe還要早幾年,只是Caffe最早train好了,同時(shí)發(fā)布了一些成功的卷積神經(jīng)網(wǎng)絡(luò)模型因此得到更多關(guān)注。Tensorflow和Caffe沒啥太大的關(guān)系,可能借鑒了Caffe某一些實(shí)現(xiàn)技巧,本質(zhì)上沒啥關(guān)系。 百度這個(gè)很有可能是看到Caffe的成功之后實(shí)現(xiàn)的,很大程度模仿的Caffe, 同時(shí)試圖修改一些東西使其看的和Caffe不一樣。
我估計(jì)使用Caffe的人不會(huì)投向它,使用其他的工具的人(tensorflow, keras, theano, torch,mxnet)也不會(huì)投向它, 大家說幾天然后就……一個(gè)月之后看一下它的github的關(guān)注量和github上能夠找到的別人寫的代碼量你就知道他是否能有什么浪花(后面可以看看有沒有人用他來參加kaggle或者其他比賽或在科研發(fā)布代碼)?,F(xiàn)在基本每個(gè)大公司都發(fā)布自己的深度學(xué)習(xí)框架(或者機(jī)器學(xué)習(xí)框架),例如微軟, 亞馬遜, 雅虎,好像都沒有大動(dòng)靜。
雷鋒網(wǎng)申請(qǐng)了Paddle的今天公測(cè)版本,目前還在審核中,雖然不能直接下載體驗(yàn),但和其它兩個(gè)平臺(tái)的區(qū)別也不是毫無蹤跡。根據(jù)我們之前對(duì)Caffe, Tensorflow的了解,以及今天Paddle放出的數(shù)據(jù)。
附接口語音
Caffe ——cmd, matlab, python
Tensorflow——python, c++
Paddle ——python, c++
(注:其中python是開發(fā)者主要使用的語言, 只有Caffe修改model內(nèi)部的時(shí)候要用的c++。(如有異議,歡迎各開發(fā)者進(jìn)一步交流)
1)Caffe可以說是第一個(gè)工業(yè)級(jí)深度學(xué)習(xí)工具,始于2013年底由UC Berkely的賈楊清編寫的具有出色的CNN實(shí)現(xiàn)功能的開發(fā)語言,在計(jì)算機(jī)視覺領(lǐng)域Caffe仍然是最流行的工具包。
Caffe的開發(fā)語言支持C++和Cuda,速度很快,但是由于一些歷史性的遺留架構(gòu)問題,它的靈活性不夠強(qiáng)。而且對(duì)遞歸網(wǎng)絡(luò)和語言建模的支持很差。Caffe支持所有主流開發(fā)系統(tǒng),上手難度屬于中等水平。
2)Tensorflow是Google開源的第二代深度學(xué)習(xí)技術(shù),是一個(gè)理想的RNN API實(shí)現(xiàn),它使用了向量運(yùn)算的符號(hào)圖方法,使得開發(fā)的速度可以很快。
Tensorflow支持的比較好的系統(tǒng)只有各種Linux系統(tǒng)和OSX,不過其對(duì)語言的支持比較全面,包含了Python、C++和Cuda等,開發(fā)者文檔寫得沒有Caffe那么全面,所以上手比較難。
3)而此次百度的Paddle,作為基于Spark的異構(gòu)分布式深度學(xué)習(xí)系統(tǒng),通過使用GPU與FPGA異構(gòu)計(jì)算提升每臺(tái)機(jī)器的數(shù)據(jù)處理能力,暫時(shí)獲得了業(yè)內(nèi)“相當(dāng)簡(jiǎn)潔、設(shè)計(jì)干凈、穩(wěn)定,速度較快,顯存占用較小?!钡脑u(píng)價(jià),跟它通過使用GPU與FPGA異構(gòu)計(jì)算提升每臺(tái)機(jī)器的數(shù)據(jù)處理能力有重要聯(lián)系。不過具體表現(xiàn)如何,還需等待幾天觀察一下大家的使用感受。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。