致謝:感謝賈揚清,他耐心地回答了我的數百個問題,使這篇文章成為可能。
(一)躲躲藏藏的寬闊
在人工智慧(AI)的江湖,常聽人言:得框架者,得天下。
誰主宰AI模型的生產自動化,誰最有可能主宰AI工業化。所以,深度學習框架是科技巨頭兵家必爭之地。
深度學習框架屬於AI框架,是AI底層技術,而AI技術創新早已深入底層。沒有什麼道路可以通往底層技術創新,底層技術創新本身就是道路。
這條路,是隱秘的,深度學習框架作為AI系統軟體,走近前去,才不斷驚歎它那種躲躲藏藏的寬闊;走進前去,才不斷驚歎戰壕密佈,戰馬喧騰。
低垂的果實已摘光,那些只消小打小鬧(對人工智慧模型做一些小調整,擴大人工智慧模型的規模)就能刷論文、刷面子、刷一切的日子,一去不復返了。
從歷史中得到的唯一教訓,就是從未從歷史中得到教訓。 而人工智慧演算法不同,偏偏擅長從歷史中“得(學)到(習)”。
回顧從前,多款深度學習框架,待時而出,常聽人言:為什麼,這個深度學習框架受人追捧,那個深度學習框架遭人嫌棄?
賈揚清認為:“這背後是AI需求和設計邏輯的變化。”
像深度學習框架這樣的計算機系統軟體,大型專案經驗被極客們追奉為信仰,而賈揚清是開源軟體深度學習框架Caffe,Caffe2的作者,是谷歌深度學習框架TensorFlow的核心作者之一,親手寫了ONNX第一版程式碼。
一位技術大神可以是一個深度學習框架的作者,很難是全球流行深度學習框架的作者,極難成為多款全球大流行的深度學習框架的作者。
伸手一數,這個年齡段,這個履歷表,放眼全球,除了賈揚清,很難找到第二人。
(二)一時,效能是第一需求
車輪破開積水。
開場白,在雨中。撐著傘,邊走邊聊,賈揚清說:“對於技術來說,有一句話很重要,There is no stupid people, only misaligned priority(沒有蠢人蠢事,只有搞錯了的優先順序)。”
深度學習框架的發展是螺旋式,談論深度學習框架,繞不過它所解決的核心問題。某一段時間內,效能是第一需求;過一段時間,靈活又會變成第一需求。敲黑板,請記住“第一需求”。
搞人工智慧,首先氣質這塊要跟上,手推公式,一面牆寫滿密密麻麻的公式,頓時身高一米八,氣場八米一。
搞人工智慧,其次能力這塊要跟上,機房裡動不動就是計算叢集,一臺計算機解決不了,一百臺計算機合力上。一頓操作猛如虎,效率還在原地杵,那可是饒君掬盡湘江水,難洗今朝滿面羞。
搞人工智慧,光會數學不夠,還要懂計算機,動不動赤手空拳面對一群計算機。雖然不是打群架,但也難敵成千上萬張顯示卡,效能、資源、頻寬、訪存、大規模分散式系統,一個都不能少,都要搞定。
搞人工智慧,不容易。假設一個工程師這樣開始一天的工作:在計算機上每實現一個AI演算法,都要用機器指令控制龐大的計算機系統,全盤考慮計算機底層資源是如何運轉,如何分配的。這還不夠亂,後面還有一千臺計算機在排長隊,看不到隊尾那種。
於是,下班給老闆寫了一封辭職信,來男廁所第二個隔間處領取。
眼瞅著這種困難和複雜至極的情況,真是聞者傷心,聽者落淚。往嚴重裡說,運算AI演算法和計算機的效率上不去,會拖住全球人工智慧產業落地的後腿。
對此,搞深度學習框架那幫人旗幟鮮明地支援AI演算法工程師,全神貫注於演算法設計和實現,讓深度學習框架解決這個痛點。而那些最先解決痛點的,往往是最先遇到痛點的。
2009年,谷歌公司率先建了一個框架,名叫DistBelief。
谷歌公司擅長計算機系統級軟體,它不會放過任何機會。歷史反覆證明,在計算機系統軟體的戰場上,谷歌沒有輸給過任何公司。跑高鐵,鋪鐵軌,跑演算法,就要建框架。於是,谷歌建了。
如今談起DistBelief,彷彿陳年往事。這個谷歌公司的閉源框架,從分步式系統設計的角度看,建得非常好。也有人把DistBelief視為TensorFlow的前身。
雖然最開始設計的時候不是專門為卷積網路設計的,但是,DistBelief給當時非卷積的網路架構提供了很好的設計基礎。它的設計原理像大腦,厲害之處在於,那個時候,就能做超大規模的訓練,搞定十億引數。
谷歌渾涵光芒,雄視千軍,做大型計算機系統軟體,尤為擅長分散式,“大”從來不是問題,就怕不夠“大”。
那時候,中國的新浪微博才剛開始走紅,不像今天“微博輿論”已是大資料。那些AI訓練所使用的資料,像夏汛的河水不斷重新整理水位線紀錄。而那時候的深度學習框架,沒有“張量(tensor)”的概念。
曾幾何時,張量是物理學家喜歡的概念,但是數學家會說,我不滿意物理學家對張量的看法。AI演算法開發者說:“只使用,不爭論。”
所有的光芒,都需要時間才能被看到。
2010年,深度學習在語音領域實現了突破,其中沒有用到卷積網路。轉眼一年後,2011年12月29日,一篇論文激起千層浪,一個炫酷黑科技大火了,計算機居然會自動找出貓咪圖片。
這個AI技術,是谷歌的。讓計算機來回答一張圖片上的動物是不是貓,答案只有兩個,是貓,不是貓。愛貓人士,一片歡騰,人工智慧也愛擼貓,看來普通人和高科技的距離,只有一隻貓。
貓火了,論文也火了,谷歌也火了一把,只有深度學習框架沒有火。
那篇響噹噹的論文是在DistBelief深度學習框架上做的。那時候,谷歌公司就能自信地漫步在深度學習框架上,用成千上萬的CPU核,訓練數十億引數,遊刃有餘地管理底層技術細節。
喵星人是網紅體質,AI也是。
2012年,AlexNet模型一問世就成了網紅,掀起了深度學習在影象識別上的高潮。這個模型有多重要?此後的大約十年內,有無數雙渴(想)望(發)真(論)理(文)的眼睛都不停放電,不放過任何一點微小細節,哪怕論文裡有些思路已不再適用。
AlexNet模型的背後是圖靈獎獲得者,傑弗裡·辛頓(Geoffrey Hinton),論文的兩位作者(Alex Krizhevsky和Ilya Sutskever)同出一個師門。那一年的國際競賽上,他們的團隊是唯一使用神經網路的團隊。
日後從創業到被谷歌收購,一路火花帶閃電。
Alex是常見英文名,有戰士之意,這個名字的常見程度,類似於中國的“建軍”。為了訓練模型更順暢,建軍博士Alex Krizhevsky手寫了一套深度學習框架,名叫Cuda-Convnet,完全是為了搞科研,順手而做。
起初,建軍博士Alex Krizhevsky搭建了支援快速科研迭代的一套程式碼,在GPU上快速跑神經網路。隨後,用比較簡單直接的C/C++程式碼和手工定義模型格式,不加入太多大工程的抽象和設計,一切按從簡於易的思路設計。
草率批評的人會說,很難體系化。建軍博士Alex Krizhevsky可能會儒雅地回懟:“奇技淫巧,吾不以為意也。”
深度學習框架Cuda-Convnet的整套程式碼,是典型的科研程式碼,大牛才能寫出來,缺憾是不重(理)視(睬)工程設計,沒有太關注模組化和抽象化的能力。那時候,手寫框架大神出手對付科研,足矣。
出生於那個時期的深度學習框架,身上留有“時代的烙印”,天時地利決定了它不是為工業化而生。不能往大處用又怎麼樣?不求孤名做霸王,打遍天下做拳王。
(三)Caffe問世,人間值得
夕陽暮火,紐約大學晚風撩人,加州大學伯克利分校晚霞燦爛。
美國紐約大學楊立昆團隊推出的OverFeat深度學習框架,也完全是出於自用,完全以搞科研為目的。甚至連起名字也沒有多費心。OverFeat是一篇論文提到的演算法名字,時至今日,再度提起這個框架,有一種考古挖掘的既視感。
從2009年8月開始的四年零五個月裡,賈揚清在美國加州大學伯克利分校讀博士,在計算機視覺小組,他悄然發現Cuda-Convnet是個寶藏,程式碼在最佳化方面寫得特別精妙。
他按捺不住驚喜,找到了建軍博士Alex Krizhevsky,只為此間精妙,哪怕從頭寫一遍Cuda-Convnet全部程式碼。
有些問題,早已藏在心底,期待被人問起。作為AI的使徒,建軍博士Alex Krizhevsky心底的問題被賈揚清問到了,Cuda-Convnet是怎麼設計出來的?
建軍博士Alex Krizhevsky的語氣儒雅溫柔:“因為我們成立了科技公司,程式碼屬於商業智慧財產權,不能分享程式碼,但是,如果有什麼科研實現上的困難,可以隨時問問題。”
為了尊重智慧財產權,除了開源Cuda-Convnet之外的任何一行程式碼,都不可分享。但是,智慧和經驗都可分享,一段不限時長的線上Q&A開始了。此後,當賈揚清和團隊遇到困難,就會得到幫助。這是上一代全球流行的深度學習框架Caffe最開始的故事。
一段偉大的旅程,出發時,往往只為實現一個小目標。
那時候,賈揚清的想法很簡單,讓加州大學伯克利分校的隊友們,更容易嘗試花式新演算法,跑模型的工作更加體系化。
賈揚清心惟其義,潛心學習了Cuda-Convnet的寫法,主要是學習高效能程式碼的設計思路。
他打算重新寫一個框架,實現和Cuda-Convnet一樣的功能,設計地更加體系化,更多工程上的抽象,同時又有完整的單元測試。
有些工作,一旦開頭,就停不下來了。賈揚清和團隊先寫了一個基於CPU的框架,叫Decaf。再寫了一個基於GPU的框架,叫Caffe(C-A-F-F-E這個五個字母,分別是論文“快速特徵提取的卷積框架”英文簡稱的首字母),讀音咖啡。
Caffe的論文還對比了OverFeat,Decaf,Torch7,Theano/Pylearn2,Cuda-Convnet這幾位框架界的前輩。
巧合的是,第一眼看到這個開源框架的AI開發者,可能要驚訝到“喝杯咖啡,壓壓驚”。深度學習框架Caffe的出現,方便了萬千AI開發者體系化的開發模型,遠離那本叫做《頸椎綜合症的康復與治療》的破(惡)書(夢)。
說深度學習框架Caffe是許多AI開發者的初戀,並不為過,知乎帖子裡的回憶殺,至今仍有開發者把Caffe的原始碼梳理了好幾遍,一種經典永流傳的既視感。
早期計算機視覺創業公司則拿出看性感美女的眼神打量Caffe,一秒鐘也不能等了,立刻上手。誰攔著,就急眼,誰擋著,就拼命。
人頭攢動中,人群高喊:Caffe來啦,快用啊,沒時間解釋了,老司機開車啦。
作為賈揚清建立的開源專案,Caffe由美國加州大學伯克利分校視覺和學習中心在GitHub上一個活躍的貢獻者社群的幫助下,維護和開發。
Caffe出生的時候,賈揚清是博士生,買裝置,很摳門,好在英偉達公司捐贈了一個6000美元的GPU,他又去美國亞馬遜網站攢了一個600美元的電腦。大家開玩笑說,這套裝備的淨值是6600美元。
誰能想到,老司機的車,是小馬拉大車。
這不是傳聞,這是賈揚清在Caffe專案上真實的工作條件。直到今日,賈揚清仍然感懷Cuda-Convnet的“功勞”,引用他的原話就是:“特別是一些運算元實現,都是受到了它的啟發。”
傳承是一種科學精神,無論後輩致敬前輩,還是前輩關懷後輩,都好似春風拂面,陽光醉人。
賈揚清曾在知乎上聊過一個小段子。
美國斯坦福大學著名的李飛飛教授(這位是女神版,阿里巴巴還有一位男神版)經常關心華人學生。賈揚清在加州大學伯克利分校念博士的時候,有一天,李飛飛教授突然問了賈揚清的導師Trevor Darrell教授一句:“賈揚清這學期沒幹啥事兒啊!(Yangqingis just doodling around in the last semester!)”
從斯坦福大學到加州大學伯克利分校,開車需要一小時,AI大牛教授洞察一位博士生只需一個念頭。請估算賈揚清的心理陰影面積和感動函式。
那些時光衝不淡、風塵吹不散的日子,偶然念及,歲月靜好,人間值得。
(四)吹響軍團作戰衝鋒號
一路奔,一路跑,深度學習演算法豹變,深度學習框架虎嘯。
著名的AlexNet之後,優秀的VGG,GoogLeNet等深度學習演算法模型,以山洪暴發之勢,衝刺精確度,橫掃江湖。
建軍博士Alex Krizhevsky有一句著名的玩笑,“用兩個GPU,就超越了谷歌工作的效能”。讀懂這句的人,無不感慨演算法創新的魅力如此之大。
演算法強,就能在同等條件或者更少算力的條件下,僅憑才華,以寡敵眾,以窮勝富,以少贏多。然而,深度學習框架那幫人心裡卻在想另一件事,既然演算法創新如此迅猛,就得有相應的軟體框架去實現。
那時候,谷歌AI掌門傑夫·迪恩(Jeff Dean)和美國斯坦福大學博士安德烈·卡帕西(Andrej Karpathy)常常叫上精神小夥們,圍桌討論。
這種天才小論壇,在當年,一間屋子也就夠坐了。傑夫·迪恩(Jeff Dean)偏超大工業工程,安德烈側重前沿學術研究。那個時候,這群精神小夥中有很多人還是學生,他們時常討論AI將有什麼樣的創新。
有人稱傑夫·迪恩(Jeff Dean)為“姐夫”,是傑夫的諧音,但是稱他為天才並不為過。
安德烈·卡帕西(Andrej Karpathy)則是“全身熱戀”,個人網頁向AI告白“karpathy.ai”“我喜歡在大型資料集上訓練深度神經網路”。
後話是,安德烈·卡帕西(Andrej Karpathy)於2017年離開谷歌去了特斯拉,同年,建軍博士AlexKrizhevsky也離開谷歌。
賈揚清做Caffe專案的時候是博士生,周圍很多AI大神也仍在求學。那時候,大家喜歡在效能上比賽,我的效能比你好,你的效能比我好。所以,算得快,很重要。
“自建”深度學習框架時代,“第一需求”是什麼?答案是效能。
縱觀這個歷史時期,深度學習框架先要讓模型效能受益,其他顧不太上。深度學習框架沒有“大一統”,深度學習框架都很簡單,很小。
這好比新石器時代的河姆渡人蓋房子,蓋得簡單,但也可以為原始人遮些風,擋些雨。那時候,哪有毗鄰名校,樓層視野,小區綠化,周邊配套等講究。
憶往昔,搞深度學習框架這群人雕刻靈魂,也雕刻了歲月,他們不急不躁,對AI技術的促進自不用說,對AI產業潛移默化,讓人敬畏。
深度學習框架當中,Theano比較偏向資料科學家的使用,用Python程式語言,用程式碼生成模式。而Torch則不同,關注靈活的迭代,用Lua程式語言。
Lua這個語言,小而美,它在遊戲領域很受歡迎,允許與C資料結構簡單介面,只可惜後來日漸式微了。有不少人很喜歡,用熟了就繼續在深度學習框架中使用。
俗話說,熟土難離。這個細節反映出,那個時代,不爭搶,不內卷,大家都是怎麼熟悉怎麼來,怎麼順手怎麼來。也反映出,Torch從一開始就是重視易用性理念,而不關心新技術思路的實現。
效能為王的歲月,英偉達公司敏銳參與了趨勢,和搞深度學習框架那幫人常有溝通,互幫互助,帶動大傢伙為深度學習框架貢獻程式碼。
這裡加一個小段子,英偉達的產品線剛剛開始有AI計算的時候,有一個捐贈計劃可以讓賈揚清選兩種GPU。一種僅用於AI計算,不能玩遊戲。另一種,保留了遊戲用途的介面,不僅可以做計算,還可以玩遊戲。當時,賈揚清想也沒想,選了前者。回頭一想,竟然後悔。
(賈揚清打過什麼遊戲呢?又最喜歡什麼遊戲呢?這點,留下個伏筆,文末放送福利。)
cuDNN是英偉達用於深度神經網路的GPU運算元庫。如今,已經是各大品牌的深度學習框架都會呼叫的工具。英偉達先知先覺,谷歌後知後覺。
2014年前後,深度學習框架DistBelief的設計,不太適合深度學習裡的一種新思路,張量(tensor)。所以,谷歌內部也持續有討論的聲音傳出來,新的框架應該怎麼做。沒有人明確說他們正在做的,就叫DistBelief 2.0。
如果要寫新的框架,那應該是怎麼個寫法?這個問題成為谷歌搞深度學習框架的科學家的第一要事。更準確地說,新一套,而不是新一版,邁開大步,換個思路,重新設計。
賈揚清和部分Torch的作者打卡谷歌後,開心地發現,不少老面孔已經在DistBelief團隊裡了,谷歌讓開源深度學習框架作者有機會歡聚一堂。
這時候的谷歌,可謂是,深度學習框架的天下英雄,皆入我營帳之中。於是,谷歌率先發力,一堆石頭打得紛飛,流星對空亂撞,好一番激盪。2015年10月,TensorFlow問世了。
人人都知道谷歌的系統能力獨步天下,但又都想知道,谷歌公司的系統能力到底有多強?
總體說來,TensorFlow的設計非常有啟發性。可以把TensorFlow理解成為谷歌軟體能力的綜合體現,既能看到,眾人拾柴火焰高,開源社群中所能見到的,已有的設計思路,都被很好地用了起來,比如說像計算圖,張量(tenor),它是一個集大成者,同時解決了效能和規模化,把分散式也做起來了。
TensorFlow的問世,讓人懷疑谷歌不是來做產品的,而是來展示實力的。再細測試能力,規模化分散式的能力,都很強,不偏科。
這是一個深度學習框架的里程碑事件,標誌著學術製造(博士生和研究生做框架)的時代,轟然落幕。
那時候參與第一代深度學習框架的人中,有不少搞科研的學生,他們不是師出名門,就是高足弟子,充滿科研熱情。清點一圈,哪個都非等閒之輩。夜幕降臨,深藍色的星空之下,他們是拓荒者,刀耕火種,圍坐篝火。
這時候,谷歌TensorFlow來了,刀耕火種時代的篝火晚會結束,深度學習框架開啟軍團作戰模式,衝鋒號吹響了。
(五)易用和穩定,各登一頂
歲月彌久,夢已七年。
2016年是TensorFlow高速發展的一年,傑夫·迪恩(Jeff Dean)的演講裡,論文引用次數指數級暴漲。
TensorFlow的熱火朝天之中,一個需求像初生嫩芽一樣,從土壤中探出了腦袋,並迅速在開源社群產生集體共鳴。
TensorFlow難學難用,恰逢其時的是,效能講了那麼長的時間,GPU的計算速度也很快了,高速迭代不需要100%的效能,85%就可以了。這時候,人力成本上升為最大的成本。
開發者拼了命地吶喊:框架得易上手!這個吶喊,是在呼籲易用性。此時的需求明擺著,就是易用。
Torch是火把的意思,易用性點燃了深度學習框架PyTorch的火把,搞深度學習框架那幫人驚訝地發現,烽火連三月,易用抵萬金。
這個讓TensorFlow最忠實的使用者認為最不符合邏輯的地方,一定藏著最深刻的邏輯。時來天地皆同力,PyTorch生逢其時,正巧解決了TensorFlow一個超大痛點。
PyTorch起步比TensorFlow晚,拼資源也不佔優勢,谷歌的資源不比市場上任何一家差。創始團隊思前想後,決定直搗黃龍,這條龍就是易用性。俗話說,寧走十步遠,不走一步險,其他特點不是不重要,而是顧不上,PyTorch團隊孤注一擲,把易用性,打穿,打透。
這種打法,逼著PyTorch只靠“易用性”這一拳,打出了四海八荒之力。基礎設施投資是巨大的,PyTorch最初的原因是投入少,唯有這種打法需要較少的資源。
這個選擇,有賭的成分,但是,這一次,PyTorch賭對了。
上手PyTorch的人,都會覺得好用。相信當谷歌TensorFlow內部的人看到,並且試用PyTorch的時候,也會讚歎其易用性。但是,他們肯定還是相信TensorFlow是世界上最好的框架。
2017年前後,人們會發現很多古老的計算機視覺模型是用 Caffe 寫成,很多新研究論文是用 PyTorch 寫的,而更多的模型用TensorFlow寫成。
不同的框架,不同的格式。
從框架A翻譯到框架B,從框架B翻譯到框架C……“翻譯”完,還要寫一堆測試。民怨沸騰了,有關部門得管管。
因此,ONNX(Open Neural Network Exchange)身負重任而來。2017年最後一個月,ONNX的第一個版本釋出,第一版程式碼是賈揚清手寫的,而最早投入ONNX的兩位開發負責人是白俊傑和張振瑞,前者還在賈揚清團隊,後者仍然是PyTorch團隊的核心成員。
賈揚清認為,ONNX的定位不是取代各種框架,而是讓大家做事順暢,ONNX輔助性地來解決這個問題。
臉書公司的PyTorch為什麼成功?因為科研的百花齊放,渴求靈活。
谷歌公司TensorFlow為什麼成功?因為當時,AI正以熊熊大火燎原之勢,席捲工業界。那時那刻,需熔爐鍊鋼之火。需要集團軍作戰,需要工業界不可或缺的穩定性。
成也蕭何,敗也蕭何。TensorFlow是工業級的軟體,學習門檻非常之高,開發者不禁會發出“危乎高哉,蜀道難”的感慨。這背後是計算機系統軟體的穩定性提升,必然伴隨複雜性的攀升。
PyTorch,像小汽車,容易上手,但是,規模化難。
TensorFlow,像高鐵,體量巨大,但是,新手難操作。
易用性和穩定性,這是兩個存在且合理的需求。兩者各翻越過生態的天塹,雙方各爭下了一個山頭。設計深度學習框架永遠不是需求,而是手段。
TensorFlow解決了AI工業化,PyTorch解決了AI科研百花齊放。
很多人認為,最近幾年,深度學習框架這一塊,至少在TensorFlow和PyTorch的競爭中,幾乎塵埃落定。為什麼?因為這兩個需求已經基本解決了。
若故事往細裡說,那麼最初版本的PyTorch是隻專注在易用性上,但是,從2018年的PyTorch 1.0版本開始,強調在保持易用性的基礎上,重視完善工業化和規模化能力。
實際上,PyTorch 1.0版本是賈揚清在臉書公司主導建立。相對應地,TensorFlow從2.0版本開始,也非常強調加入動態圖模式(Eager Execution),來加強易用性。
賈揚清認為,重複建設深度學習框架,好比整條街的咖啡都不太好喝,既不解決咖啡豆的問題,也不解決咖啡機的問題,直接重新開一個咖啡店。
在刀耕火種時代,在“第一代深度學習框架”之中,為什麼會出現Caffe,Torch,Theano等多款深度學習框架,因為探索之處確有需求,實實在在的需求。
在賈揚清看來,深度學習框架的效率分為兩個,第一個是開發者的效率,第二個是計算機軟體系統和執行的效率。
易用性解決的是開發者的效率。那計算機軟體系統和執行的效率呢?
此時,深度學習框架要想做得好,關鍵在於把“很底層很底層”的技術做高效,而不是重新做一個深度學習框架。而這部分的工作很硬核,加料一小段科普。計算圖,也可以理解為提前設計好的路線圖。
簡單說,深度學習框架訓練模型的時候,有這樣一件事情需要在深度學習框架裡完成,且考驗效率。出發時得一步一步來,喂資料,順著路,直到拿到一個輸出,完工。
這裡的“路”就是,訓練模型的路。
到底該怎麼走?先去五當山,還是光明頂?
計算圖裡的“圖”,分為靜態圖和動態圖。靜態圖一早就定好這個過程,不讓改(深度學習框架也會把過程做個最佳化,計算起來效率高)。動態圖則不然,每次每批資料出發之前,允許路線圖變化。
深度學習框架裡的一招鮮,不能吃遍天下。
很多人都在問,有多款深度學習框架可選,這一款有什麼不同價值?如今,僅靠一種圖的形態已經沒法解決問題了,“低垂的果實”已經沒有了,需要靈活運用,巧妙出手,才能走出新路。
如今的天下,是人人都有深度學習框架用的天下。
下一步的競爭,是到底算得好不好,快不快,準不準。搞深度學習框架那幫人,就各有各的絕招了。
(六)下一步,競爭什麼?
如今,深度學習框架的核心難點,並不是沒有框架可用。
賈揚清認為,如今的深度學習框架的核心難點有兩個:往下如何相容硬體,往上如何實現更好的分散式開發。
相容硬體這件事,和編譯器有關。有句俗話是,男兒有淚不輕彈,只是未見編譯器。一位老資格的AI演算法工程師曾回憶,大學編譯器課上,他哭了,是被編譯器給氣哭的,因為太難了。所以,一生躲著編譯器走。惹不起,還躲不起?
果然,不出意外地出了意外。如果不是親眼所見,他是萬萬不敢相信。當AI模型“下地幹活”,編譯器的糟心事兒,又回來了。
哭有啥用?BM-13“喀秋莎”多管火箭炮已經把炸藥傾瀉到編譯器的戰場了。戰爭不相信眼淚,深度學習框架在拼“誰可以更好地編譯和最佳化”。
一般來說,深度學習框架開發者只想著為少數伺服器級硬體(GPU)提供支援,而硬體供應商則更願為部分框架開發自己的庫。兩邊自顧自高築牆,把周圍的戰壕土都用光了,於是,低頭一看,竟然挖出一個大坑來。
將AI模型部署到新硬體,需要大量的手動工作,如此一來,誰來填坑?說到底還是深度學習框架。這樣問題就總結出了,深度學習框架,往下如何相容硬體?
只能讓深度學習框架和硬體平臺對接好,而不是對每種新硬體型別和裝置都開發新的編譯器和庫。
說到編譯器,也有很多種,有圖學習的編譯器,有資料庫的編譯器。但深度學習編譯器一來,就可以將AI編譯器單獨分一類了。與傳統編譯器類似,深度學習編譯器也採用分層設計,包括前端,中間表達(IR),後端。
其中,編譯器和中間表達,就像異父異母的兩個親兄弟。一般來說,編譯器的最佳化是把中間表達部分裡一些可以跑得更快的地方,改動一下。
賈揚清心中的未來,可能是,AI編譯器可以為執行的任何硬體生成機器原生程式碼,無需擔心中間表達。用深度學習框架寫的模型更自動化,模型跑得更快。這樣,AI產業有機會整體提效。賈揚清說,網際網路大廠的AI工程體系還在整合。AI的落地情況,好比1980年代的“現代化”,樓上樓下,電燈電話。
搞深度學習框架那幫人一個崗位飾演多個角色,從演算法研究員,軟體工程師,資料工程師,應用工程師,到系統統工程師。千難,萬難,自己選的路,跪著也要走完。
講一個真實的案例,一位多金且懂行的客戶說,這裡有一個圖片識別模型,想跑得快一點。
本質上,事到如今,AI還不是超級APP。
這裡有兩層含義:
一、不是一個單點產品就能大包大攬AI所有能力,而是一系列能力的組合;
二、AI非常強烈地需要標準軟體+定製化服務。
遠見者穩進,穩健者遠行,賈揚清為什麼釋出阿里靈傑,釋出阿里整體大資料+AI能力?
回望八年前,一個工程師具備訓練影象識別模型的能力,就已經是AI開發者裡的高手。
如今,已經是將AI的演算法和資料、場景結合起來,去構建一個完整的解決方案,解決各行各業當中的實際問題。
賈揚清認為,從開發的角度,從寫下第一行程式碼,到完成第一個AI模型,需要多久?
從應用的角度,從抓住一個需求,到AI產品原型上線,需要多久?
對於阿里靈傑來說,從底座,到上層應用,整體都能讓開發者按需取用,開箱即用。
這樣,才有可能在雲上畫出人工智慧第二增長曲線。
如今,產業正在經歷大資料和AI一體化,需要經久耐用的底座。
在阿里雲的底座裡,阿里雲機器學習平臺PAI出手就是一(流)條(水)龍(線)服務,管資源、管任務。大規模分散式訓練框架Whale,可以理解為是PAI裡的一個軟體包。資料倉庫MaxCompute支援大型分散式資料計算。DataWorks提供一站式資料開發、管理、治理平臺。
學生時代,賈揚清的電腦顯示卡效能不強,玩3D遊戲《荒野大鏢客》會把遊戲畫面設定到最低,以免畫質感人。時間一長,“隨手最低”習慣成自然。
工作後,賈揚清如願以償,換上最強顯示卡。初初上手,仿若從前,突然,他想起顯示卡不再是從前的顯示卡。快,快,快把遊戲畫面設定調成最高,享受一下。那一刻,賈揚清看到了一個完全不一樣的遊戲。
從1956年的達特矛斯會議算起,2021年的AI已走過65個春秋,時間好不經用,抬頭已過甲子。搞深度學習框架的那群人,說到底是做基礎設施的人,他們相信,會有一天,AI生產工業化一片坦蕩,大資料和大模型在流水線上高速衝浪……
那時候,人們將看到一個完全不一樣的AI。
(全文結束)
ONE MORE THING
(文末彩蛋)
(更多閱讀)
“親愛的資料”,深度學習框架系列:
1.搞深度學習框架的那幫人,不是瘋子,就是騙子