中國人工智能AI框架自主研發

中國人工智能AI框架自主研發

中國AI界爭相構建AI開源框架的背後,技術和業務層面的考量因素當然重要,但也不應忽視國家層面的政策支持。對於AI基礎設施的建設,中國政府在《新一代人工智能發展規劃》等關於AI頂層規劃的政策中都着重提及,除了加大應用層技術落地,更希望業界和學界深入AI底層技術研發。近兩年,基礎技術的“卡脖子”話題成爲近兩年中國科技界探討的熱點,擔心中國AI的發展會像芯片發展那樣遭遇空中樓閣的困境。AI專家也在四處佈道“做人工智能必須要做開源,中國要想發展好新一代的人工智能,必須要有高效和風險可控的開源開放平臺”的觀點。近期,由於疫情衝擊經濟,在政府高層推動下,市場更是掀起一股“新基建”的熱潮,其中以5G、大數據中心、人工智能和工業互聯網組成的數字化基礎設施備受關注。對有雄心發展AI的企業或者國家來說,通過自主研發來掌握AI底層技術無疑是一項重大戰略。

中國目前深度學習研究和應用主要依賴於國外平臺,的確面臨着卡脖子的風險,所以一些國內的IT企業也推出了自己的平臺。中國應該在人工智能生態的全產業鏈上佔有一席之地。除了計算框架仍然存在着大量亟需優化解決的問題,華爲做MindSpore的另一大緣由是技術戰背景。必須要有自主可控的全場景的計算框架。計圖、天元、MindSpore的接連開源或許會給中國開發者做硬核開源項目打一劑強心針。中國開發者對開源框架的敬畏之心一直太強,不認爲中國團隊能做一套開源框架,但現在對這些開源框架有足夠認識後,再造一個類似Pytorch技術路線的框架難度也不會很大。今年應該是國內開源AI框架比較熱鬧的一年,一流科技的OneFlow框架也將在不久後開源,對國內技術框架的競爭力充滿信心,中國AI框架的發展也代表國內從應用驅動向更內核的技術研究進發了。無論如何,計圖、天元、MindSpore點燃了2020年國產AI框架開源的星星之火,至於未來的影響力是否燎原,是否能真正與TensorFlow、PyTorch一較高低,投票權在每一位開發者的手中。

PyTorch本質上是Numpy的替代者,而且支持GPU、帶有高級功能,可以用來搭建和訓練深度神經網絡。如果你熟悉Numpy、Python以及常見的深度學習概念(卷積層、循環層、SGD等),會非常容易上手PyTorch。 而TensorFlow可以看成是一個嵌入Python的編程.。

在AI框架領域,本來TensorFlow看上去已經一統天下了,然後PyTorch突然來一個動態圖好像就翻身了,其AI框架還有沒有機會?後續最重要的技術創新可能是什麼?

模型上還是有很多可以突破的地方,自己做結構化數據,覺得這個方向很新穎,這帶來從上往下走,從模型開始到底下都有很多的變化,所以還是前瞻性比較多。如果說看得很近,覺得結構性的東西會有突破,以前的很多step可能都不見得更加泛化。

舉個例子,假如bert裏面大家知道結構是什麼樣,所有的Token都連在一起,是個全連接的圖,是圖計算的一個特例。還有把這一個有結構的和沒有結構的這個stack融合在一起。

如果讓看有什麼重要問題,覺得不在平臺,原動力還是在模型、在數學上面,這也是詬病現在所有深度學習框架的一個通病,以爲學習了Python、學習了某一種框架就懂了深度學習,這其實是非常差的,最後的動力在數學。也正是因爲這個原因,在做另外一個框架,現在還不能說。

這個領域是由數學模型和算法驅動的,下面這些軟件應該去支持這些新的模型和算法的東西。

側重於方法和模型上更重要,這個觀點也是對的。但是框架問題,想說爲什麼框架重要,怎麼能在框架上有所超越,這是今天討論的要點。

爲什麼做框架?深度學習做科學工程衝擊太大了,包括現在圖形學,MIT有個博士論文獲得了最佳博士論文獎,就是做可微圖形學,在加強學習框架思路下,傳統學科都被重新定義、重新思考,這是一個激動人心的時代,一切都在變革。這種時候框架的重要性是毫無疑問的,如果不用框架,從頭什麼都自己寫,這是不現實的。

