0
雷鋒網(wǎng) AI 研習(xí)社按:PaddlePaddle 的前身是百度在 2013 年自主研發(fā)的深度學(xué)習(xí)平臺(tái),在百度內(nèi)部已經(jīng)使用多年,支持百度內(nèi)部各項(xiàng)業(yè)務(wù)。 2016 年 8 月底百度開(kāi)源了 PaddlePaddle 之后,在短時(shí)間內(nèi)迅速成為全球開(kāi)發(fā)熱度(Github Pull Request 數(shù)量)增速最高的開(kāi)源深度學(xué)習(xí)平臺(tái)。PaddlePaddle 項(xiàng)目不僅提供深度學(xué)習(xí)框架,還提供各種簡(jiǎn)化調(diào)試和支持大規(guī)模訓(xùn)練的附加技術(shù)。PaddlePaddleVisualDL 開(kāi)發(fā)不到半年的時(shí)間,在Github 上的“star”數(shù)就逼近了開(kāi)發(fā)了兩年多的 Google TensorBoard。
PaddlePaddle 的社區(qū)增速和其技術(shù)迭代速度密不可分。剛開(kāi)源的時(shí)候,PaddlePaddle 的設(shè)計(jì)思路和四年前開(kāi)發(fā)的Caffe類(lèi)似。在一年時(shí)間里,連續(xù)推出了“v2”和“Fluid”兩代新技術(shù):其中 v2 像 MxNet 和Caffe2 一樣參考 TensorFlow 增加了 operators 的概念;Fluid 類(lèi)似 PyTorch,但是不依賴(lài) Python 的控制流(if-else、for等),而是提供自己的解釋器甚至編譯器,所以不受限于 Python 的執(zhí)行速度問(wèn)題。
在 2017 年 11 月的百度世界大會(huì)上,PaddlePaddle 發(fā)布了三項(xiàng)新功能:
PaddlePaddleFluid 提供高級(jí)語(yǔ)言中的 while 和 if 等控制流結(jié)構(gòu),提升使用者的開(kāi)發(fā)效率,同時(shí)利用編譯優(yōu)化技術(shù)保證計(jì)算性能。
PaddlePaddleCloud 支持使用者在瀏覽器里開(kāi)發(fā) AI 應(yīng)用,在云端調(diào)試運(yùn)行,開(kāi)發(fā)者不需要在個(gè)人電腦和機(jī)群之間切換,提升了工作效率。
PaddlePaddleEDL 是全球首個(gè)支持彈性作業(yè)調(diào)度的開(kāi)源 AI 云解決方案,通過(guò)與 Kubernetes 合作實(shí)現(xiàn)彈性作業(yè)調(diào)度。
三大新功能的推出,進(jìn)一步加強(qiáng)了 PaddlePaddle 的易用性,提高了效率,并降低了開(kāi)發(fā)者的使用門(mén)檻。
陸奇曾表示,開(kāi)源代碼寫(xiě)得好,不僅能解決大家的痛點(diǎn),開(kāi)源代碼也會(huì)變得越來(lái)越強(qiáng),開(kāi)源代碼的生命力必然會(huì)超過(guò)封閉體系的代碼。PaddlePaddle 開(kāi)源至今,還會(huì)為開(kāi)發(fā)者提供哪些服務(wù)?怎樣在大量流行開(kāi)源框架的競(jìng)爭(zhēng)之下脫穎而出?如何成為陸奇口中所說(shuō)的“越來(lái)越強(qiáng)”的開(kāi)源平臺(tái)?帶著這些疑問(wèn),雷鋒網(wǎng) AI 研習(xí)社采訪了百度 PaddlePaddle 的技術(shù)負(fù)責(zé)人王益,他將分享在開(kāi)發(fā) PaddlePaddle 過(guò)程中的經(jīng)驗(yàn)點(diǎn)滴。
嘉賓簡(jiǎn)介:王益,在加入百度之前曾任硅谷 AI 創(chuàng)業(yè)公司 Scaled Inference 創(chuàng)始科學(xué)家,LinkedIn 高級(jí)主任數(shù)據(jù)科學(xué)家,騰訊社交廣告技術(shù)總監(jiān),Google研究員。王益曾在清華大學(xué)和香港城市大學(xué)學(xué)習(xí),并取得了清華大學(xué)機(jī)器學(xué)習(xí)和人工智能博士學(xué)位。此外,他還是 IEEE 的高級(jí)會(huì)員,著有《推薦系統(tǒng)實(shí)踐》一書(shū)。
以下是雷鋒網(wǎng) AI 研習(xí)社對(duì)王益的采訪內(nèi)容:
PaddlePaddle 其實(shí)已經(jīng)有很多年的歷史了,從 2013 年發(fā)展至今,PaddlePaddle 在設(shè)計(jì)的過(guò)程中經(jīng)過(guò)了哪些重大變化?
王益:PaddlePaddle 的2013年版本是百度杰出科學(xué)家徐偉老師主持設(shè)計(jì)和開(kāi)發(fā)的,其設(shè)計(jì)思路和同時(shí)代的 Caffe “心有靈犀”:表示一個(gè)模型的方式都是“一串 layers”。這個(gè)設(shè)計(jì)沿用了三年。2016年8月底,PaddlePaddle 開(kāi)源之后,我們?cè)谛炖蠋熤笇?dǎo)下做了兩代升級(jí):2017 年 4 月推出 PaddlePaddle v2,2017 年底推出PaddlePaddleFluid。
PaddlePaddle v2 的推出把 PaddlePaddle 的技術(shù)升級(jí)到了 2015 年 Google 推出的TensorFlow 的水平 —— 把 layers “打碎”成更細(xì)粒度的 operators,同時(shí)支持更復(fù)雜的網(wǎng)絡(luò)拓?fù)洹皥D”而不只是“串”。
PaddlePaddle Fluid 的設(shè)計(jì)思路和 PyTorch 以及 TensorFlowEager Execution 很像 —— 已經(jīng)不再有“模型”的概念,也就不在意“圖”(graph ofoperators)或者“串”(sequence oflayers)了,而是只有“程序”的概念。當(dāng)然,從程序是可以導(dǎo)出一個(gè)圖的,這也是 從一個(gè) PyTorch 程序可以被導(dǎo)出成 ONNX 文件格式的模型一樣。
需要提醒的是,PyTorch 和 EagerExecution 程序中的控制流(比如 if-else, for)都是用的 Python,而 Python 執(zhí)行速度慢且難以提速,這是一個(gè)瓶頸。Fluid 程序也是一個(gè) Python 程序,但是執(zhí)行這個(gè)程序會(huì)先把自己輸出成一個(gè) protobuf message,隨后調(diào)用 Fluid 解釋器(而不是 Python 解釋器)來(lái)解釋執(zhí)行這個(gè) protobufmessage,這樣比 Python 解釋器的執(zhí)行速度更快,和 TensorFlow 執(zhí)行圖的速度一樣。甚至更進(jìn)一步,我們?cè)陂_(kāi)發(fā)編譯執(zhí)行的方式 —— 寫(xiě)一個(gè) transpiler 把 protobuf message 表示的程序翻譯成 C++ 程序,然后可以用 nvcc、icc、gcc 編譯成二進(jìn)制代碼,直接運(yùn)行在服務(wù)器和手機(jī)上。從而徹底解決 PyTorch 和 Eager Execution 程序的執(zhí)行速度受限于 Python 的執(zhí)行速度的問(wèn)題。
在知乎上,Caffe 的作者賈揚(yáng)清稱(chēng)贊了百度的 PaddlePaddle,并說(shuō)“整體的設(shè)計(jì)感覺(jué)和 Caffe 心有靈犀”。那么,您認(rèn)為,跟 Caffe 以及 TensorFlow、PyTorch、MXNet 等熱門(mén)框架相比,PaddlePaddle 的優(yōu)勢(shì)在哪?
王益:知乎上賈揚(yáng)清的稱(chēng)贊是在 PaddlePaddle 開(kāi)源之初。如我上文所述,當(dāng)時(shí)的 PaddlePaddle 和 Caffe 確實(shí)很像。今天在百度內(nèi)外推動(dòng)的都是 PaddlePaddleFluid 了,是一個(gè)比 PyTorch 和 Eager Execution 更激進(jìn)的技術(shù)思路。
陸奇曾表示,要將 PaddlePaddle 發(fā)展成具有中國(guó)特色,最適合中國(guó)國(guó)情的深度學(xué)習(xí)平臺(tái)。請(qǐng)問(wèn)“適合中國(guó)國(guó)情”的深度學(xué)習(xí)平臺(tái)怎樣理解?它和國(guó)外的深度學(xué)習(xí)平臺(tái)有何區(qū)別?
王益:從我的理解來(lái)看,一方面是基礎(chǔ)計(jì)算架構(gòu)要適應(yīng)中國(guó)的現(xiàn)狀;另一方面是計(jì)算技術(shù)上要世界領(lǐng)先,能人所不能。這兩方面都有很多可以做的工作,而且百度還是足以自信的。
雖然現(xiàn)在很多深度學(xué)習(xí)應(yīng)用用一個(gè)幾臺(tái)機(jī)器的小集群就可以解決,但是 Web scaled 應(yīng)用,比如廣告和搜索引擎,或者新的應(yīng)用,比如通過(guò) Lidar、Radar、cameras 采集海量數(shù)據(jù)的無(wú)人車(chē),都是需要大規(guī)模深度學(xué)習(xí)計(jì)算能力的。通過(guò)擴(kuò)展 Kubernetes 這樣的先進(jìn)的集群管理系統(tǒng),PaddlePaddle EDL 比 Google KubeFlow 優(yōu)勢(shì)很明顯 —— EDL 不僅可以把 PaddlePaddle 程序在 Kubernetes 上跑起來(lái),而且可以彈性調(diào)度—— 不忙的時(shí)候一個(gè)訓(xùn)練作業(yè)多用一些資源,忙的時(shí)候少用一些,但是資源變化不會(huì)導(dǎo)致作業(yè)失?。欢?KubeFlow 只是把 TensorFlow 程序在 Kubernetes 上跑起來(lái),不能實(shí)現(xiàn)彈性調(diào)度。另外,EDL 不僅調(diào)度深度學(xué)習(xí)作業(yè),也彈性調(diào)度其他作業(yè),比如 Nginx、MySQL 等,從而極大地提升集群總體利用率—— 在國(guó)家深度學(xué)習(xí)重點(diǎn)實(shí)驗(yàn)室機(jī)群上實(shí)測(cè)效果高達(dá) 91%,遠(yuǎn)超一般的高性能計(jì)算集群的 30% 左右的利用率。這樣的技術(shù)在公有云和私有云上的推廣,很容易就能用 1/3 的機(jī)器做同樣的工作,為一家單位一年節(jié)省的計(jì)算成本可以高達(dá)百萬(wàn)、甚至數(shù)百萬(wàn)美元。
深度學(xué)習(xí)平臺(tái)和編程語(yǔ)言一樣,不是一個(gè)獨(dú)立的程序,而是一個(gè)社區(qū) —— 訓(xùn)練要能在國(guó)內(nèi)的云服務(wù)上跑;要能部署到國(guó)內(nèi)的企業(yè)的私有云上;國(guó)內(nèi)的科技創(chuàng)新企業(yè)在制造定制化的加速芯片,PaddlePaddle 應(yīng)該是連接這些基礎(chǔ)創(chuàng)新和應(yīng)用的橋梁;要開(kāi)放中文數(shù)據(jù)和中文模型—— 比如圖像識(shí)別的 label 是中文的;語(yǔ)音識(shí)別和語(yǔ)音合成等應(yīng)用也是和中文強(qiáng)相關(guān)的。
現(xiàn)在 Google 正加速 TensorFlow 在國(guó)內(nèi)的推廣(開(kāi)設(shè) TensorFlow 微信公眾號(hào)、中文網(wǎng)站等),百度的 PaddlePaddle 會(huì)采用怎樣的策略應(yīng)對(duì)?
王益:在宣傳和推廣方面,PaddlePaddle 團(tuán)隊(duì)也在建設(shè)宣傳渠道。歡迎大家訪問(wèn)我們的官方網(wǎng)站 paddlepaddle.org,也歡迎大家訂閱我們的微信公眾號(hào)(微信號(hào):PaddleOpenSource)。前一年里,PaddlePaddle 團(tuán)隊(duì)的人數(shù)也在迅速增長(zhǎng),雖然和 TensorFlow 團(tuán)隊(duì)的規(guī)模相比還是有一定的距離,我們?cè)?Github 上的 pull request 和 issues 數(shù)量增長(zhǎng)和 TensorFlow 是同量級(jí)的,這背后是團(tuán)隊(duì)持續(xù)一年多努力工作的結(jié)果。
從 PaddlePaddle 的發(fā)展過(guò)程可看出,百度正努力降低 PaddlePaddle 的開(kāi)發(fā)門(mén)檻,同時(shí)提升其開(kāi)發(fā)效率,從而讓開(kāi)發(fā)者能夠順暢地使用 PaddlePaddle 開(kāi)發(fā)產(chǎn)品。那么除了不斷優(yōu)化 PaddlePaddle 之外,百度還提供了哪些措施來(lái)獲取更多的開(kāi)發(fā)者使用 PaddlePaddle ?
王益:PaddlePaddle 有一個(gè) Web-based IDE,可以讓大家在瀏覽器里用 JupyterNotebook 編程,然后按一個(gè)鍵,就把程序發(fā)送到云端(Kubernetes 集群上)運(yùn)行,程序運(yùn)行時(shí)候的輸出實(shí)時(shí)地顯示在瀏覽器里。這樣大家不需要在多個(gè)編程環(huán)境之間切換—— 在筆記本上開(kāi)發(fā),在 GPU server 上驗(yàn)證,在集群上跑試驗(yàn),也就不需要維護(hù)多個(gè)環(huán)境里的各種軟件(比如 Python)的版本和配置一致。
PaddlePaddle 還提供一個(gè)訓(xùn)練過(guò)程可視化的工具 VisualDL:https://github.com/PaddlePaddle/VisualDL。 這個(gè)工具很方便,社區(qū)反映非常熱烈。開(kāi)始開(kāi)發(fā)才不到半年,Github 上的“星”的數(shù)量(1071)就直追開(kāi)發(fā)了兩年多的 Google TensorBoard 了(1144)。
我們還在為 PaddlePaddle Fluid 開(kāi)發(fā)一個(gè)類(lèi)似 GDB 的調(diào)試器。希望今年夏天的時(shí)候可以面世,進(jìn)一步方便大家調(diào)試深度學(xué)習(xí)程序。
有開(kāi)發(fā)者反饋,和其他框架相比,PaddlePaddle 的文檔資料較少,請(qǐng)問(wèn)百度未來(lái)在 PaddlePaddle 社區(qū)運(yùn)營(yíng)以及開(kāi)發(fā)文檔資料的支持工作上會(huì)有哪些具體的措施?
王益:文檔問(wèn)題確實(shí)存在。我們也一直在反思原因和尋求解答。原因有幾個(gè):
開(kāi)源一年多以來(lái),技術(shù)演進(jìn)速度很快,文檔沒(méi)有跟上。
開(kāi)源之前,作為公司內(nèi)部項(xiàng)目,很多用戶(hù)交流都發(fā)生在公司內(nèi)部的通信工具上,沒(méi)有歸檔到文檔里,很可惜。
團(tuán)隊(duì)人力較少,顧不上文檔的完備。
中國(guó)工程師用英語(yǔ)寫(xiě)作文檔的能力有限。
針對(duì)這幾個(gè)問(wèn)題,最近幾個(gè)月我們做了很多工作:
鑒于 Fluid 已經(jīng)是目前最新一代技術(shù),2018 年我們會(huì)努力穩(wěn)定和完善它,并且不斷補(bǔ)足文檔。
絕大部分用戶(hù)交流發(fā)生在 Github issue 里,這些討論過(guò)程會(huì)被不斷收集起來(lái),形成文檔,或者幫助我們把現(xiàn)有文檔修改得更簡(jiǎn)潔易懂。
百度在最近一年里為 PaddlePaddle 配置了更多的工程師,我們也在不斷提升自己的文檔能力。
API reference 類(lèi)型的文檔盡量通過(guò)工具自動(dòng)從代碼生成。
其他類(lèi)型的文檔,我們建立了審核機(jī)制作為組織開(kāi)源貢獻(xiàn)的基礎(chǔ)。我們也為百度之外的文檔和源碼貢獻(xiàn)者們準(zhǔn)備了禮物:https://github.com/PaddlePaddle/Paddle/issues/6542。歡迎大家加入到 PaddlePaddle 項(xiàng)目里來(lái),一起把它做得更好。
您曾經(jīng)在 Google、騰訊、LinkedIn 做過(guò)與分布式機(jī)器學(xué)習(xí)相關(guān)的工作,為什么最終會(huì)選擇來(lái)百度領(lǐng)導(dǎo)開(kāi)發(fā) PaddlePaddle?
王益:一個(gè)主要的原因是百度的 AI 布局是真的很開(kāi)放,沒(méi)有什么藏著掖著的。比如PaddlePaddle 100% 都在 Github 上公開(kāi),沒(méi)有內(nèi)部版本。從芯片、到手機(jī)、到各種AI 應(yīng)用,中國(guó)在 AI 領(lǐng)域每個(gè)層次上都有值得驕傲的工作在做值得驕傲的技術(shù)。如果有一個(gè)開(kāi)放的軟件平臺(tái)把他們能連為一體,無(wú)疑是一件獨(dú)具社會(huì)價(jià)值和面向長(zhǎng)遠(yuǎn)未來(lái)的事兒。這是一個(gè)很有挑戰(zhàn)的機(jī)會(huì)。另一個(gè)主要原因是百度的管理層都很支持 AI 開(kāi)放這件事。陸奇、王海峰老師在技術(shù)成果宣傳和公司間的戰(zhàn)略合作方面,都是親力親為的,PaddlePaddle 的開(kāi)源也得到了吳恩達(dá)老師的支持。
根據(jù)目前的發(fā)展現(xiàn)狀來(lái)看,您認(rèn)為未來(lái)機(jī)器學(xué)習(xí)領(lǐng)域的發(fā)展趨勢(shì)是怎樣的?您比較看好哪些技術(shù)的應(yīng)用潛力?
王益:機(jī)器學(xué)習(xí)有很多具體的工作方向,每一個(gè)都很有意思。我最近十年來(lái)都專(zhuān)注在大規(guī)模分布式計(jì)算——除了提升計(jì)算速度(開(kāi)始運(yùn)行到結(jié)束之間的時(shí)間),還要綜合提升整個(gè)機(jī)群的利用率,以及降低每個(gè)作業(yè)提交之后到開(kāi)始運(yùn)行之前的這段等待時(shí)間。這是我最感興趣的方向。它能夠?yàn)楣竟?jié)省計(jì)算成本,保障研究員們的工作效率,更是大規(guī)模互聯(lián)網(wǎng)業(yè)務(wù)成功的基石。
如今人工智能大熱,有很多程序員以及研究員有意轉(zhuǎn)向人工智能的開(kāi)發(fā)和研究,對(duì)于這樣的現(xiàn)象您是怎么看的?您能否提供一些建議給這些想轉(zhuǎn)型人工智能的技術(shù)人員?
王益:計(jì)算機(jī)科學(xué)有兩種形式:一種是,人來(lái)學(xué)習(xí)和積累知識(shí),然后對(duì)給定問(wèn)題想出來(lái)一個(gè)解法,把解法描述成程序,然后計(jì)算機(jī)照著執(zhí)行。很多程序員學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)是為了掌握這種形式。另一種形式是,人想不出解法,所以寫(xiě)一個(gè)程序,讓程序通過(guò)分析數(shù)據(jù),歸納規(guī)則,再利用這些規(guī)則解決問(wèn)題。后一種是人工智能。為了寫(xiě)這個(gè)人工智能程序,當(dāng)然也得學(xué)好算法和數(shù)據(jù)結(jié)構(gòu);同時(shí)人工智能程序區(qū)別于一般程序的地方是需要程序員有必要的數(shù)學(xué)基礎(chǔ)。
我們以前做的統(tǒng)計(jì)學(xué)習(xí)要求的統(tǒng)計(jì)學(xué)和統(tǒng)計(jì)學(xué)習(xí)理論相對(duì)比較難學(xué)一些,深度學(xué)習(xí)基本只需要高等數(shù)學(xué)為基礎(chǔ),門(mén)檻一下子就降低了很多。這是一個(gè)大家學(xué)習(xí)把握第二種形式的好機(jī)會(huì)。
不管高等數(shù)學(xué)還是概率統(tǒng)計(jì),都是大一課程,不需要超常的智慧,只是需要耐心積累知識(shí)體系之后,才能看到效果。我看到不少朋友們覺(jué)得難,其實(shí)不是這個(gè)學(xué)習(xí)的事兒難,而是要克服焦慮感,維持耐心比較難。如果大家因?yàn)橹毕胍艞?,?qǐng)想想以下事實(shí):
計(jì)算機(jī)科學(xué)發(fā)展了半個(gè)多世紀(jì),能用第一種形式完全解決的核心問(wèn)題,包括操作系統(tǒng)、編程語(yǔ)言、Web server、GUI 系統(tǒng)等,都解決的差不多了。而很多新的問(wèn)題,比如:如果展示這個(gè)廣告,用戶(hù)有多大的概率會(huì)點(diǎn)擊;如果推薦這個(gè)衣服,用戶(hù)有多大可能性會(huì)購(gòu)買(mǎi);如果推薦這個(gè)小視頻,用戶(hù)有多大可能會(huì)觀看;這個(gè)照片看上去像是哪個(gè)知名景點(diǎn)等等,都需要用第二種形式的編程來(lái)解決,并且這些進(jìn)展已經(jīng)在最近二十年里支撐起 BAT 和 FLAG 這樣的偉大的公司。
2017 年夏天,北京工業(yè)大學(xué)的四位學(xué)生利用 PaddlePaddle 制造了一臺(tái)智能桃子分揀機(jī),從形狀、大小、色澤等多維度對(duì)桃子自動(dòng)分級(jí),實(shí)現(xiàn)桃子的自動(dòng)分揀。對(duì)于自家的 PaddlePaddle 平臺(tái),李彥宏表示:“經(jīng)過(guò)了五六年的積累,PaddlePaddle 實(shí)際上是百度深度學(xué)習(xí)算法的引擎,把源代碼開(kāi)發(fā)出來(lái),讓同學(xué)們、讓社會(huì)上所有的年輕人都能夠?qū)W習(xí),在它的基礎(chǔ)上改進(jìn),我相信他們會(huì)發(fā)揮出創(chuàng)造力,做到很多我們連想都沒(méi)有想過(guò)的東西?!?/p>
總結(jié)起來(lái),百度 PaddlePaddle 平臺(tái)的使用成本更低、更加簡(jiǎn)潔易用,從開(kāi)放力度上來(lái)講,PaddlePaddle 也是前所未有的,不僅將高性能的分布式框架徹底開(kāi)源出來(lái),同時(shí)還開(kāi)放了大量的模型,在技術(shù)、營(yíng)銷(xiāo)和客戶(hù)資源方面為企業(yè)和個(gè)人開(kāi)發(fā)者提供幫助。不過(guò),在競(jìng)爭(zhēng)激烈的機(jī)器學(xué)習(xí)平臺(tái)領(lǐng)域,PaddlePaddle 如何獲得更多開(kāi)發(fā)者的青睞,如何拓展 PaddlePaddle 的技術(shù)生態(tài),對(duì)于百度來(lái)講還有很長(zhǎng)的路要走。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。