中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Caffe作者賈揚(yáng)清:AI,從大數(shù)據(jù)演進(jìn)到高性能計算

2019-08-27    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

本期 Robin.ly 硅谷交流活動邀請到 Caffe 作者賈揚(yáng)清博士與大家分享從 Caffe 到 PyTorch 的 AI 基礎(chǔ)架構(gòu)演進(jìn)以及 AI 時代軟件開發(fā)的趨勢和挑戰(zhàn)。他在現(xiàn)場與 Robin.ly 創(chuàng)始人 Alex Ren 對于 Caffe 和 PyTorch 的開發(fā)及軟硬件協(xié)同設(shè)計進(jìn)行了精彩的訪談對話,并回答了現(xiàn)場觀眾的問題。

從 Caffe 到 PyTorch

Alex: 最早的時候聽說 Caffe 是你的一個 side project,不是你論文的主要內(nèi)容。當(dāng)時開發(fā) Caffe 的初衷是什么?中間經(jīng)歷過什么過程,可以給大家講一下嗎?

Yangqing: 主要的原因也是因為 AI research,以前 researcher 寫 code,像 Matlab 之類的,很難 reproduce。在 2011 年,2012 年的時候大家還沒有太強(qiáng)的 reproduceable research 的這樣的想法,所以在 AlexNet 的 paper 出來之后呢,大家都沒辦法有一個比較 reliable 的平臺,來實現(xiàn)它的結(jié)果。當(dāng)時我們在 Berkeley 希望用 Caffe 來推動獨立研究,所以當(dāng)時內(nèi)部開始試圖來呈現(xiàn)它的結(jié)果,相當(dāng)是一個于 side results。整個過程大概做了兩個月。

Alex: 后來到了 Facebook 之后繼續(xù)做 Caffe 你有遇到什么新的問題嗎?

Yangqing: Caffe 因為已經(jīng)六年多了,所以當(dāng)時有很多歷史遺留問題。最開始做 Caffe 的時候大家都是照著 computer vision 的模式來做的,所以很多 design 都是在 CV 方面比較 make sense,在 NLP 等其他地方都相對比較難一些。當(dāng)時整個 modular design 還沒有太清楚。Facebook 在 15 年的時候其實很多產(chǎn)品里都還在用 Caffe 的 runtime 來部署,但是后來整個 flexibility 都會有些問題,所以這也是我們后來寫 Caffe2 跟 PyTorch 的原因。

Alex: 前段時間你們宣布了 PyTorch1.0 的發(fā)布,我記得 Caffe 主要是做 production 的,而 PyTorch 主要是 research 這個階段,當(dāng)你把它們合并在一起的時候,是希望解決什么問題呢?

Yangqing: 這個我們目前也是一個比較 explorative 的方向,我覺得整個行業(yè)大家都在往這個方向走。比如 TensorFlow 在 TF2.0 的 announcement 里面提到了 eager mode,或者說是 imperative mode。最大的一個挑戰(zhàn)基本上是 research 和 production,這兩個 fundamentally 是兩個不太一樣的 priority。Research 需要 flexibility,一切都應(yīng)該可以調(diào);而 Production 是要 performance 的時候,最后總是會需要有一些相對比較 flexible 的地方。所以很多時候都是看具體的實際應(yīng)用然后來 consciously make some compromises。就比如說像計算機(jī)視覺,包括像推薦系統(tǒng)這種實在是太大規(guī)模,even 1% or 2% accuracy matters,在這種情況下我們會需要犧牲一些 flexibility,來更加注重在 performance 上邊。像一些新的應(yīng)用比如說像自然語言處理,機(jī)器翻譯等,可能對于 resource 的要求沒有那么高。我們可以 sacrifice 比如說 10% 的 performance,對于 model iteration 的要求比較高,所以這個就更加偏向于 research 這邊。

軟硬件協(xié)同設(shè)計

Alex: 上次我跟你聊,你說到你比較關(guān)注硬件方面的發(fā)展。我想知道你的角度是什么,是 software hardware co-design 嗎?

