自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PaddlePaddle深度學習開源平臺 :等待眾人劃槳的中國AI大船

原創(chuàng)
人工智能 深度學習
十年前,當我在學校跟著老板苦哈哈地做圖像識別的時候,我想不到十年后的今天機器學習技術有了如此長足的發(fā)展,而AI的概念也由之深入人心。

【51CTO.com原創(chuàng)稿件】序言:說點歷史

十年前,當我在學校跟著老板苦哈哈地做圖像識別的時候,我想不到十年后的今天機器學習技術有了如此長足的發(fā)展,而AI的概念也由之深入人心。岡薩雷斯的圖像處理,是我們曾經挑燈夜讀的經典;OpenCV和C++或MATLAB是我們僅有的工具;后來我們又有了Libsvm&Liblinear;但即便在剛畢業(yè)工作的時候,想要實現(xiàn)一個稍復雜的算法也要遍查論文和各種博客。再后來,我們有了Github,這一技術人的軍火庫;我們用起了Python,畢竟人生苦短;我們也開始有了Sklearn,算法人的工具箱內趁手的工具越發(fā)多了起來。

當深度學習發(fā)展起來以后,相似的一幕又一次上演,最早自己寫反向傳導,測試的時候戰(zhàn)戰(zhàn)兢兢,深怕哪里寫錯一點功虧一簣。到后來,有了Caffe、有了Theano、有了TensorFlow、有了mxnet、有了上層封裝的keras,也有了越來越多的model zoo。后來的事,大家都知道了,在這些炙手可熱的平臺上,研究人員和工業(yè)界從大量的重復體力勞動中解放出來,得以將自身智慧更多地投入到更具創(chuàng)造性的研究與業(yè)務中去,并做出了很多非常棒的結果。

回首這十年,人工智能可以說經歷了從刀耕火種時代到第二次工業(yè)革命這樣的巨變,而我們也正站在新的黎明之前。

一、    PaddlePaddle是什么

我們說了很多歷史,也提到了一些舞臺上正興的機器學習平臺,而這篇文字,是想介紹一下一個新的選擇:來自百度的PaddlePaddle。Paddle(Parallel Distributed Deep Learning,并行分布式深度學習)。PaddlePaddle的原意是“用漿劃動”,其Logo也是兩個劃船的小人,莫名萌出一臉血……

 

paddle

書歸正傳,從2016年9月27日發(fā)布至今,PaddlePaddle也有一年多的時間了,而其前身是百度于2013年自主研發(fā)的深度學習平臺,且一直為百度內部工程師研發(fā)使用??梢哉J為是一個類似google、facebook等工業(yè)優(yōu)而開源的又一個典范。

這里不妨先從全局看一批數據。一般開源項目的熱度指標從Github可以略見一斑,PaddlePaddle的數據是這樣的(截止17.12.22):

-star(可以認為是技術人的點贊)有6099人;

-forks(想自己基于此做修改)有1599人;

-commits(代碼更新次數)有10073,也就每天更新幾十次吧;

-以及90個contributors(代碼貢獻者)。

這樣的受關注程度,和更新的頻次,即使和現(xiàn)在如日中天的TensorFlow比,雖說整體熱度仍有差距,但PaddlePaddle也處于迅猛的上升期中。除了Github直接的用腳投票,在知乎等平臺上,PaddlePaddle也引起了熱烈的討論,包括架構層面和應用層面:

Caffe的設計者賈揚清,評價說“很高質量的GPU代碼”、“非常好的RNN設計”、“設計很干凈,沒有太多的abstraction,這一點比TensorFlow好很多”、“總之是一個非常solid的框架,百度的開發(fā)功底還是不錯的”,這可以算是技術人之間的惺惺相惜了吧。

CPU/GPU的單機和分布式的模式也是開發(fā)者們關注的點,畢竟得益于原來parameter server的工作,而TensorFlow不能對多機CPU有很好的支持。以及速度快,顯存占用小等特性,這些在github的benchmark跑分中提到的優(yōu)勢,也被開發(fā)者們著力關注到了。