認爲過幾年之後,這些企業的工程師都得重新學習,因爲現在這些學生編程的東西跟10年前完全不一樣了,變化是非常大的。所以框架的重要性是非常值得關注的,這是一個。

第二個,如果沒有自己的框架,這顯然是有很大問題的,包括EDA軟件的問題等等,這是不可思議的。爲什麼中國這麼多企業想做框架?華爲不做不行,美國說不能用了,那就不行了。曠視科技做得這麼好,如果沒有自己的天元,說不讓用TensorFlow了,那大樓的底柱就塌了,所以這個是必須要做的。但怎樣超越是很難的。

覺得要超越,技術上要創新,如果重複(造輪子)的話可以解決“卡脖子”問題,但是無法超越,要想超越,必須進行技術創新。

框架最本質是計算圖的問題,因爲是數據結構,能夠把定義好。計算圖這個事情,利用算子融合把計算圖整合起來是個機會,不是唯一的機會,各位嘉賓談的很多觀點都非常好,咱現在中國國內是百家爭鳴,希望有些嘗試和努力能夠成功、能夠超越。中國的科技創新機會的窗口期很小,PyTorch已經聯繫聊過很多技術細節,下一代框架就會用統一計算圖,因爲都是開源的,也能看得見,所以機會很小。

共同努力把框架這個事情推進一步,不讓成爲中國人工智能發展的短板。

主要新技術是計算圖相關的優化技術。有一種說法是大學要不要做這種複雜的系統軟件?因爲維護不了。但經常反對這種觀點,就經常舉伯克利的例子,做了好幾個系統軟件都非常成功。大學裏面有非常多天才程序員,而系統軟件有個特點是少數天才可以超過很多中等水平的人,所以大學做一些技術上的探索是完全有可能的。當然,後續真正的產業化和長期維護是另外一個問題,但是大學做這種基礎性軟件的探索是非常好的。

雖然一直在討論框架技術,但是覺得生態反而是應該更加要關注的一點。所有的框架都在進步,而且投入比加起來還要大,這樣的話就給能夠做的比較好的概率就很低了。

比如剛纔查了一下最近框架的下載量,最近7天TensorFlow的下載量是250萬次,然後還查了一下其框架,在開這個會議的這段時間,TensorFlow的下載量已經遠超過這麼多框架歷史以來的下載量,所以差距在這兒。

應該更多探討一下生態該怎麼建設,可以看到TensorFlow和PyTorch雖然看起來是兩個公司,但其實後面的合作是挺多的,比如PyTorch的可視化也用了TensorFlow的。今天有這麼多企業、大學在一起,但是很少見到國內兩個不同的企業或者不同的學校之間會有一些合作的例子。

在編程框架的接下來可以創新或者值得突破的地方,個人覺得會有兩點。第一點是從第一代的caffee,到TensorFlow、PyTorch,更靠近真正的編程語言,正好這個編程語言選中了Python,但是在表達上越來越靠近圖靈完備的編程語言。從前年開始,Keras開始更流行起來,也有去討論比如PyTorch跟Keras、TensorFlow之間的區別,Keras的很大的優勢是提供一模一樣的API,只是底下實現到TPU或者GPU,在表達能力上是一個更純粹的Python的表達能力。

現在深度學習研究裏的一個問題是模型學習能力比較低效,大量數據進去,出來的學習能力近幾年遇到一些瓶頸,模型在逐漸變大。如果接下來想在這個方向有更大突破,在框架上不能支持更靈活表達能力的話,會阻礙AI在這個領域的發展。

比如像TensorFlow之前有一個工作是swift,嘗試用swift做成一個完全defensible的語言,PyTorch現在還是有些侷限,可以求導的只是在tensor上的操作,更原始的一些Python沒有表達能力。框架在接下來幾年如果能夠把這個做好,是一個更能吸引用戶的點。

第二,覺得從research到production的過渡,框架如何在這上幫助用戶更好的過渡,也是非常重要的。從生態上來說,從研究到落地,一個商業模式向盈利,然後反哺商業上去推動研究,這個過程是很重要的。