Yangqing: 更加偏向于 software hardware co-design 吧。CPU 和 GPU 它的好處不光是在硬件上,而且是在軟件上。最可怕的事情是什么呢?就是我們知道它很好,但是最后大家發(fā)現(xiàn)沒人能在上邊寫程序,‘cause it’s too opaque。NVIDIA 非常成功的原因是因為,我可以隨便找一個人,花半天的時間,他就可以開始寫 CUDA code,只要他懂 C++,我就能讓他寫 CUDA code。NVIDIA,從 04 年 CUDA 出來以后到今天,NVIDIA 把它整個 software layer 做的如此之好,使得它的入門門檻很低。如果我突然來一個 FPGA,沒有一個月的時間,沒人能在上邊寫程序,所以說新的硬件最大的一個挑戰(zhàn)不光是在硬件上,而且是在軟件上。這也是為什么我對軟硬件協(xié)同設(shè)計很感興趣。

Alex: 也就是說它搭建了一個 eco-system,給 developer 們有更方便的方法去用,對吧?

Yangqing: 對!

計算機(jī)領(lǐng)域的文化

Alex: Facebook 也是少有的做比較頂尖的 AI research 的一個公司,你在里邊帶領(lǐng) AI infrastructure 這塊的一些研究。我知道 Facebook,Google 這樣的公司有個特點,就是它有很多大牛都在一起工作。而很多別的公司經(jīng)常有這種一山不能容二虎這種現(xiàn)象。我不知道你在這方面有什么體會,有什么心得可以分享?是什么樣的文化使得 Facebook 在 research 這方面有個 cutting-edge research 的結(jié)果?

Yangqing: 我覺得更多的算是計算機(jī)領(lǐng)域的文化吧,比如說大家最近經(jīng)常能夠聽到的消息比如像金融這個領(lǐng)域目前逐漸的越來越難吸引到頂尖的人才。一定的原因就是因為整個領(lǐng)域太封閉了,誰都不知道其他人在做什么。那么這個時候就有很簡單的一個事,就是我們有句老話說的,叫獨木難支嘛,如果一個領(lǐng)域大家都在鉆著自己做自己的事情的話,有很多 collective wisdom 就很難被激發(fā)出來。而計算機(jī)這個領(lǐng)域的話,大家很多的想法,第一是說開源,第二是 open research,第三是非常頻繁的交流。有很多的平臺本身就是,像我們用的 Reddit 啊,Hacker news 都是一個很好的平臺,包括 Robin.ly 等等,所以我覺得整個這樣的一個文化使大家可以更快的把這個蛋糕做大,等到蛋糕做大了之后,誰都能從中獲益。

Alex: 謝謝你提到了我們!你提到了 Reddit,我看到了你 Reddit 上有篇評論,里邊提了一個詞叫 unframework,因為當(dāng)時是 Caffe 2.0 的時候你提的,能給我們解釋一下是什么意思嗎?

Yangqing: Unframework 基本上是說以前大家在做 AI 的 software 的時候一個 framework 什么都有。當(dāng)時六年前大家說 Caffe,Torch 跟 Theano,就是一個 framework,你在里頭或者外頭想做什么也很難,F(xiàn)在比如說,像我們有不同的硬件出來,有 TPU,有 visualization 等等,逐漸有點類似于一個單元的 operation system,我做完一個 operation system 的時候不是說所有的事都完成就可以在上面裝 app 和 extension 了。發(fā)展到今天,framework 是一個很小的部分,外面有很多其他各種組件譬如說硬件,visualization 等等。舉個例子說 PyTorch 目前我們在跟 Google 合作來做一個 Tensorboard,a very nice visualization tool for AI,它就是不光限制在一個 framework,而是 build different components,get components clip,用各種各樣的方式 plug 起來。

管理團(tuán)隊的軟技能

Alex: 你當(dāng)初也是典型的 engineering research 出來的,現(xiàn)在去 lead 的組織,有很多工程師。你覺得在這個過程中 soft skills 你有些什么收獲,給大家有什么建議?