框架和功能的細節(jié),我會在第二節(jié)挑一些感興趣的點,仔細剖析一下。應用層面,是作為使用者最為關心的,有哪些實際的業(yè)務中,用到了PaddlePaddle,用得如何,我們將在第四節(jié)揭曉。功能和優(yōu)點提到了不少,但是現(xiàn)實是PaddlePaddle確實還有更廣大的開發(fā)者群體需要觸達,才能發(fā)揮更大的影響力和作用。

所以在第三節(jié)我也打算聊聊PaddlePaddle的劣勢,以及在第五節(jié)探討一下這個優(yōu)秀工具的發(fā)展路徑。

 

二、PaddlePaddle探秘

每一個成功的開源項目,文檔和教程都必不可少,而且很大程度上是項目易用性的保證、是深度鉆研的輔助,更為項目的成功增色。PaddlePaddle當然也是這樣,它有自己一套較為詳實的輔助材料:http://www.paddlepaddle.org/

單從文檔形態(tài)的角度,相較于TensorFlow和keras的中文文檔基本是愛好者翻譯而成,PaddlePaddle的文檔來自于百度一線的工程師,多少會覺得親切和信賴稍多一些不?至于文檔的內容,從全面性的角度出發(fā),一般都很龐雜,所以,我想抽取其中比較感興趣的幾個點,做一下介紹:

-Docker

如果說docker是什么,搞純算法的人一般不太接觸的話,那提到virtualenv、anaconda或者winpython,應該很多人都有所耳聞,或者自己就確實在用。無論是在Linux下,還是在Windows下,科研工具的迭代一日千里(真的比游戲什么的更新快多了),帶來的問題就是,版本間的依賴問題、配置問題,以及由此帶來的安裝和使用的方便性問題。尤記得,Github上的opencv安裝腳本,都有大量的star。我自己在6、7年前也被scipy和numpy之流擺了一道。

數據和算法科學家本著應該把時間花在更有價值的研究和業(yè)務任務上來的目的,類似虛擬化發(fā)布地使用,進一步方便了大家,和虛擬機不同的是用docker的方式,性能和直接安裝在本機是一樣的。paddle的官網上是這么寫得:

“為了開發(fā)PaddlePaddle,我們需要:

A.一臺電腦,可以裝的是 Linux, BSD, Windows 或者 MacOS 操作系統(tǒng),以及

B.Docker。不需要依賴其他任何軟件了。即便是 Python 和 GCC 都不需要,因為我們會把所有編譯工具都安裝進一個 Docker image 里。”

簡單來說就是:

1、下載CPU或GPU版本的鏡像:

比如CPU版本的就是docker pull docker.paddlepaddle.org/paddle

2、編寫適用于Paddle的程序:

可以參考https://github.com/PaddlePaddle/book

順便說一句,這本書也可以以docker方式安裝,并且支持Jupyter Notebook方式運行。

3、運行(假設/home/work/train.py為第二步完成的程序):

cd /home/work

docker run -it -v $PWD:/work paddlepaddle/paddle /work/train.py

進入docker以交互的方式執(zhí)行和調試代碼也是可接受的。

 

-感興趣的業(yè)務

如TensorFlow和keras,都有自己的example模塊,主要功能有二:

  1. 提供一個demo的作用,對主要框架模塊的使用進行演示;
  2. 解決一些實際的問題,方便部分用戶直接使用。

比如,針對文本分類的任務,keras對于imdb數據的情感識別,提供了CNN、LSTM、CNN_LSTM、fastText等多種方案,不僅對不用的網絡模型和組合的使用做了演示,稍微改一改其實就可以用到實際的業(yè)務中去。以及圖像方面keras下minst手寫數字識別對應的相關任務demo代碼就更多啦。

