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