Yangqing: 這方面可能一個人做事情和一群人做事情還是有一些區(qū)別的。第一個是我們所謂叫 innovator’s dilemma:一開始大家會覺得這個 team 做的太慢了,這事兒我一個人能夠兩個小時就能搞定的。為什么這個 team 一天還沒搞定。大家有時候怎么樣來 properly set expectation,因為自己一個人的 bandwidth 是有限的,怎么樣來幫助整個 team 能夠合作把這個事情往前推?赡茉趩蝹的事情上 efficiency 不好但是在整個大的全組 project 上能夠更加 accelerate 一些;第二個是怎么樣 grow people,就是 create space for people to make mistakes,怎么樣能讓大家來逐漸 take ownership。第三個是管理層面提到的 give away your Legos,就是 focus 在別人需要你的地方而不是自己做的最好的地方。我覺得在做 technical management 或者 technical leadership 的這塊兒其實還是挺有意思的。

Alex: 接下來歡迎場下同學(xué)提問!

從數(shù)據(jù)到?jīng)Q策的新趨勢

Q1: 這兩年我們看到了一個趨勢,從 classification regression 要做 reasoning,然后要去做 reinforcement learning,要去做 decision making,在這個趨勢你有什么看法呢?因為從我們的直覺上來說這個是跟過去相反的趨勢,但是實際上我們看到如果不這么做的話,直接用 probabilistic 的方法遇到了很多問題,所以想問您對這個趨勢怎么看,這是個大趨勢嗎?他將來怎么樣發(fā)展會對現(xiàn)在 Deep Learning 社區(qū)有什么樣的幫助?

Yangqing: 我覺得這應(yīng)該是一個挺大的趨勢,在很多領(lǐng)域都有體現(xiàn)。比如說像六七年前我在做 PhD 的時候我們做 probabilistic graphical model,第一個是,數(shù)據(jù)進(jìn)來之后我們可以把它建模成一個大的 joint probability,但是 graphical model 關(guān)注的是怎么樣來 interpret 不同數(shù)據(jù),或者不同 dimension 之間的 relationship,causality 等等。所以一方面是計算或者歸納,一方面是怎么從 statistic 當(dāng)中提取一些 logic 或者一些 rule 來,因為就像你剛才提到的,因為我們純用 statistical 或者現(xiàn)在的 deep learning 的方法的話,我們很難從中提煉出一些 knowledge,what is the guiding principle for us to design new models?前面幾年像 Alex 提出來之后大家覺得這樣有一個 principle 來設(shè)計 CNN,而我們在這個方向上已經(jīng)走的差不多了,然后接下來就是 what is the new principle for us to design even better models?Maybe it’s AutoML,or maybe it’s kind of new principles. 所以從現(xiàn)有的這些數(shù)據(jù)當(dāng)中提煉出 logic,提煉出知識來是一個挺重要的東西。

計算機(jī)語言的選擇

Q2: 前段時間有一個語言叫 Julia 橫空出世,號稱集百家之長,所以我想問問你對這個語言有什么看法,有沒有打算基于 Julia 這個語言建立一個 framework。

Yangqing: 我們其實嘗試過很多各種各樣的語言,所以說我不太好評論。Julia 的好處是它對于 low level language migration 非常好,比如大家如果用 Python 的話,可能你在 Python 里寫 for loop, performance 非常差。Julia 對這個 low level language binding 的 performance 一直都是挺不錯的。我們考慮過很多的 language,包括我們自己 Facebook 以前有 Torch,Torch 是基于 Lua 的,我們最后發(fā)現(xiàn)了一點:it’s not about the language itself,it’s about the eco-system。很多人都說 Python 是一個很爛的語言,但是它有社區(qū),它的整個的 eco-system 非常好,如果我要裝 Python,我有 Anaconda;如果我要用 Python visualization,我有 Matplotlib;如果我要有 numerical computation 我有 NumPy 和 SciPy,如果我要做圖像處理,我有 Scikit-image。 所以說最后我們發(fā)現(xiàn)這個 eco-system 很重要,當(dāng)年 Luatorch 遇到的很大的一個瓶頸是沒有人知道怎么寫 Lua。大家都很懶,我也很懶,我不想為了學(xué)一個新語言而學(xué)一個新語言,whatever works for me。所以說這個時候 Python 作為一個很不錯的 compromise,似乎是目前整個 industry 大家比較 common 的選擇。

