關於深度學習的框架之爭一直都沒停止過,每隔一陣大傢就要進行一次框架大討論:
TensorFlow 的使用者雖多,又有谷歌的背書,但真的很!難!用!
Pytorch 雖然入門簡單、上手快,但因為開源時間不長,關於它的文檔和代碼相對較少。
Keras 作為 TensorFlow 的高級 KPI,一旦有什麼想法需要快速建模驗證時很方便,但相較 tf 功能還是沒那麼全。
Caffe 雖然方便部署,但是 C++ 的框架,在編程上會比較難。
……
每個框架都各有優劣,而針對於此的討論也一直沒有停息。
近日,Yoshua Bengio 教授的一封郵件又讓對框架的討論迅速升溫,在郵件中,他表示, 他們將會停止對 Theano 的更新,接下來,會以最低成本對 Theano 進行為期一年的維護,之後就將徹底與 Theano 告別。詳情可參見雷鋒網此前發文【深度學習框架 Theano 宣佈完成歷史使命,即將退役】。
這意味著,開發者又要與一個深度學習框架說再見瞭。
深度學習框架祖師爺 Theano
早在今年一月份雷鋒網 AI 科技評論進行框架大盤點時,就曾詳述過 Theano 。詳情可以參見【盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn】
Theano 基於 Python,是一個擅長處理多維數組的庫(這方面類似於 NumPy),它的設計初衷是執行深度學習中大規模神經網絡算法的運算。Theano 早期的開發者有 Yoshua Bengio 和 Ian Goodfellow,由於出身學界,它最初是為學術研究而設計。當它與其他深度學習庫結合起來之後,會非常適合於數據探索。
Theano 可以被更好地理解為一個數學表達式的編譯器:用符號式語言定義你想要的結果,該框架會對你的程序進行編譯,來高效運行於 GPU 或 CPU。
在過去的很長一段時間內,Theano 都是是深度學習開發與研究的行業標準。比起深度學習庫,它更像是一個研究平臺,你需要從底層開始做許多工作,來創建自己需要的模型,這就意味著它的靈活性很強。
再怎麼優秀的工具都有退出歷史舞臺的一天,曾經深得學界青睞的 Theano 也不例外。
作為深度學習框架中祖師級的存在,從 2007 的推出到 2017 的落幕,到現在剛好歷經十年。
Theano 已完成歷史使命,功成身退
針對 Theano 的落幕,AI 科技評論與眾多開發者進行瞭交流,大傢的看法出奇一致:
——對於這件事情並不吃驚,很正常的更新換代。
——以前用 Theano 的人大都已經換成其他框架,Theano 已完成瞭它的歷史使命,退出舞臺是必然的。
為什麼說 Theano 的落幕是歷史必然?針對於此,AI 科技評論聯系瞭幾個曾經接觸過 Theano 的開發者進行瞭采訪:
KDD Cup 2017 的雙料冠軍胡可對 AI 科技評論表示 ,雖然在 KDD Cup 比賽時用瞭 Theano,但平時在其他任務上一般用的是 TensorFlow 或者 CNTK。"Theano 完成瞭它的歷史使命,它比較適合實驗室的 toy data,不太適合當前工業界‘大數據’的需求。" 正如胡可所言,生於學界的 Theano,必然有其應用局限性——比較適合做小規模的短期實驗,而在近兩年數據量劇增且優秀框架層出不窮的當下,就不再那麼得人心瞭。
曾經接觸過 Theano 的一位開發者表示,Theano 的速度在當時來說,與同期的 Torch 相比並不算快,更比不上現在新出的框架。此外,在代碼實現上,比起其他框架,Theano 也不是很直接。
2015 年,一個關於機器學習的博客 fastML 就將 Torch 與 Theano 進行瞭對比:
圖中紅色柱狀圖指 Torch,綠色柱狀圖指 Theano,可以看到 Torch 在大多數情況下性能都要優於 Theano。
而對於使用 Theano 的原因,卡內基梅隆大學(CMU)語言技術研究所(LTI)博士研究生王贇對 AI 科技評論表示,他是 2015 年初開始做深度學習的,那時候還沒有 Tensorflow,而同時期的 Torch 又是基於他不會的 Lua 語言,所以最終選擇瞭 Theano。" 才短短兩年多,就已經天翻地覆 ",他感慨道。確實如此,短短兩年的時間,TensorFlow 的用戶量就遙遙領先,亞馬遜開始為 Mxnet 背書,微軟和 Facebook 也牽手發佈 ONNX,而 Theano 則黯然退出歷史舞臺。
Theano 並非完全消失
那麼,就像之前媒體所報道的那樣,Theano 已死?並非如此。
Bengio 在他的公開郵件上這樣寫道," 多年以來,我們都以 Theano 的創新深感自豪,其創新也正被其他框架繼承和優化。比如,把模型表達為數學表達式、重寫計算圖以獲得更優性能和內存使用、GPU 上的透明執行、更高階的自動微分,正在全部成為主流。"
正如 Bengio 所言,從現在的主流模型之中,我們仍然可以看到 Theano 的影子。它並沒有死,而是影響著許許多多的模型。
事實上,Theano 的很多開發人員都去谷歌參與 TensorFlow 的開發瞭,其中包括早期開發成員 Ian Goodfellow。而後起之秀 Tensorflow 在功能上與 Theano 十分相似,它也是一個偏底層的框架,相比 Theano,性能也更加優化。
上圖為 TensorFlow 系統架構,詳情可參見雷鋒網【從系統和代碼實現角度解析 TensorFlow 的內部實現原理】一文。
AWS 工程師張幟對 AI 科技評論表示:新老交替,這一天總會來的。基本上所有的輪子都參考過 Theano,它也不算徹底消失。
知乎網友 mileistone 也如此評價 Theano:Theano 開啟瞭基於符號運算的機器學習框架的先河,然後隨著 tf 和 pytorch 的崛起,完成自己的歷史任務。
下一步
Bengio 在他的郵件中表示,目前支持深度學習研究的軟件生態系統快速進化,還有很多別的優秀的深度學習框架可供選擇。
而隨著對「Theano 停止更新」的緬懷結束,似乎話題又要轉向另一個方向瞭,那就是,究竟下一步該選擇什麼框架呢?
討論雖多,每傢各執一言,但有個不爭的事實:TensorFlow 的忠實擁護者一直處於遙遙領先狀態,有利於快速建模驗證的 Keras 也頗得人心,後起之秀 PyTorch 的粉絲數日益增多,背靠亞馬遜的 MxNet、背靠微軟的 CNTK 更新也一直穩定。
不過對框架的選擇也許並不是重點,有網友評價,框架就是刻刀,而開發者是雕刻傢。雖說刻刀的選擇很重要,但雕出來的東西好不好,更多是取決於個人。
CMU LTI 博士研究生王贇也對 AI 科技評論這樣說道:
其實這麼多年我看著各種庫的起起落落,還有一種感慨是研究者不能始終抱著一個大腿,要與時俱進。但是時代的潮流在哪裡也不是隨時都能看出來的,也沒法時刻保持自己在前沿,但好在掌握瞭一個庫之後再換另一個庫並不是很費勁。
相信這也是千千萬萬開發者的觀點,框架的選擇並沒有「那麼」重要,更重要的是研究者自身的與時俱進。