- 人閱讀
- 2020-03-27 14:27:14
來(lái)源:CSDN
- 相關(guān)關(guān)鍵詞
1956年,美國(guó)的達(dá)特茅斯會(huì)議成為人工智能開(kāi)啟的標(biāo)志性事件。同年,中國(guó)第一批自主制造的汽車(chē)——解放牌汽車(chē)在長(zhǎng)春第一汽車(chē)廠出廠,才結(jié)束了我國(guó)不能生產(chǎn)汽車(chē)的歷史。2020年,中國(guó)汽車(chē)產(chǎn)銷(xiāo)量已經(jīng)連續(xù)多年蟬聯(lián)全球第一。與此同時(shí),人工智能的技術(shù)研究與應(yīng)用在中國(guó)已經(jīng)遍地開(kāi)花,并涌現(xiàn)出了包括曠視、商湯、依圖、寒武紀(jì)等在內(nèi)的一大批具有代表性的AI初創(chuàng)公司。而深度學(xué)習(xí)框架作為人工智能時(shí)代的操作系統(tǒng),一直被 Google 的 TensorFlow 和 Facebook 的 PyTorch所統(tǒng)治,因此深度學(xué)習(xí)框架的國(guó)產(chǎn)化替代也成為了政產(chǎn)學(xué)研界關(guān)注的焦點(diǎn)。近日,清華開(kāi)源的深度學(xué)習(xí)框架 Jittor(計(jì)圖) 引起了廣泛關(guān)注,支撐曠視諸多業(yè)務(wù)和戰(zhàn)績(jī)的深度學(xué)習(xí)框架 MegEngine(天元) 也將在近日開(kāi)源。據(jù)悉,華為也將開(kāi)源自己的深度學(xué)習(xí)框架。加上百度的 PaddlePaddle(飛槳)等,國(guó)產(chǎn)深度學(xué)習(xí)框架的發(fā)展迎來(lái)了高光時(shí)刻。
從1.0到3.0:由靜到動(dòng),動(dòng)靜結(jié)合,深度學(xué)習(xí)框架進(jìn)化史
深度學(xué)習(xí)框架的技術(shù)發(fā)展史可以用一句話(huà)來(lái)形容:由靜到動(dòng)。依據(jù)采用動(dòng)態(tài)計(jì)算或是靜態(tài)計(jì)算的不同,可以將這些眾多的深度學(xué)習(xí)框架劃分成兩大陣營(yíng):其中靜態(tài)圖機(jī)制以 TensorFlow 1.0 為代表,動(dòng)態(tài)圖機(jī)制以 PyTorch 為代表。
圖片已獲授權(quán)
靜態(tài)計(jì)算則意味著程序在編譯執(zhí)行時(shí)將先生成神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),然后再執(zhí)行相應(yīng)操作,它是通過(guò)先定義后運(yùn)行的方式,之后再次運(yùn)行的時(shí)候就不再需要重新構(gòu)建計(jì)算圖,所以速度會(huì)比動(dòng)態(tài)圖更快。動(dòng)態(tài)計(jì)算意味著程序?qū)凑瘴覀兙帉?xiě)命令的順序進(jìn)行執(zhí)行。這種機(jī)制將使得調(diào)試更加容易,并且也使得我們將大腦中的想法轉(zhuǎn)化為實(shí)際代碼變得更加容易。通常來(lái)說(shuō),靜態(tài)圖機(jī)制能夠?qū)φw性做編譯優(yōu)化,更有利于性能的提升,占用資源少且易于部署,符合工業(yè)部署應(yīng)用的需求;而動(dòng)態(tài)圖則非常便于用戶(hù)對(duì)程序進(jìn)行調(diào)試,簡(jiǎn)單靈活且易于上手,符合科研探索的需求。由于動(dòng)態(tài)圖的靈活性、易用性展現(xiàn)出對(duì)科研人員極大的吸引力,更多框架也開(kāi)始支持動(dòng)態(tài)圖,比如 TensorFlow 2.0,清華的 Jittor。不過(guò),訓(xùn)練效率和規(guī)?;冀K是工業(yè)界最重要的問(wèn)題,動(dòng)態(tài)圖下的性能優(yōu)化問(wèn)題也需要解決。因此,各框架取長(zhǎng)補(bǔ)短趨同性比較明顯,前端易用性、計(jì)算高效性、框架穩(wěn)定性成為持續(xù)優(yōu)化方向。而這一趨勢(shì)也意味著,動(dòng)靜結(jié)合正在成為 3.0 時(shí)代的解決方案。以曠視即將開(kāi)源的MegEngine 為例,其運(yùn)行時(shí)管理層包括兩個(gè)模塊,分別是內(nèi)核調(diào)度和內(nèi)存管理和優(yōu)化兩大模塊。在內(nèi)存管理和優(yōu)化模塊中,MegEngine 采用了動(dòng)態(tài)、靜態(tài)內(nèi)存分配并存的方式,因此可同時(shí)支持動(dòng)態(tài)圖和靜態(tài)圖模式。因此,MegEngine 整合了動(dòng)態(tài)圖與靜態(tài)圖各自的優(yōu)勢(shì),在充分利用動(dòng)態(tài)圖模型訓(xùn)練優(yōu)勢(shì)時(shí),通過(guò)動(dòng)靜態(tài)一鍵轉(zhuǎn)換功能,以靜態(tài)圖的形式完成生產(chǎn)和部署;此外,MegEngine 還支持動(dòng)靜態(tài)的混合編程,靈活性更強(qiáng)。曠視研究人員在接受采訪(fǎng)時(shí)稱(chēng),即便是新同學(xué)不到1個(gè)月就可以快速上手。
從研究到部署,深度學(xué)習(xí)框架大比拼
TensorFlow:Google 出品,2015 年開(kāi)源,是目前主流的深度學(xué)習(xí)框架之一。開(kāi)發(fā)者群體龐大,應(yīng)用成熟,在部署效率和異構(gòu)設(shè)備支持上表現(xiàn)突出。然而自 TensorFlow 2.0 推出之后,由 API 混亂,眾多 issue 得不到解決等問(wèn)題引起的討論,其霸主地位正受到競(jìng)爭(zhēng)者的挑戰(zhàn)。Keras:Google 工程師 Fran?ois Chollet 作品,是一個(gè)由Python編寫(xiě)的開(kāi)源人工神經(jīng)網(wǎng)絡(luò)庫(kù),對(duì)新手友好。自2017年起,Keras得到了Tensorflow團(tuán)隊(duì)的支持,其大部分組件被整合至Tensorflow的Python API中。在2018年Tensorflow 2.0.0公開(kāi)后,Keras被正式確立為T(mén)ensorflow 高階API,即tf.keras 。MxNet:AWS AI 首席科學(xué)家李沐作品,支持動(dòng)態(tài)圖,支持Python,R,Scala和C++等語(yǔ)言,而且有Gluon系列工具。不過(guò)相比 TensorFlow 和 PyTorch,開(kāi)發(fā)者用戶(hù)明顯偏少,更適合自定義需求高的公司和研究人員。PyTorch:Facebook 出品,開(kāi)發(fā)社區(qū)非?;钴S,也很善于聽(tīng)取開(kāi)發(fā)者的意見(jiàn)。由于對(duì)動(dòng)態(tài)圖的支持, PyTorch 的靈活性相比 TensorFlow 大大提升,特別是用于快速驗(yàn)證和復(fù)算法復(fù)現(xiàn),因此備受學(xué)術(shù)界的青睞。在工業(yè)界,由于需要考慮兼容和部署等問(wèn)題,PyTorch 也在原有的基礎(chǔ)上整合了為生產(chǎn)環(huán)境設(shè)計(jì)的 Caffe2 ,不過(guò)其實(shí)際效果還有待進(jìn)一步驗(yàn)證。CNTK:微軟出品,所有API均基于C++設(shè)計(jì),因此在速度和可用性上很好。用戶(hù)基數(shù)小,學(xué)習(xí)曲線(xiàn)較陡,被吐槽其主要使用方式是 import keras,由于未來(lái) Keras 將不再把重心放在支持多平臺(tái)上,預(yù)計(jì) CNTK 會(huì)受到影響。PaddlePaddle(飛槳):百度出品,2016年開(kāi)源。目前已經(jīng)升級(jí)為全面的深度學(xué)習(xí)開(kāi)發(fā)套件,除了核心框架,還開(kāi)放了VisualDL、PARL、AutoDL、EasyDL、AI Studio等一整套的深度學(xué)習(xí)工具組件和服務(wù)平臺(tái)。除了以上的深度學(xué)習(xí)框架之外,即將開(kāi)源的MegEngine也值得關(guān)注。MegEngine 架構(gòu)上具體分為計(jì)算接口、圖表示、優(yōu)化與編譯、運(yùn)行時(shí)管理和計(jì)算內(nèi)核五層。
圖片已獲授權(quán)
- 在頂層的計(jì)算接口上,MegEngine配置了C++和Python接口,解決框架學(xué)習(xí)接口各異,模型難以復(fù)現(xiàn)的問(wèn)題
- 在圖表示層,MegEngine內(nèi)置動(dòng)靜態(tài)轉(zhuǎn)換功能,支持開(kāi)發(fā)者混合使用動(dòng)態(tài)圖和靜態(tài)圖模式進(jìn)行編程。
- 在優(yōu)化與編譯層,MegEngine構(gòu)建了核心計(jì)算圖支持用戶(hù)高效交互,以進(jìn)一步優(yōu)化和編譯API表達(dá)的計(jì)算,具體包括自動(dòng)求導(dǎo)器、圖優(yōu)化和圖編譯功能。
- 在運(yùn)行時(shí)設(shè)備管理中, MegEngine 配置計(jì)算調(diào)度和內(nèi)存管理兩個(gè)模塊,通過(guò)計(jì)算調(diào)度模塊將設(shè)備抽象為執(zhí)行流,并通過(guò)調(diào)度器實(shí)現(xiàn)智能調(diào)度,在內(nèi)存優(yōu)化上,天元同時(shí)采用了動(dòng)態(tài)、靜態(tài)內(nèi)存分配并存的方式,支持自動(dòng)亞線(xiàn)性?xún)?nèi)存優(yōu)化。
- MegEngine底層擁有一個(gè)基于異構(gòu)架構(gòu),內(nèi)置高效計(jì)算機(jī)視覺(jué)算子的計(jì)算內(nèi)核,具備X86,CUDA等主流硬件設(shè)備智能適配能力。此外,MegEngine還配備高性能異構(gòu)通信庫(kù),支持用戶(hù)在不同機(jī)器和計(jì)算卡之間進(jìn)行高性能的通信,以實(shí)現(xiàn)多機(jī)多卡、大規(guī)模、分布式的算法訓(xùn)練。
雖然目前 TensorFlow 和 PyTorch 等深度學(xué)習(xí)框架備受業(yè)界關(guān)注,但是中國(guó)AI應(yīng)用場(chǎng)景非常多樣,很多細(xì)分的需求也待進(jìn)一步滿(mǎn)足,很難說(shuō)能有一家獨(dú)大,因此未來(lái)更貼近中國(guó)用戶(hù)需求的國(guó)產(chǎn)深度學(xué)習(xí)框架未來(lái)也有很大的機(jī)會(huì)。
縱觀深度學(xué)習(xí)框架的發(fā)展,都在朝著降低開(kāi)發(fā)者的門(mén)檻努力。但是由于各家框架的特性不一樣,而且都在不斷改進(jìn),因此開(kāi)發(fā)者需要根據(jù)自己或者公司的切實(shí)需求來(lái)選擇框架,才能做到事半功倍。首先,要易于上手,學(xué)習(xí)曲線(xiàn)不能太過(guò)陡峭;其次,要能真正幫助模型的部署和落地。
由于曠視的 MegEngine 具備 Pythonic 的 API ,并且支持PyTorch Module功能,可以直接導(dǎo)入模型,因此上手更快,學(xué)習(xí)成本和遷移成本都更低。此外,MegEngine 也整合了動(dòng)態(tài)圖與靜態(tài)圖各自的優(yōu)勢(shì),更具靈活性。
MegEngine 還支持訓(xùn)練推理一體化,既可支持研究員進(jìn)行算法訓(xùn)練,同時(shí)訓(xùn)練得到的模型和產(chǎn)物是可以直接進(jìn)行用于產(chǎn)品的推理、封裝,并且可以實(shí)現(xiàn)速度和精度的無(wú)損遷移,并且在部署時(shí)還可以自動(dòng)刪除冗余代碼,實(shí)現(xiàn)模型自動(dòng)優(yōu)化。而且 MegEngine 也提供原語(yǔ)級(jí)別的支持,方便用戶(hù)進(jìn)行模型并行設(shè)置和執(zhí)行。最終,模型并行可以和數(shù)據(jù)并行模式混合使用。有了深度學(xué)習(xí)框架天生對(duì)分布式計(jì)算的支持,MegEngine 在訓(xùn)練和推理效率上達(dá)到了很高的水平。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),MegEngine 或許是一個(gè)不錯(cuò)的嘗試。
實(shí)際上,MegEngine 并不是曠視最新研發(fā)的產(chǎn)物,而是誕生于 2014 年,并經(jīng)受住了諸多業(yè)務(wù)的考驗(yàn)。2013 年,由于 Theano 等早期開(kāi)源框架無(wú)法滿(mǎn)足「煉丹」效率的需求。2014 年初,曠視研究院 3 名實(shí)習(xí)生從第一行代碼寫(xiě)起,不到半年的時(shí)間,正式誕生了曠視自研的初版深度學(xué)習(xí)框架——MegEngine。2015 年年中,曠視完成了自研框架與公司內(nèi)部所有業(yè)務(wù)的接軌,公司業(yè)務(wù)線(xiàn)上的模型全部換成了自研框架訓(xùn)練出來(lái)的版本。從自用走向開(kāi)源,曠視意圖傳遞AI的普世價(jià)值。一直以來(lái),人工智能都是一個(gè)具有很強(qiáng)的馬太效應(yīng)的產(chǎn)業(yè),繁榮背后其實(shí)是靠互聯(lián)網(wǎng)巨頭和曠視、商湯、依圖、寒武紀(jì)等明星AI企業(yè)在支撐,而明星AI企業(yè)背后通常也是靠個(gè)別或一小群天才在支撐。少數(shù)的一流天才支撐著少數(shù)的主流AI企業(yè),且呈現(xiàn)強(qiáng)者恒強(qiáng)的趨勢(shì)。另一方面,傳統(tǒng)廠商和中小企業(yè)卻對(duì)AI是望梅止渴,研發(fā)成本高、籠絡(luò)不到AI人才,也沒(méi)有大舉投入算法研發(fā)的決心。因此,為了推動(dòng)AI技術(shù)加速落地,2019 年曠視開(kāi)始籌備將其 Brain++ 平臺(tái)最核心的深度學(xué)習(xí)框架開(kāi)源,還特意為 MegEngine 起了一個(gè)中文名字——天元,讓更多的開(kāi)發(fā)者和企業(yè)用戶(hù)都能使用 AI “源力”,降本增效。3月25日,曠視將通過(guò)線(xiàn)上直播開(kāi)源其深度學(xué)習(xí)框架 MegEngine,進(jìn)一步展現(xiàn)框架更多的技術(shù)細(xì)節(jié)和效果,曠視核心深度學(xué)習(xí)框架的開(kāi)源有望讓AI成為普惠性工具,助推AI從1.0邁向2.0時(shí)代。
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。