接下來框架上比較重要的兩個點,一個是表達能力更趨向於完完整整可導的語言,第二個是從研究到落地怎麼能更快速。

第一個點從技術上是比較清楚的,第二個點不是特別理解,更多是流水線的問題?還是框架內部問題?

這是比較複雜的問題,一個是從框架層面如何做到跟現有的生產系統更好的整合,這是第一點。第二點,光從框架本身來說,比如像PyTorch有做這樣的工作,直接解析Python代碼,然後到一個圖表示,這是其中一小步,可以看出來這個東西目前還沒有完全做到用戶無痛的轉換,有很大的發展空間,可以被不斷完善。

另外一點,在設計上,無論是框架還是系統,落地對不同公司不同案例是完全不一樣的。比如之前在Facebook,工作負載是非常大的,可能只要優化1%,也能省很多臺機器。但是對於更小規模的用量或者用戶來說,所謂的部署是有一個模型,現在已經訓練好了要上線,用量大部分可能達不到Facebook、谷歌或者阿里那麼大,對來說想更快上線,而不是花一個月時間再優化這個pipeline。所以今天先上線,但是假設一個月內有沒有機會朝性能更加高的方向去過渡,這個體驗也是很重要的。

一個新框架,要想脫穎而出的話是一定要有創新,框架研發裏面人才非常非常關鍵,做過研究,知道創新通常不是堆錢、堆人就能必然發生的,有的時候是有偶然性的,還有一些是可能發生在少數人身上。

所以對於國內框架來說,很多人蔘與、很多廠家參與是一個好事,從多個角度來做,成功率就會提高。

具體到技術上有什麼可做的,認爲在效率上有很多可做的點。一個是在宏觀層面,怎麼解決網絡牆的問題。還有一個是在微觀層面,現在有很多學者、公司在研究自動代碼生成,用數學的邏輯描述這個運算是什麼,然後能自動生成GPU或CPU上最快的,這個很活躍,覺得這是一個非常挑戰的問題。

在這方面肯定不是專家。先從產品角度來說,產品吸引用戶的話往往要有些亮點,一個框架一定程度上是個產品,那用戶或者客戶是誰呢?

最大用戶是開發者,開發者追求的是易用,尤其在訓練方面,易用框架的生態會建立得非常快。如果做到易用,需要做到哪些東西?對前沿算法的新結構支持得比較好,比如圖神經網絡或者新的骨幹結構剛出來,框架就有人去做了。性能反而在前期對開發者來說不是那麼在乎,因爲大家在訓練上更關注開發的效率,更少關注的是硬件成本或者其。

但對推理部署來說,在實際的生產業務系統裏,大家追求的是性能。因爲推理業務尤其對一個大企業來說,部署量非常大的,假如能夠把性能做好,做5個百分點能節省5%的硬件成本,這其實是非常大的收益。

大家對於訓練和推理這兩個維度的關注是不一樣的,未來訓練和推理會慢慢的分開,比如訓練側重於通用,推理眼前類似融合到TensorRP或者其東西里面。並且從技術上來說,訓練往往是逐層的,推理往往要做各種層融合優化,所以覺得訓練和推理可能會有兩個框架,只要對於做產品來說,把某一方面做得很好,就會有人用。

但這裏有一個問題,生態的起源往往是起源於訓練,所以怎麼把訓練好的模型在推理框架上更好的執行,可能中間會有一些新的挑戰。

另外,覺得在終端現在有不一樣的需求,大家從創業角度,在終端做個專門的框架或者引擎會有價值,因爲終端的產品和形態差異化特別大,導致現在終端的人在開發AI應用是苦不堪言。

理解無論是訓練、推理還是終端,會有分出來的需求,這些需求導致往下發展的話會有分支,分支完了以後對開發者是一個很友好的事,不知道未來會不會“天下合久必分,分久必合”,反正對做芯片的人來說,是希望這些框架都合在一起,不需要支持那麼多框架。

想法是最終迴歸到價值上來。因爲曠視有自己的技術信仰、價值務實,最終還要回到做框架,做技術創新,這是個功能,還是真正給用戶帶來什麼?