數(shù)據(jù)收集與處理

Q3: 我們知道 deep learning 是非常 data hungry 的,我在想在設(shè)計 AI infrastructure 的時候有沒有考慮在一定 level 上比較 general 的 direction 可以把 data collection 這件事情也集成進(jìn)來?

Yangqing: 在大公司可能這個不是一個問題,data is kind of naturally coming in,但是在很多應(yīng)用的時候的確我們也發(fā)現(xiàn) data 的 pipeline 需要很緊密的 integrate 到 compute 系統(tǒng)。主要的兩塊第一個是 how to actually process data,就是怎么樣用傳統(tǒng)的 MapReduce 或者說現(xiàn)在的 online approach 來 feed data into training algorithms,特別是 high performance 的環(huán)境下我們發(fā)現(xiàn)不光計算是個瓶頸 data 也是一個瓶頸。如果我們在 GPU 上做計算的話,GPU 能算得如此之快經(jīng)常導(dǎo)致大家的 data input 跟不上。另外一塊就是怎么樣做 data versioning 跟 data management。我們發(fā)現(xiàn)模型 train 完了之后 holdout 上的 data,validation 上的 data performance 非常好,上線之后就發(fā)現(xiàn)不行,最后發(fā)現(xiàn) validation data 搞錯了,跟 training data 有 overlap 等等。所以說,怎么樣讓我們很容易的 detect 這樣一些問題呢,可以更好的做 data management,這個其實在 infrastracture 這邊的 saving 會很大。

Q4: 你覺得在設(shè)計 AI infrastructure 的時候如果想把 data 考慮進(jìn)去的話應(yīng)該怎么做呢?

Yangqing: 傳統(tǒng)的 data infrastructure 一直以來在很多公司都是一個挺大的 organization,有非常成熟的像 Hadoop,Google 的 Big Table 這樣一些解決方案;旧 data infra 這邊大家考慮的問題也是兩個,第一個是 serving,像 web serving,第二個是 batch processing,像 MapReduce。比如像 Berkeley 前面幾年我們一直在做的 Spark 的這個項目也是 Spark ML 一直以來比較偏向于 batch processing MapReduce 這樣一個方向。而現(xiàn)在突然這個 SGD (Stochastic gradient descent) 的 training 方法來了之后大家發(fā)現(xiàn)以前這種 batch processing 的想法已經(jīng)行不通了。所以像 Berkeley 的最近的 Ray,Clipper 這些 project 就會更加偏向于更加現(xiàn)代一些的 SGD 的某些 computation pattern。這方面沒有一個太好的解決方案。

Q5: 你剛才說到數(shù)據(jù)的問題,其實很大的問題是像你說的,數(shù)據(jù)其實一直在變,這個 tracking 其實跟 big data 的 stack 是很不一樣的。Big data 很強(qiáng)調(diào) immutability,它要是不變的我們才可以做很多事情。現(xiàn)在你的數(shù)據(jù)不停在變,label 在變,然后新的數(shù)據(jù)進(jìn)來,這個 versioning 現(xiàn)在是一個 big mess。我們看了很多 solution 也都找不到很好的一種,我想聽聽你有沒有什么想法?

Yangqing: 對,不光是 data version,而且 model versioning 也有問題。即使是同一個 data,我們在上邊跑兩次 training,出來結(jié)果都不一樣。我們在 Facebook 做 testing 的時候,有時候就算是兩個 matrix application,你把 threading 換一下,從 4 個詞變成 8 個詞結(jié)果就不一樣。非常 deep 的 neural network 你從最開始有這些小的變化到最后的一個輸出,基本上有很多時候都是沒法 guarantee binary wise compatibility 的。CPU 跟 GPU 之間幾乎不能,大概像 ResNet 這樣一個模型,最后的輸出可能會有 1% 到 2% 的 fluctuation 都是正常的。所以說對這種 testing environment 或者說怎么樣來 interpret ‘Correctness’,大家目前還不太清楚。最大的一個 investment 在 Facebook 這邊是怎么樣做更好的 experimentation management,可能沒法解決這些問題,但是我們可以解決對于任意 experiment 來說,我們可以記錄 as much information as possible,在哪個 commit 上面 run 的這個,在哪個版本的 data 上跑的,使得我們在 manually 做 inspection 的時候能夠有更多的 information。