PaddlePaddle自然也有類似的模塊,體現(xiàn)在兩塊:

    1.前文提到的PaddlePaddle – Book

它提供了從linear regression到mnist手寫數字識別;從基于cnn的圖像分類到NLP領域的word2vec實現(xiàn)(做nlp的同學肯定記得分布式表述相較于onehot表述的優(yōu)勢,以及king-queen=man-woman的例子);以及“個性化推薦”、“情感分析”、“語義角色標注”、“機器翻譯”等典型應用。

不得不說,作為一個算法或機器學習的初學者,且不論使用何種平臺開始自己今后的學習和研究,這個book里對業(yè)務場景的描述、對算法背景和流程的介紹、以及提供的數據集,都是非常值得看一看得。

一個更方便閱讀的網址在:

http://www.paddlepaddle.org/docs/develop/book/index.cn.html

能相信么,還自帶視頻課堂,確實誠意滿滿了:

http://bit.baidu.com/Course/datalist/column/117.html

    2.模型庫http://www.paddlepaddle.org/docs/develop/models/README.cn.html

如果說前面還是入門級的教程,那么這里的模型庫其實擔綱的角色是解決(很大程度上)工業(yè)級的實際問題,這也是我特別關注的。

總共有14個類目:

詞向量、RNN語言模型、CTR預估、文本分類、LTR、結構化語義模型、NER、序列到序列學習、閱讀理解、自動問答、圖像分類、目標檢測、OCR、ASR。這些類目,做一下劃分有如下幾大類:

  • NLP :詞向量、RNN語言模型、文本分類、結構化語義模型、NER、序列到序列學習、閱讀理解、自動問答
  • 圖像:圖像分類、目標檢測、OCR
  • 語音:ASR
  • 商業(yè):CTR預估、LTR

看出來了么?從搜索技術發(fā)展起來而集技術大成的百度,對NLP的研究確實是非常深入的。而隨著業(yè)務線的擴充,圖像和語音的業(yè)務也有了長足的發(fā)展(比如語音搜索、以圖搜圖、所投資得作業(yè)幫的OCR等),至于ctr預估是其廣告業(yè)務的核心,LTR也是網頁搜索等的技術命脈。

當然,需要說明的是,上面的分類不是完全嚴謹,比如序列到序列學習其實也可以用到ASR中嘛,畢竟語音和文本都大致是二維的信息流,所有其實是有想通的地方所在。

既然如此,限于篇幅,我想在這篇小文中只關注那些最重要的信息,所謂最重要,就是說百度有***的投入、***的產出和產品化的那些業(yè)務,亦即:

LTR、CTR預估、序列到序列學習的古詩生成、以及DeepSpeech等。這樣一些信息,可以說只此一家,別無分店,值得我們好好研究下。

1、LTR

http://www.paddlepaddle.org/docs/develop/models/ltr/README.html所謂LTR,就是learning to rank,基于點擊數據等的排序學習,是百度搜索的核心價值。

一個簡單的例子,當用戶搜索“劉德華”這個query的時候,他想看到的是作為演員的劉德華、是作為歌手的他、還是有八卦新聞的他、亦或是他的圖片?每個人的需求是不一樣的,單純的規(guī)則系統(tǒng),很難滿足大部分人的需求。且不要說,這還是熱門query呢,如果碰到那些冷門query,本來能搜到(召回)的結果就不多,用規(guī)則的方式根本無法覆蓋到千萬用戶的額需求(準確)。所以LTR就是為了解決這樣的問題應運而生。以及,在推薦和廣告的排序系統(tǒng)中,LTR都發(fā)揮了舉足輕重的作用。

文中也提到了pointwise、pairwise、listwise等幾種不同的方式,當然沒有提到得是,pointwise的標注較困難,常用有五檔打分的方式,但是復用性較好;而pairwise的方式標注則容易很多。以及,標注的效果等也需要有很多手段來控制。再以及,用戶的點擊,也是另外一種形式的(弱)標注。這些都是很重要的學問。