用戶有兩類,一類是研究者,一類是研發者,在曠視公司能夠知道深度學習從產品到落地有多少環節、多少困難,做這個框架是爲了自己更好,希望經驗幫助更多人,也是出於這樣的觀點。

如果從現狀來看,深度學習框架在價值維度上有三點:

第一點,希望更快,性能肯定是大家非常關注的一點,性能意味着成本,意味着更好更大的模型,意味着更多、更好的商業機會。

第二點是靈活與易用,希望支持更多模型,支持更多範式,把更新技術嘗試引進,而不是一個僵化的體系。

第三點,更規範。現在看到深度學習硬件設施雨後春筍般的蹦出來,包括寒武紀等等都在做一些事情,這裏面蘊涵着大量的機會,在超越摩爾定律的狀況下做事情,爲什麼不更廣泛的使用,使得技術在各種芯片上跑起來,讓大家都有機會成長起來。

從現狀來看,這三點是衡量當前價值的點。覺得在這方面,不管是大框架、小框架,是大公司還是小公司,誰能提供value,誰就能夠有機會,而不是一個壟斷的行業。

對於未來的看法,充滿不確定性,現在回過頭來看產業基礎,並不是那麼紮實。比如深度網絡,會對框架有怎樣的需求和衝擊,這是不知道的,現在的框架並沒有很好的利用這樣的變化。

要關心大的生態環境,是堅定的人類命運共同體的擁護者,堅決反對自己造原則。大家要從大局去考慮,然後選擇好的點去往前推。假設都做開源的話,到最後是沒有差異的。雖然是開源,但還是可以服務用戶的,所以保護生態系統,保持開放性、前瞻性和活力是最要緊的。從小的點來看,作爲動力去打磨、去造輪子,因爲自己走過這個路,不覺得是非常好的路線。

對Keras看法是怎樣?本身挺有威脅的,但作爲真正能用的框架還是差很多。

非常同意Keras是一個innovation,個人也非常讚賞創新。提到框架現在是在互相學習、互相進步的過程。有些用戶爲什麼喜歡Keras,比如有人提到一點是能自動bach,Keras是現存框架做得最完善的。PyTorch也會加入這個功能,最早PyTorch有嘗試過,只不過沒有意識到這個功能對用戶很重要,對Pytorch也是很好的。

提到Keras作爲真正能用的框架還是差很多。跟Keras團隊也有交流,想法是PyTorch在dataload這塊已經做得很好,Pytorch也有很好的交互,沒必要再做這個事情。到Keras官網去看,會教如何用PyTorch的dataload,然後用Keras定義,訓練完怎麼交互,框架間這種融合能夠工作迸發出新的創新。

對深度學習編譯器如TVM、XLA的看法,以及與框架的區別和聯繫?

現在這些深度學習編譯器,TVM確實做得非常不錯,讓更多框架能夠運用到更多硬件上,華爲的框架也有相當大部分代碼是基於TVM開發的,TVM作爲深度學習編譯器是非常不錯的,XLA是用於TensorFlow的編譯器,PyTorch好像也在對XLA進行移植和支持,這兩個深度編譯器都挺不錯的,就看應用的硬件是什麼,現在回傳的芯片都可以跑在TVM上,如果運行Google的TUP的話可能在XLA上性能比較好一點。

編譯器與框架面向的對象也是有區別的,比如深度學習編譯器更多用戶是開發框架的,對硬件有一定的瞭解,但用TensorFlow的更多是深度學習的用戶,從使用者角度是判斷編譯器和深度學習框架的最大區別。

早期編譯器都是藏在框架項目的,但現在編譯器本身的工作越來越完整了,就是基於編譯器,也做了自動求導、子圖優化,也都有Python接口,所以現在編譯器和框架之間界限越來越模糊了,比如TVM,幾乎就是一個新的框架了,所以現在嚴格區分框架和編譯器好像比較困難,幾乎是一回事了。

以前比較有名的框架慢慢被大公司收購,要麼消失了,是不是小公司不適合搞開源框架?

感覺在開源社區裏能成長起來,開源社區是非常公正公平的,是英雄不問出處。看到大公司做事情也不一定成功,同時小團隊做事也有可能成功。對這點,持不同看法,只要創新性夠,產品競爭力夠,被開發者認可還是有機會的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章