2015年,,Google發(fā)布了機器學習框架TensorFlow,憑借其在技術上無可爭議的統(tǒng)治地位,,TensorFlow迅速成為這一領域的霸主,。 2017年,TensorFlow如日中天之際,,F(xiàn)acebook發(fā)布了PyTorch,,誰也沒有想到,短短四年后,,它竟把前者從王座上拉了下來,。 剝離正義與邪惡后,從某種意義上來說,,這就大衛(wèi)打敗巨人歌利亞的故事,。 01 機器學習框架簡史什么是機器學習框架? 這要從機器學習說起,。 大家應該都聽過人工智能,,機器學習就是人工智能的一種實現(xiàn)手段。機器學習之父Tom Mitchell曾下過這么一個定義——“如果一個程序可以在任務T上,,隨著經(jīng)驗E的增加,,效果P同步增加,則稱這個程序可以學習”,。 這里有兩個要點,,第一是程序,第二是經(jīng)驗,。程序的核心是模型,,而經(jīng)驗則表現(xiàn)為數(shù)據(jù),。其實這個定義也覆蓋了大數(shù)據(jù)的概念,只不過大數(shù)據(jù)一般強調(diào)數(shù)據(jù),,機器學習則更突出模型,。 而機器學習框架,簡單來說就是一套為機器學習服務的工具,,用以加速模型的開發(fā)與應用,。 就像你可以用樂高快速搭建出房子、汽車等各種各樣的模型一樣,,樂高就是一種框架,。 所以機器學習框架和機器學習的關系,就像生產(chǎn)關系和生產(chǎn)力一樣,,機器學習技術的發(fā)展決定框架的形態(tài),,而框架反過來又可以促進前者的發(fā)展。 比較有名的框架,,根據(jù)誕生時間排序,,主要有2002年的Torch,2007年的Theano,,2013年的Caffe,,2015年的TensorFlow和Keras和2017年的PyTorch這六個。 當然,,這些只是和本主題相關的,,其它還有很多傳統(tǒng)AI框架和庫,它們每個都滿足了某種特定場景,,但總體上來看,,可以說是多點散發(fā)。 直到2016年AlphaGo大戰(zhàn)李世石,,這似乎是一個奇點事件,。 我記得首局李世石便投子認輸了。那時我們正在云南團建,,AlphaGo不僅打敗了李世石,,也打敗了云南的美景,一路上所有人都在談論它,。 用李安的話說,,“我看不懂,但我大受震撼,?!?/p> 受震撼的不止我們,,全世界的人和資本都受到了震撼,。 AlphaGo用的技術是深度學習,,深度學習是機器學習的一種,其特征在模型上,,深度學習的模型是神經(jīng)網(wǎng)絡模型,。 AlphaGo之后,機器學習的方向開始朝深度學習統(tǒng)一,。 對底層框架來說,,這相當于吹響了沖鋒的號角。 經(jīng)過不斷的分分合合,,它們逐漸形成了兩大陣營,。 一個是TensorFlow陣營。 TensorFlow 2015年由Google開源,。其設計理念和Theano非常相似,,所以在Google加持的TensorFlow出現(xiàn)之后,Theano就沒什么存在的必要了,。而且Theano的關鍵創(chuàng)始人Ian Goodfellow也一直在谷歌工作,。2017年,Theano官宣不再維護,,同年,,Keras被添加到了TensorFlow之中。這構成了實力強勁的第一陣營,。 一個是PyTorch陣營,。 PyTorch 2017年由Facebook開源。PyTorch設計之初可以看成是Torch的Python版,。和Theano類似,,Torch的關鍵創(chuàng)始人也一直在Facebook。Caffe的創(chuàng)始人賈揚清在完成Caffe后先是去了Google開發(fā)TensorFlow,,隨后又到了Facebook,。在Facebook,他開發(fā)了Caffe2,。2018年,,Torch被標注為不再活躍,其主要維護者宣布精力將主要投入到PyTorch上,,同年,,Caffe2也被合并到了PyTorch之中。這構成了第二陣營,。 在一個要素自由流動的市場里,,行業(yè)成熟的標志是出現(xiàn)頭部公司。 所以TensorFlow和PyTorch的脫穎而出,,意味著決戰(zhàn)將在它們之間展開,。 從時間上來看,,TensorFlow總比PyTorch早,開源的時間早,,整合的時間也早,。 但從趨勢來看,TensorFlow的領先優(yōu)勢越來越不明顯,,Google Trends顯示,,甚至PyTorch已經(jīng)超過了它。 圖1 Google Trends : PyTorch VS TensorFlow 02 巨人歌利亞Google確實是技術上的歌利亞,。 不說安卓,,不說搜索,不說谷歌地圖,。 熟悉的人,,應該還記得大數(shù)據(jù)的故事。 2003年開始,,Google把自己內(nèi)部用的幾種數(shù)據(jù)處理技術陸續(xù)整理成論文,,公開發(fā)表。其中具有奠基性的有三個,,分別是計算框架MapReduce,,文件系統(tǒng)GFS和表格存儲BigTable。 蕓蕓眾生借此一時眼界大開,。 讀論文的眾多人中,,有一個叫做Doug Cutting的青年,他認為這些技術很有通用性,,便照著論文把里邊的系統(tǒng)自己做了一個出來,。 Google言之,于我心有戚戚焉,。 于是,,大名鼎鼎的,很快成為大數(shù)據(jù)事實標準的Hadoop就這么誕生了,。 大家或許聽過阿里云飛天5K的故事,。在王堅的力推下,阿里云參考Hadoop開發(fā)了一套自己的大數(shù)據(jù)系統(tǒng),,而飛天5K,,就是指這套系統(tǒng)成功支撐住了5千個節(jié)點。 但飛天5K發(fā)生在2013年,,Hadoop誕生在2006年,,Google發(fā)論文在2003年,而Google的內(nèi)部系統(tǒng)的啟用時間,不知何年,。 什么叫技術代差,,這就叫技術代差。 Doug Cutting后來被稱為“盜火者”,,而那三篇論文,史稱“Google 三駕馬車”,。 所以技術圈一直有一種印象,,那就是Google藏了很多黑科技,隨便把自己內(nèi)部用了很久,、甚至已經(jīng)不用的系統(tǒng)拿出來發(fā)表一下,,便能引起江湖上的血雨腥風。比如我在阿里時,,就總聽說某某Google大佬回國后,,在阿里把自己在Google用過的系統(tǒng)重新實現(xiàn)一遍而走上巔峰的故事,長恨自己眼界太窄又不在其中,。 而TensorFlow不僅是Google直接開源自己的內(nèi)部系統(tǒng),,而且是優(yōu)化版——TensorFlow之前,Google還有一個2011年開始的DistBelief,,TensorFlow正是總結了DistBelief的很多問題后升級而來的,。 而且,AlphaGo也是Google的,,再而且,,它還運行在TensorFlow之上。 所以按理說,,TensorFlow應該比被人抄出來的Hadoop更容易成功,,可Hadoop出來后就成了大數(shù)據(jù)的事實標準,TensorFlow卻沒有,。 不僅沒有,,似乎還在走下坡路。 IT界有個達維多定律,,說市場的第一代產(chǎn)品總能自動獲得50%的市場份額,。TensorFlow比PyTorch早,技術上沒有代差,,卻在有明顯優(yōu)勢的情況下被PyTorch拉了下來,。 確實不可思議,說Google輸了也不為過,。 03 大衛(wèi)的策略那PyTorch做對了什么,? 知乎上對兩者有相當多的討論,但主要集中在技術層面的對比。 誠然技術是一切的基礎,,但畢竟被比較的是Google,,在這個領域,他有Jeff Dean,,有深度學習的圖靈獎獲得者,,還有一系列頂級專家。引用騰訊機器學習平臺負責人潘欣的原話來說,,Google在2015年后的幾年間包攬了全世界在深度學習領域一半以上的關鍵技術突破,,比如TPU, Transformer, BERT, Neural Machine Translation, Inception, Neural Architecture Search, GAN,Adverserial Training, Bidrectional RNN……說Google技術不行,,似乎很難成立,。 所以我更傾向于認為問題在別處。 周其仁說自己觀察經(jīng)濟現(xiàn)象有兩個法門,,一曰遠,,一曰簡,遠是遠遠的看大勢,,簡是永遠選擇最簡單的指標,。 我認為PyTorch在大勢上的策略才是問題的關鍵。 具體有三,,一是差異化的產(chǎn)品定位,,一是順應了用戶趨勢,一是拿住了TensorFlow的反關節(jié),。 三點環(huán)環(huán)相扣,,構成了PyToch的競爭策略。 先說差異化的產(chǎn)品定位,。 任何一個挑戰(zhàn)者進入市場時,,都需要通過差異化找到自己的立足之地。 PyTorch也不例外,。 它發(fā)現(xiàn)市場上的用戶可以分兩個群體,,一是工業(yè)界,一是學術界,,兩者有不同的需求,。工業(yè)界更關注模型的應用,比如部署,、性能等,,而學術界更關注模型的開發(fā)。這很容易理解,,工業(yè)界的基本訴求是穩(wěn)定,,一般模型上線后會跑很長一段時間,,而學術界以研究為主,會頻繁修改模型以驗證想法,,對性能要求不高,,對部署更不在乎。 TensorFlow的優(yōu)勢在模型的應用上,。 在Google強大的開發(fā)能力下,,TensorFlow不僅性能優(yōu)越,而且支持多端部署,,不管是云上的分布式還是邊緣的手機端都沒問題,。但可能就是因為Google的開發(fā)能力太強了,TensorFlow在模型開發(fā)的易用性上并不上心,。 PyTorch認識到這是個機會,,它在自己的官方論文里,,清晰的表達了自己的定位——把研究者放在第一位(put researchers first),。 圖2 Facebook論文 《PyTorch : An Imperative Style,High-Performance Deep Learning Library》 于是它很快占領了學術界。 根據(jù)paperswithcode的統(tǒng)計,,截止2021年10月,,論文里PyTorch與TensorFlow的應用比例為86:14,而且TensorFlow下滑明顯,。 圖3 paperswithcode--論文中應用的框架比例 這時市場格局是這樣的,。 圖4 PyTorch VS TensorFlow 市場格局1 再說用戶趨勢。 地產(chǎn)界有個說法,,短期看金融,,中期看土地,長期看人口,。 機器學習框架的用戶也是有趨勢的,。 工程師是怎么來的?高中畢業(yè)進入大學,,大學讀完本科,、碩士和博士后,畢業(yè)上班,,進入工業(yè)界,。 這個樸素的道理決定了用戶基本是從學術界流向工業(yè)界的。 所以PyTorch占領了學術界,,相當于占領了上游,。習慣了PyTorch的人會帶著PyTorch進入工業(yè)界,同時新同學源源不斷進入學術界,,又構成了增量用戶,。 用發(fā)展的眼光看問題,,市場是這樣的。 圖5 PyTorch VS TensorFlow 市場格局2 最后說說TensorFlow的反關節(jié),。 周鴻祎在《我的互聯(lián)網(wǎng)方法論》里提到過一個詞叫反關節(jié),,小公司一旦拿住大公司的反關節(jié),大公司的優(yōu)勢就會變成包袱,,越反抗越疼,,只能眼睜睜看你擴張。 PyTorch就拿住了TensorFlow的反關節(jié),。 構建神經(jīng)網(wǎng)絡有兩種技術路線,,分別是靜態(tài)圖和動態(tài)圖,靜態(tài)圖性能好,,動態(tài)圖調(diào)試方便,。 TensorFlow一開始選擇的是靜態(tài)圖,PyTorch是動態(tài)圖,,這就是產(chǎn)品差異化背后的技術原因,。 不過這種技術選擇帶來的影響是長期的,因為圖的構建方式確定了,,框架的API也就隨之確定了,。 API是框架和用戶之間的接口,像汽車的方向盤和剎車,。同時就像汽車不能隨便升級成用剎車掛檔,、方向盤加油一樣,API也必須力求穩(wěn)定,。 事實上所有嚴肅的基礎軟件都會把避免breaking change(破壞式升級)當作API設計的首要原則,。 所以TensorFlow在看到PyTorch靠動態(tài)圖不停搶占市場的時候,自己卻動彈不得,,因為它升級就需要改變API,,而它的用戶基數(shù)越大,它就越難作出改變,。 只能縫縫補補往里繼續(xù)加東西,,比如Keras。 但PyTorch并沒閑著,,它站穩(wěn)腳跟后開始向工業(yè)界擴張,。2018年,PyTorch借助合并Caffe2,,在性能和部署上大大前進了一步,。 這相當于打到了TensorFlow的大本營。 TensorFlow終于坐不住了,,于是以壯士斷腕的決心,,不顧breaking change的惡名,,2019年把TensorFlow升級到了2.0,重構API,,增加動態(tài)圖,。 有人說這體現(xiàn)了Google的傲慢,它視開發(fā)者如草芥,。還有人建議Google出一個技術團隊,,把原來在TensorFlow1.0上的能跑的東西在2.0上重新實現(xiàn)一遍。 但可能它也是沒辦法,,總不能坐以待斃吧,。 04 后記仔細想想,PyTorch的三點其實是一點,,叫一點的三個方面可能更加準確,。 這樣的分析或許有點馬后炮的意思,但不管PyTorch是有意為之還是純屬巧合,,這個邊緣崛起的故事還是相當值得一看,。 那是不是說TensorFlow就這樣輸?shù)袅耍?/p> 并不是,前邊提到,,只是決戰(zhàn)會在他們兩個之間展開,,現(xiàn)在功能上兩者幾乎齊平,,但從用戶存量來說,,TensorFlow的絕對值應該比PyTorch還要多不少。 而且未來還有新變量,,那就是云,。 云作為一種新的軟件分發(fā)機制,勢必對軟件的市場格局產(chǎn)生深遠影響,。根據(jù)Google的測算,,2029年,77%的企業(yè)IT將以云為主,。 誰在云上做的好,,誰才是最終贏家。 不過我覺得真正精彩的是框架背后的人,??蚣艿姆址趾虾辖汹厔荩说牧鲃硬攀枪适?。 比如Torch的創(chuàng)始人里,,Ronan Collobert在Facebook,而Samy Bengio去了Google,;比如Caffe的作者賈揚清,,讀博時自己開發(fā)了Caffe,,畢業(yè)后去Google參與了TensorFlow,之后又到Facebook,,在這里不僅開發(fā)了Caffe2,,還推動了PyTorch跟Caffe2的合并…… 頗有東漢末年群雄并起,有識之士縱橫天下的意味,。 而所謂最終格局,,與其說是趨勢上的客觀必然,不如說是他們推動下的主觀偶然,。 |
|