總的來說,PaddlePaddle在這里給出了pairwise的ranknet以及l(fā)istwise的lambdarank的具體實現(xiàn),有代碼、有數據集,可以看到效果,甚至于自己的數據按格式規(guī)整,也可以原封不動的使用現(xiàn)成的模型。這么說來,LTR其實也不是大廠專屬了啊,現(xiàn)在做垂直行業(yè)的搜索、推薦的團隊那么多,在和規(guī)則搏斗的同時,確實也可以試試這個LTR的方案,把人力解放出來,并迎接更好的效果。

2、CTR預估

http://www.paddlepaddle.org/docs/develop/models/ctr/README.cn.html

CTR是click-through rate的簡寫,CTR預估就是點擊率預估,是百度技術的另一大核心。場景是這樣的:無論百度、騰訊、阿里、頭條等本質上都是一個廣告公司(騰訊游戲除外)。通過分析用戶的行為,展示出能滿足用戶需求的信息,就是廣告的本質,也就是CTR預估的目的所在。

即優(yōu)化用戶的點擊率是這些公司的目標,因為只有用戶點擊了廣告,才說明廣告信息是和用戶需求相匹配的;也只有用戶點擊了廣告,公司才能有收益。且不說廣告行業(yè)涉及的專業(yè)知識和技術非常之廣,僅算法相關就包括搜索、排序、反作弊、用戶畫像、NLP等等,而其中的明珠就是CTR預估。

最早的CTR預估是基于logistic regression的,把所有特征通過分段、組合得到高維的稀疏特征,然后用LR并行化的求解,得到CTR的預估。而特征工程的團隊當時在百度應該就有幾十人。

LR的優(yōu)勢在于,可解釋性、容易并行化等,文中也提到了,DNN后來逐步從解決某些模塊的預測,到不斷發(fā)揮更大作用的階段。

這里的代碼展示了wide&deep learning model的實現(xiàn),融合了適用于學習特征的DNN和適用于大規(guī)模稀疏特征的LR兩者的優(yōu)點。仍然,有數據可以用來做實驗,也可以按格式準備數據服務于自己的業(yè)務.

3、古詩生成

http://www.paddlepaddle.org/docs/develop/models/generate_chinese_poetry/README.html

這個是挺好玩的一件事,最早是百度內部hackathon的一個項目,所謂的看圖寫詩,在手機百度上似乎有過產品化。是一個比AlphaGo更早的AI項目展示。結合了圖像識別對圖像信息的提取,和nlp技術對古詩的建模和生成。

不知道當時有沒有使用lstm的方案,但是現(xiàn)在用lstm來做這件事已經非常成熟了。外國有同行按耐不住看不到《冰與火之歌》的寂寞,用這個方案生成了***的一卷故事,我們炎黃子孫,也可以來試試古詩的生成,等閑唬一唬人還是完全可以的。

4、DeepSpeech

https://github.com/PaddlePaddle/DeepSpeech

在DeepSpeech系列論文出來的時候,還是讓做語音的同事們比較激動的。做語音識別或者叫ASR,是一個門檻比較高的事,大量的語料要收集、大規(guī)模的機器要用來訓練、非常專業(yè)的人才才能做這件事,小作坊還是比較難的。http://proceedings.mlr.press/v48/amodei16.pdf對整體的架構和效果有了比較好的論述。

我們搞算法特別是深度學習的,都知道一個詞叫煉丹,而一個好的架構和方法往往來自于大公司,也是有上面提到的這些原因的。得窺論文奧秘,并且能看到具體的實現(xiàn),還是讓人很高興的一件事呀。

 

- 命令行的方式

http://www.paddlepaddle.org/docs/develop/documentation/zh/howto/usage/cmd_parameter/index_cn.html