工具的使用

Q6: 前面介紹提到說從 research 到 production,一個方面是工具上的不同,另外一方面其實是 research 過程中,比如你用 Jupyter Notebook,你會做很多的小的 code 的片段,但真的上 production 你需要一整塊的、經(jīng)過 unit test 的軟件工程整個進(jìn)入系統(tǒng)。這個之間其實還是有一個工具上的不同,想聽聽看 Facebook 有什么樣的解決方案。

Yangqing: 我先說工具的這個問題吧,工具的話其實我們也發(fā)現(xiàn) Jupyter Notebook 最大的問題是什么呢,就是說跑實驗的時候才能跑這些個,最后發(fā)現(xiàn),再跑一遍跑不出來了。所以我們現(xiàn)在內(nèi)部有一個類似于 Notebook 這樣的 environment 但是更多的就是用來純做 research,更多的時候工具這邊大家都是 set expectation,就是說 this is the place where you maximize your ideas but it’s not guaranteed to ship into products,at all。所以最后在做 product 的時候大家還是會需要 enforce 一些 quality test 相關(guān)的東西。更多的是從 experience 的角度來說,使得大家更加像一些,比如 research 用 Matlab,product 用 C++,這怎么寫?如果 research 用的 Python,只不過是我用的是 Notebook,然后 product 用的是 Python,只不過是一個.py file,這個時候 migration 就相對更加容易一些。所以我們在 PyTorch 跟 Caffe2 這邊非常重視怎么樣來 unify experiences,包括比如說像 Twython 跟 Scripton 也是,they look similar,保證你真的回頭要 transfer 的時候你可以吧 Twython 改成 Scripton 就完了,沒有太多的像從 Matlab 到 C++ 的這樣一個變化了。

PyTorch 與 TensorFlow

Q7:PyTorch 是一個用戶很多的一個系統(tǒng),還有一些用戶比較多的系統(tǒng)就是 TensorFlow,背后都有一個很大的 community,有很大的公司在支持,但是其實你剛才也提到了就是 TensorFlow 也出了這個 eager mode 大家需求也都一樣,都有這個 research developability 或者 interactivity 這方面的需求,deployment 都有 scalability 或者 performance 這方面的需求。那最后有沒有這兩個系統(tǒng)或者說市面上所有系統(tǒng)合并到一起的可能,從 business 的角度來說什么樣的條件會造成這種合并。

Yangqing: 我問你這樣一個小問題。我們在用 uber,gmail,或者 calendar 的時候,我們會擔(dān)心是在 Android 上面,還是 iOS 上面嗎?就是說根本上到最后 product 這邊, as long as we have a platform for us to run models, it’s probably gonna be not different. 對于 uber 來說,它可能并不擔(dān)心 iOS 或者 Android,假如說他們能合并,那這是一個最省事兒的事兒,那將來他們就不用寫 app 寫兩套了。但是 it’s not a deal breaker。 然后從 framework 的角度來說,我覺得一方面大家開玩笑說 There’s a war on frameworks, 對吧?從當(dāng)年相對比較 academic 的 Caffe 跟 Torch 跟 Theano 這三家,到現(xiàn)在 Google 的 TensorFlow,Amazon 的 MXnet,F(xiàn)acebook 的 PyTorch,Microsoft 的 CNTK 等等,到最后大家發(fā)現(xiàn)這些 idea 都會逐漸 converge 起來。所以我個人不會太擔(dān)心最后 which framework wins on framework, or which framework migrates which framework. 最后的 idea 都差不多。

 

 

