眾所周知,經(jīng)歷了計(jì)算機(jī)科學(xué)過(guò)去幾十年沒(méi)有突破的瓶頸期之后,人工智能技術(shù)這些年由于算法和算力(并行計(jì)算)革命,邁入了一個(gè)高速發(fā)展的時(shí)期。不僅如此,在編程語(yǔ)言和開(kāi)發(fā)者環(huán)境不斷演化的今天,人工智能算法領(lǐng)域已悄然形成了兩大陣營(yíng)——TensorFlow與PyTorch互相角逐的格局。
隨著競(jìng)爭(zhēng)日趨激烈,先入為主的TensorFlow被后來(lái)者PyTorch迎頭追上,前者逐漸顯現(xiàn)頹勢(shì)而棋輸一著,業(yè)內(nèi)有一鮮明比喻:“PyTorch吃掉了TensorFlow的午餐!”不久前有科技媒體證實(shí),谷歌內(nèi)部正押注一個(gè)新框架JAX來(lái)力求改變與PyTorch競(jìng)爭(zhēng)不利的局面,而谷歌大腦和DeepMind也很大程度上放棄了TensorFlow轉(zhuǎn)而使用JAX,這意味著AI框架之爭(zhēng)進(jìn)入了一個(gè)新的階段。
● 人工智能框架TensorFlow和PyTorch的起源
在此之前,我們先了解一下框架的概念。“框架”源于計(jì)算機(jī)軟件開(kāi)發(fā)術(shù)語(yǔ),由于上世紀(jì)編程語(yǔ)言模塊化資源的匱乏,框架的概念少有流行,隨著后來(lái)開(kāi)發(fā)者環(huán)境的改善,生產(chǎn)力工具的極大豐富,框架的應(yīng)用隨之普及,概念也逐漸清晰。
框架作為編程語(yǔ)言伴生的集成化工具,在開(kāi)發(fā)者環(huán)境中處于一種中間地位:語(yǔ)言->庫(kù)->框架->引擎,越往后集成度越高,理論上開(kāi)發(fā)者可以利用的效率也越高。知名的框架比如基于JAVAScript的前端工具React,一個(gè)熟練的開(kāi)發(fā)者可以運(yùn)用此類工具快速構(gòu)建軟件項(xiàng)目的原型基礎(chǔ),這也是常見(jiàn)的敏捷開(kāi)發(fā)思想。
人工智能框架TensorFlow的初始版本源于2015年,由谷歌大腦團(tuán)隊(duì)開(kāi)發(fā)并發(fā)布在Apache 2.0開(kāi)源許可證下。TensorFlow是谷歌大腦的第二代機(jī)器學(xué)習(xí)工具,谷歌旗下部署的商業(yè)應(yīng)用包括搜索、圖片、地圖、廣告、翻譯等等都與此有關(guān)。一個(gè)顯著地例子是,近年來(lái)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的發(fā)展,各國(guó)語(yǔ)言文字翻譯(機(jī)翻)準(zhǔn)確度的提高,TensorFlow在其中起到了重要作用。
PyTorch是由科技公司Meta人工智能團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源Python/ target=_blank class=infotextkey>Python機(jī)器學(xué)習(xí)工具,它的出現(xiàn)比TensorFlow晚了近一年,但它兼收并蓄地改進(jìn)了當(dāng)時(shí)主流的包括其他幾個(gè)AI框架Caffe、Torch,由此開(kāi)發(fā)的基于自動(dòng)微分,且使用動(dòng)態(tài)計(jì)算圖的新一代AI框架。PyTorch起步之初就迎合了大量開(kāi)發(fā)者的需求與習(xí)慣,逐漸成長(zhǎng)為與TensorFlow并列最受歡迎的兩大AI框架之一。
● 框架戰(zhàn)爭(zhēng):PyTorch崛起和TensorFlow的衰退
原本先入為主的TensorFlow緣何被PyTorch后來(lái)居上?須知道,在人工智能機(jī)器學(xué)習(xí)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)領(lǐng)域,谷歌團(tuán)隊(duì)已經(jīng)歷了第一代專有機(jī)器學(xué)習(xí)系統(tǒng)DistBelief(TensorFlow的前身)的部署,所以當(dāng)TensorFlow進(jìn)入工業(yè)領(lǐng)域的時(shí)候,優(yōu)勢(shì)非常之大。但是后來(lái)的市場(chǎng)變化,PyTorch在開(kāi)發(fā)者社區(qū)大受歡迎,以至于其在學(xué)術(shù)研究領(lǐng)域全面勝出,而TensorFlow的優(yōu)勢(shì)也正逐漸為之蠶食。
據(jù)開(kāi)發(fā)者社區(qū)數(shù)據(jù)統(tǒng)計(jì),TensorFlow和PyTorch框架的論文公開(kāi)代碼庫(kù)兩者數(shù)量差距從2021年3月的1:4擴(kuò)大到2022年的1:6。如今各大頂會(huì)論文數(shù)量都是PyTorch對(duì)TensorFlow的絕對(duì)碾壓,就連谷歌自家的論文也只有Torch和JAX,以及零星的TF1.0開(kāi)源代碼。全球范圍看,經(jīng)過(guò)幾年發(fā)展PyTorch在學(xué)術(shù)圈的主導(dǎo)地位已基本站穩(wěn),一方面得益于PyTorch一開(kāi)始主打的動(dòng)態(tài)圖機(jī)制,有益于實(shí)驗(yàn)室和研究中心快速迭代模型;另一方面得益于吸收了TF1.0和其他主流框架的優(yōu)點(diǎn)、摒棄缺陷,尊重開(kāi)發(fā)者意見(jiàn)并給予便利操作,贏得受眾青睞。
TensorFlow的衰退源自許多科技巨頭常有的弊病——追求自利的生態(tài)膨脹。一開(kāi)始TensorFlow憑借先入為主獲取市場(chǎng)穩(wěn)操工業(yè)界的盤子,谷歌也憑借Android/ target=_blank class=infotextkey>安卓系統(tǒng)大量開(kāi)發(fā)者和數(shù)據(jù)的支撐令TF1.0日臻成熟,大量企業(yè)項(xiàng)目落地。但作為科技巨頭,谷歌過(guò)于執(zhí)著自家生態(tài)的一系列操作致使TensorFlow日后變成了一個(gè)不那么適合開(kāi)源的項(xiàng)目。TF1最大的缺點(diǎn)在于混亂的API設(shè)計(jì)和難以調(diào)試的靜態(tài)圖,許多原本可以順手解決的問(wèn)題谷歌團(tuán)隊(duì)視而不見(jiàn),以至于開(kāi)源的TensorFlow出現(xiàn)了大量交叉版本,廠商開(kāi)始各自為政。
后來(lái)的TF2也不那么成功,反而破壞了TF1的生態(tài),TF2不兼容TF1,TF1繼續(xù)適配新設(shè)備,TF2想辦法兼容TF1。惡性循環(huán),開(kāi)發(fā)者大量流失到更為開(kāi)放、更容易聽(tīng)取意見(jiàn)的PyTorch陣營(yíng)。而推出JAX實(shí)屬谷歌的自救,它的做法也就是盡可能不全盤否定TensorFlow的基礎(chǔ)上向PyTorch貼近。
最后
框架之爭(zhēng)的結(jié)果是勢(shì)均力敵,趨勢(shì)互為接近,倘若一方因管理團(tuán)隊(duì)決策失誤導(dǎo)致開(kāi)發(fā)者大量流失,那么另一方將占據(jù)壟斷地位。目前來(lái)看TensorFlow的工業(yè)基本盤暫時(shí)不會(huì)丟失,但隨著建立在PyTorch之上的特斯拉自動(dòng)駕駛、優(yōu)步Pyro等項(xiàng)目落地,TensorFlow的優(yōu)勢(shì)領(lǐng)域也正面臨日益增長(zhǎng)的壓力。
AI框架之爭(zhēng)是21世紀(jì)的新鮮事,這也是技術(shù)文明發(fā)展進(jìn)程中的必經(jīng)之路。隨著人工智能產(chǎn)研基數(shù)的不斷擴(kuò)大,該領(lǐng)域技術(shù)演化與形態(tài)碰撞將持續(xù)催生優(yōu)勝劣汰、與時(shí)俱進(jìn)的生產(chǎn)力工具。
文/陳徐毅 高級(jí)工程師,科技專欄作者,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員。