可以看到得是,提供了非常多且靈活的命令行控制參數:細致到線程數、機器數、GPU還是CPU模式、輪數、是否批處理、集束搜索的方式、異步還是同步、參數稀疏性的檢查、隨機數的方式等等。

當然,直接使用默認的方式也很方便,不過既然有了這么多個性化的選項,其實一個有經驗的開發(fā)者可以做得定制也就很多了,這也越發(fā)讓我覺得paddle是一個面向工業(yè)界實際應用的平臺,既能滿足新手的使用,在新手向老手的轉變過程中,也能提供更多的選擇。

 

-分布式訓練

http://www.paddlepaddle.org/docs/develop/documentation/zh/howto/usage/cluster/cluster_train_cn.html

Fabric集群、OpenMPI集群、Kubernetes單機和分布式、AWS上的分布式。

前面很多的討論都是基于單機的版本,個人愛好者或者小公司解決實際問題的需要,如何使用PaddlePaddle來滿足業(yè)務需要。當數據變多,或者公司業(yè)務變大,到單機無法處理得時候怎么辦?

我們都知道數據量大了以后,算法有數據并行和模型并行之分,hadoop比較善于解決的是能數據并行的問題,而一旦涉及到了模型并行的問題,怎么解決數據的調度、死節(jié)點的控制、迭代的速度等等問題就一擁而上了。作為一個還主要在算法而非架構層面研究的人,我們大都希望,框架能解決我們的問題。

好了,PaddlePaddle作為一個框架,解決了這些問題,實驗也表明了它的有效性。不要多問,拿去用就好啦:)

作為一個大的框架,PaddlePaddle其實有很多值得深入了解的地方,這里只抽其中我比較感興趣的幾點加以介紹,剩下的留給感興趣的你吧。

 

三、PaddlePaddle的劣勢

PaddlePaddle相關的功能很多,我們在***節(jié)看到了從大牛到開發(fā)者的推薦;在第二節(jié)也一起看了一下它與眾不同的能力。但是現(xiàn)實是,PaddlePaddle的使用范圍和氛圍都還有很大的提升空間。仔細思考一下其中的緣由,也不難理解:

1、PaddlePaddle和TensorFlow有相近的功能但出現(xiàn)遲

通過對比,我們可以看到在基本的圖像識別、文本分類等業(yè)務上,TensorFlow已經可以較好的完成任務了,雖說從benchmark的比較來看,PaddlePaddle能以更小的顯存和更快的速度完成任務,但是TensorFlow的先發(fā)優(yōu)勢對于用戶的獲取還是至關重要的,畢竟我們很多是用人生苦短而又不差錢的機器學習研究者嘛:),學習和遷移成本是使用PaddlePaddle的較大成本(雖然學習成本一點也不高),而機器成本在較小的業(yè)務下也可以當做不存在;

2、社區(qū)環(huán)境和氛圍的不足

即使在一個公司內的開發(fā)人員,也講求大家要使用相近的技術棧,否則互相溝通得成本較大,而從全局來看,一個較好的社區(qū)環(huán)境也會不斷貢獻架構開發(fā)者、應用開發(fā)者和業(yè)務使用者,短短一年多的時間還是沒有建立其一個很好的機制來發(fā)展這個社區(qū)。

3、重技術而輕產品

我們一直說百度技術做得***,騰訊產品***,阿里的運營不錯。做技術的人比較單純,大多深信“酒香不怕巷子深”。但是既然是開源項目,那就不只是自己用就得了,如果想要讓更多的人來使用它,結合前面是說得1、2兩點,既然外部環(huán)境不利,那***自己能把產品做到更方便、更易用,這樣才能改變逆勢。不得不說,如第二節(jié)所述,隨著paddle的文檔和模型的補全,隨著一些競賽的組織,它開始有自己的特色和環(huán)境的改善。

 

四、實際業(yè)務的使用

上面說了很多務虛的,那么這節(jié)就來說說PaddlePaddle在實際業(yè)務中的使用:

1、大搜、鳳巢和IDL的使用

PaddlePaddle的前身是百度于2013年自主研發(fā)的深度學習平臺,且一直為百度內部工程師研發(fā)使用。全球各大科技巨頭開源的深度學習平臺都***各自技術特點,對于百度,由于其自身在搜索、圖像識別、語音語義識別理解、情感分析、機器翻譯、用戶畫像推薦等多領域的業(yè)務和技術方向,PaddlePaddle則表現(xiàn)更加全面,是一個相對全功能的深度學習框架。

2016年,PaddlePaddle已在百度30多項主要產品和服務之中發(fā)揮著巨大的作用,如外賣的預估出餐時間、預判網盤故障時間點、精準推薦用戶所需信息、海量圖像識別分類、字符識別(OCR)、病毒和垃圾信息檢測、機器翻譯和自動駕駛等領域。以外賣行業(yè)為例,外賣員等待商家出餐的時間耗時嚴重,百度將不同時段商家的客流量、菜品的制作時間和訂單量等數據交給了PaddlePaddle,經過對海量數據的深度學習處理,百度外賣的內部系統(tǒng)可以預估每個商家菜品出餐時間,及時告知外賣員,提高了送餐效率,系統(tǒng)也可以更加合理地規(guī)劃取餐和送餐的路線。

2、個人開發(fā)者

案例鏈接:https://zhuanlan.zhihu.com/p/29177825

“AI桃子選美機”,好吧,這個名字的畫面感太強了。但是,從另一方面也說明,這個平臺的易用性。以前的機器學習可以用一句話解釋為“養(yǎng)在深閨人未識”,現(xiàn)在的趨勢則是,進入門檻的不斷降低,越來越多的人可以很方便的使用開源的工具,結合自己的業(yè)務支持,很方便和高效的完成實際的任務。我是很期待其他新的產品的,畢竟,我最常說得一句話是“機器學習的生命力在于和業(yè)務結合”。

 

五、展望

寫到這里,又回想起差不多十年前,我調OpenCV的那些個晚上。哦,現(xiàn)在多方便啊,我可以把我的精力更多的專注于算法、產品與管理;我可以投入更多的時間去看新的論文、了解新的業(yè)務、嘗試新的體驗。

從小的方面來說,算法和平臺的迭代和發(fā)展,讓我作為一個算法開發(fā)和管理者,能夠更高效的工作,有了更充裕的時間來滿足個人的好奇心和追求。從大的方面來說,算法、平臺和業(yè)務的迭代和發(fā)展,也帶給了我們每個人一個不一樣的世界。

愿機器學習走入尋常百姓家,讓我們的工作和生活越來越好。

【51CTO原創(chuàng)稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

 

責任編輯:張昂 來源: 51CTO
相關推薦

2018-03-09 22:56:52

PaddlePaddl

2018-04-04 10:19:32

深度學習

2018-04-02 10:45:11

深度學習PaddlePaddl手寫數字識別

2018-06-26 09:37:58

眾人

2015-05-27 09:51:45

百度深度學習人工智能

2018-02-07 16:13:00

深度學習

2020-05-22 10:32:32

機器學習

2015-04-27 13:58:54

2018-03-26 20:07:25

深度學習

2018-03-15 15:40:39

廣告點擊率PaddlePaddlTensorflow

2018-03-26 20:28:24

深度學習

2018-03-26 19:56:13

深度學習

2018-03-26 21:31:30

深度學習

2018-03-26 20:14:32

深度學習

2018-10-19 16:24:09

深度學習無人駕駛語音識別

2018-03-26 20:00:32

深度學習

2018-04-09 10:20:32

深度學習

2018-03-26 21:26:50

深度學習

2018-03-09 09:43:10

2018-11-23 09:40:17

Greg EstesNVIDIADLI
點贊
收藏

51CTO技術棧公眾號