軟硬件結(jié)合的挑戰(zhàn)

Q9: 你提到軟硬件一定要結(jié)合,才能發(fā)展。那你現(xiàn)在覺得從 production eco-system 上看,有哪些地方軟硬件結(jié)合做的還不是很好?

Yangqing: 目前在 production 應(yīng)用上,軟硬件結(jié)合的只有 CPU 和 GPU,大家都還在一個探索階段。CPU 跟 GPU 差不多都已經(jīng)足夠 well known 了。最大的挑戰(zhàn)可能是怎么樣來 manage heterogeneous computation,因為在做 prediction service 的時候,傳統(tǒng) CPU 這邊的話,整個架構(gòu)都很 homogeneous。我可以在 production logic thread 上來做 computation 也沒什么問題。然后一旦走向 GPU,或者 accelerator 之后,就會需要有更加 desegregated service。比如 prediction/computation stack 是一個 pool,然后 production logic 會是另一個 pool。那么在這樣的一個 setting 上面,怎么樣把中間整個 connection 結(jié)合起來,是不是 network bandwidth 會變成一個新的 bottleneck。整個 latency 或者怎么樣來 manage computation pool 然后 capacity 怎么樣最后 balancing。 這些傳統(tǒng)的問題都會重新 emerge 起來。這方面還是需要一些 early analysis。

10 年后博士研究的玩法

Q8: 現(xiàn)在這些 framework,這些工具非常的成熟完善,這必然是件好事。但從另一個角度來講他對 computer vision researcher 和 graduate student 的 impact 是非常不同的。比如說五年前 / 八年前你可以 design 自己的 feature,做一個 minimization variation whatever graphical model 你可以發(fā) paper,這個玩法和現(xiàn)在必然不同,現(xiàn)在你要 train model,你要自己想辦法做一些新的 architecture 或者其它一些比較有竅門的東西才能發(fā) paper。那比如說十年之后你再去 Berkeley 讀一個 computer vision PhD 從頭開始的話,這個玩法是什么?

Yangqing:大家還有另外的一個相關(guān)的 comment 就是說目前這個整個做 deep learning training 需要的資源越來越多,學(xué)校到底怎么辦對吧,誰也沒有一萬個 GPU 來 train AutoML model,那這個 AutoML research 怎么做呢?比如說像 12 年的時候大家都覺得 Google 的 infinite resource,大家 deep learning 怎么做?最后 Alex 做的方法就是 2 個 GPU,我當(dāng)時在 Google 實習(xí),對我們來說還挺 surprising 的,其實 computation resource isn’t the winning factor。學(xué)術(shù)界的一個好處是,you have to be efficient。我現(xiàn)在個人是在工業(yè)界,工業(yè)界有的時候大家被這些 resource 給寵壞了,學(xué)術(shù)界其實一直都還是 source of the new information and new ideas。很多時候可能模型并不一定需要太大,但硬懟 performance 或者硬懟 container resource 大家在 grad student 這個地方就別做了。然后能夠做的方向就是 how we actually just look at the current models and then do new ideas。Berkeley 去年做了很有意思的一個 paper 叫 CycleGAN,怎么樣在 generative advisory network 上面做一些新的工作。這些方面可能不需要太多的 resource,包括是一兩個 CPU 就差不多夠了。所以可能再讀 PhD 的話可能做法還是差不多的,就是看看最近新的 idea 在什么方向,然后更多的是 iterate on ideas, not iterate on systems。

Alex: 我們今天的問答就到底為止,很榮幸今天能請到賈博士來和我們分享他在 Facebook 的工作,對 AI 的看法,對未來行業(yè)的想法。謝謝賈博士今天的分享!

主持人:Alex Ren

作者:Robin.ly

標(biāo)簽: 大數(shù)據(jù)演進(jìn) 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:從全球大數(shù)據(jù)市場看未來發(fā)展趨勢

下一篇:Apache Beam 實戰(zhàn)指南 | 大數(shù)據(jù)管道 (pipeline) 設(shè)計及實戰(zhàn)