「深度學(xué)習(xí),簡(jiǎn)單開發(fā)」,剛剛開源的天元(MegEngine)將為開發(fā)者們帶來全新的深度學(xué)習(xí)開發(fā)體驗(yàn)。
又一個(gè)國(guó)產(chǎn)深度學(xué)習(xí)框架開源了。3 月 25 日,曠視科技在北京發(fā)布了新一代人工智能生產(chǎn)平臺(tái)天元(MegEngine),其「訓(xùn)練推理一體」、「動(dòng)靜合一」、「兼容并包」、「靈活高效」的強(qiáng)大性能或許將為 AI 領(lǐng)域帶來新的風(fēng)向。
「天元是曠視 1400 名研發(fā)人員一直以來使用的深度學(xué)習(xí)引擎,已部署在上百個(gè)產(chǎn)品、幾十種計(jì)算平臺(tái)上,」曠視首席科學(xué)家、研究院長(zhǎng)孫劍在發(fā)布會(huì)上表示?!杆梢詭椭_發(fā)者做到協(xié)同設(shè)計(jì)訓(xùn)得好,高效系統(tǒng)訓(xùn)得快,大規(guī)模數(shù)據(jù)或模型訓(xùn)得動(dòng)?!?/p>
曠視首席科學(xué)家、研究院長(zhǎng)孫劍發(fā)布會(huì)現(xiàn)場(chǎng)分享。
曠視提出的 AI 生產(chǎn)力平臺(tái) Brain++包括深度學(xué)習(xí)框架(天元 MegEngine)、深度學(xué)習(xí)云計(jì)算平臺(tái)(MegCompute)、以及數(shù)據(jù)管理平臺(tái)(MegData),將算法、算力和數(shù)據(jù)能力集為一體。本次開源的天元是 Brain++平臺(tái)的核心。
天元 MegEngine 深度學(xué)習(xí)框架官方網(wǎng)站:https://megengine.org.cn/
GitHub 開源地址:https://github.com/MegEngine/MegEngine
時(shí)至 2020,自賈揚(yáng)清等人開放 Caffe 已過去六年,曠視為什么選擇在這個(gè)時(shí)間點(diǎn)開源自身的核心技術(shù)?曠視研究院高級(jí)技術(shù)總監(jiān)、天元項(xiàng)目負(fù)責(zé)人田忠博告訴我們:「這一進(jìn)程其實(shí)去年已經(jīng)開始推動(dòng),我們認(rèn)為目前國(guó)內(nèi)市場(chǎng)上缺少天元這樣的項(xiàng)目?!?/p>
這是一個(gè)需要勇氣的行動(dòng)。據(jù)了解,在做出開源的決定以前,曠視技術(shù)團(tuán)隊(duì)內(nèi)部經(jīng)過了多次討論。這關(guān)系到框架技術(shù)是否成熟,生態(tài)環(huán)境是否發(fā)展完善,以及未來發(fā)展的方向。
田忠博指出,天元是一套訓(xùn)練推理一體化、動(dòng)靜態(tài)合一的工業(yè)級(jí)深度學(xué)習(xí)框架,具體架構(gòu)包括五層:
從最上層的接口層到最底層的計(jì)算內(nèi)核,天元做了很多優(yōu)化,例如內(nèi)存管理中的亞線性優(yōu)化和高性能算子庫(kù)等。
天元架構(gòu)是曠視在研發(fā)過程中遇到痛點(diǎn),并逐步解決的成果。曠視相信這些痛點(diǎn)也是行業(yè)共通的難題,通過這一開源架構(gòu),我們可以一站式地解決這些問題。
早在 2014 年 8 月,深度學(xué)習(xí)框架天元就在曠視內(nèi)部誕生了,它隨后成為了 Brain++的核心組成部分?!缸?2012 年起,陸續(xù)有研究者開發(fā)出了第一代深度學(xué)習(xí)框架。在曠視,我們?cè)趯?shí)踐過程中發(fā)現(xiàn)手工編寫每層配置文件的方式非常不靈活,」孫劍介紹道?!敢虼宋覀儼l(fā)展了第二代深度學(xué)習(xí)框架,通過計(jì)算圖的方式設(shè)計(jì)模型并求導(dǎo),大大提高了效率。2015 年谷歌正式發(fā)布了 TensorFlow,采用了和曠視殊途同歸的思路。當(dāng)時(shí)我們進(jìn)行了比較,發(fā)現(xiàn)自己的方法更具優(yōu)勢(shì),所以天元就繼續(xù)發(fā)展下來了?!?/p>
天元與目前流行的 TensorFlow、PyTorch 相似,旨在讓更多的人可以在其基礎(chǔ)上構(gòu)建自己的應(yīng)用,創(chuàng)造屬于自己的價(jià)值。
此前,百度等公司也推出了自己的深度學(xué)習(xí)框架。天元會(huì)有哪些不同?「在這其中,我們是唯一一個(gè)以 AI 為本業(yè)的公司,天然需要使用深度學(xué)習(xí)算法解決問題,」曠視副總裁謝憶楠表示,「我們把自己在 AI 解決各領(lǐng)域問題過程中的工具開源出來,從視角上看或許會(huì)獲得更好的效果?!?/p>
天元躋身全球主流框架
機(jī)器之心很多讀者都用過深度學(xué)習(xí)框架,很多讀者也都想入門深度學(xué)習(xí)框架。那么假設(shè)我們有 Python 和 NumPy 數(shù)值計(jì)算方面的基礎(chǔ),曠視新開源的天元又會(huì)有哪些方面吸引我們?
孫劍表示,天元有三大特別吸引人的優(yōu)點(diǎn),「第一是框架與算法的協(xié)同,框架需要為硬件開發(fā)優(yōu)化算子,這樣才能結(jié)合框架、設(shè)備開發(fā)最好的網(wǎng)絡(luò),ShuffleNet 系列高效神經(jīng)網(wǎng)絡(luò)就是協(xié)同設(shè)計(jì)的結(jié)果之一。第二即高效與強(qiáng)大性能,一般訓(xùn)練 COCO 數(shù)據(jù)集需要 30 多個(gè)小時(shí),2017 年基于天元的 MegDet 并行物體檢測(cè)系統(tǒng),2 小時(shí)就能完成,并且精度更高?!?/p>
「第三是很好地支持大數(shù)據(jù)、大規(guī)模訓(xùn)練。借天元開源之際,我們同時(shí)也發(fā)布最新版 Objects365 V2,它是世界上最大的物體檢測(cè)數(shù)據(jù)集,是目前學(xué)界流行的 COCO 數(shù)據(jù)集 的 16 倍大小。有這么大規(guī)模的數(shù)據(jù),模型也需要擴(kuò)增。如果模型擴(kuò)大 10 倍的話,總體訓(xùn)練量就會(huì)增加 160 倍。而天元對(duì)于這種大模型、大數(shù)據(jù)也是沒問題的,」孫劍接著說。
田忠博說:「天元是為工業(yè)級(jí)、研究院規(guī)模的研發(fā)機(jī)構(gòu)設(shè)計(jì)的,它具備的一些核心特點(diǎn)都是用來解決現(xiàn)實(shí)研發(fā)過程中的痛點(diǎn)?!箯木唧w體驗(yàn)與特性上,我們確實(shí)能發(fā)現(xiàn)天元解決很多開發(fā)痛點(diǎn),它們從代碼風(fēng)格、編程范式到底層優(yōu)化展現(xiàn)了不一樣的思路。
一鍵切換訓(xùn)練推理
在機(jī)器學(xué)習(xí)中,訓(xùn)練與推理一直不是一體的,當(dāng)我們?cè)O(shè)計(jì)算法時(shí),首先需要訓(xùn)練框架的支持,然后再把訓(xùn)練好的模型轉(zhuǎn)移到推理框架上,從而將后續(xù)的推理計(jì)算放到各種硬件上。這中間會(huì)存在訓(xùn)練與推理的轉(zhuǎn)換,這個(gè)過程需要手動(dòng)完成,甚至轉(zhuǎn)換后也不能保證模型性能與進(jìn)度。
「訓(xùn)練推理一體化能把繁雜的模型生產(chǎn)流程簡(jiǎn)化到一步、兩步,我們也希望它能夠極大縮短算法研發(fā)和部署的時(shí)間,真正支持大規(guī)模的生產(chǎn)級(jí)訴求」,田忠博說,「為此,天元框架需要做到三點(diǎn):無需模型轉(zhuǎn)換就能做推理;訓(xùn)練的速度、精度與推理保持一致;在不同設(shè)備上做推理需要保證模型精度可以對(duì)齊?!?/p>
從算法直接到部署硬件,中間不再需要轉(zhuǎn)換模型,只需要幾行代碼與 API,模型的實(shí)踐效果就能看得到。對(duì)于大多數(shù)算法工程師,可能比較精通深度學(xué)習(xí)模型,對(duì)推理與模型部署相對(duì)而言不是那么熟,天元無疑能降低大量工程實(shí)踐成本。
更重要的是,在部署過程中,天元通過自動(dòng)算法選擇機(jī)制和一系列針對(duì)推理的自動(dòng)優(yōu)化,能幫我們刪除冗余代碼,找到最適宜該設(shè)備的算法實(shí)現(xiàn),達(dá)到靈活高效的目標(biāo)。
動(dòng)靜合一,圖并存
從 Theano 到 TensorFlow 1.X,它們都遵循著「靜態(tài)計(jì)算圖」這條路,我們會(huì)發(fā)現(xiàn)在用這類方法寫模型時(shí),需要很強(qiáng)的「向量化思維」,F(xiàn)or 循環(huán)之類的語(yǔ)句就不要多想了。此外,因?yàn)閷懘a只是建計(jì)算圖,調(diào)試的時(shí)候異常困難,我們不知道圖中的數(shù)據(jù)流到底是什么樣的。
很快,在 PyTorch 等框架中出現(xiàn)了動(dòng)態(tài)計(jì)算圖,用它寫模型就像寫個(gè)普通 Python 腳本,但這樣寫出來的模型,卻是難以高效部署的。天元同時(shí)支持動(dòng)態(tài)圖與靜態(tài)圖,在科研訓(xùn)練與調(diào)試時(shí)采用動(dòng)態(tài)圖,到部署的時(shí)候又切換到靜態(tài)圖,這樣就能充分利用兩者優(yōu)勢(shì)。
如上圖所示,天元可以直接通過 @trace 裝飾器確定某個(gè)函數(shù)到底是動(dòng)態(tài)圖還是靜態(tài)圖,而且狀態(tài)還可以手動(dòng)調(diào)整。這不就意味著在調(diào)試時(shí)我們可以將函數(shù)設(shè)置為動(dòng)態(tài)圖,直接查看每個(gè)變量的信息,而要到了部署等實(shí)際應(yīng)用時(shí),再把靜態(tài)圖打開,提升訓(xùn)練與推斷速度?
如果以這樣的方式調(diào)用動(dòng)態(tài)與靜態(tài)計(jì)算圖,那真的稱得上整合了兩種方式的優(yōu)勢(shì)。
此外,我們還發(fā)現(xiàn)有一種動(dòng)、靜態(tài)的「混合編程」,即在動(dòng)態(tài)圖中調(diào)用靜態(tài)圖??梢韵胂?,定義網(wǎng)絡(luò)結(jié)構(gòu)等過程使用動(dòng)態(tài)圖比較直觀,而后采用靜態(tài)圖的方式執(zhí)行實(shí)際運(yùn)算,這也是非常吸引人的方式。后文在代碼示例中,也會(huì)展示這種新穎的「混合編程」。
人生苦短,Pythonic 好入門
如果深度學(xué)習(xí)建模一直采用靜態(tài)計(jì)算圖,估計(jì)框架就會(huì)勸退很多開發(fā)者。但是天元這種主要采用動(dòng)態(tài)圖的框架,構(gòu)建模型就像搭積木,而且還能以一般的 Python 編程方式去搭。相信很多接觸機(jī)器學(xué)習(xí)的開發(fā)者都會(huì)選擇 Python,它加上 NumPy 等數(shù)值計(jì)算庫(kù),差不多就能完成大多數(shù)任務(wù)。
如果有了這些基礎(chǔ),再搭建深度模型就沒問題了,天元一樣承接 Pythonic API,學(xué)習(xí)成本非常低。此外,因?yàn)闀缫暠旧碓?a href="http://ttokpm.com/v/tag/3744/" target="_blank">計(jì)算機(jī)視覺方面有非常雄厚的累積,田忠博表示:「天元內(nèi)置了一些獨(dú)特的深度學(xué)習(xí)算子,它們和曠視在 CV 上的獨(dú)到能力息息相關(guān),能針對(duì) CV 模型的訓(xùn)練與應(yīng)用實(shí)現(xiàn)深度優(yōu)化。」
對(duì)于 API 與代碼風(fēng)格,我們還是比較推薦直接查看本文后面的示例,可以直觀感受到,不論把天元當(dāng)做深度學(xué)習(xí)的入門框架,還是與 PyTorch、TensorFlow 等一起作為備選框架都沒問題。天元的編程風(fēng)格與 API 配置,和已有的編程習(xí)慣、現(xiàn)有框架的風(fēng)格都是一致的。
當(dāng)然,這些并不是天元所有特性,還有很多需要進(jìn)一步探索。例如它還有很強(qiáng)的多平臺(tái)、多設(shè)備適應(yīng)能力,既能靈活調(diào)用硬件能力,又可以高效訓(xùn)練大模型。
天元框架實(shí)際體驗(yàn)怎么樣?
那么實(shí)際用天元寫模型是什么樣的體驗(yàn)?機(jī)器之心體驗(yàn)了曠視發(fā)布的 MegStudio,通過在線開發(fā)的方式,我們可以快體驗(yàn)到天元的特性與編程方式。
MegStudio 上準(zhǔn)備好了一些入門項(xiàng)目,它展示了新框架的使用方式,例如「基本概念」主要介紹什么是計(jì)算圖、張量和算子等基礎(chǔ)知識(shí),每一個(gè)項(xiàng)目都是通過中文文字與可運(yùn)行的代碼組成的,就像常用的 JupyterLab 那樣,通過運(yùn)行這些基本項(xiàng)目可以讓開發(fā)者快速掌握天元的基本使用。
為了直接展示天元的風(fēng)格,我們可以快速試試 DL 入門的「第一個(gè)模型」MNIST 圖像識(shí)別。準(zhǔn)備數(shù)據(jù)這里就不展示了,天元可以直接調(diào)用 API 來處理常見數(shù)據(jù),準(zhǔn)備 MNIST 數(shù)據(jù)兩行代碼就夠了。如果要搭建一個(gè)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),天元允許使用 PyTorch Module 的方式定義,搭建模型就是搭積木。
如上所示,繼承 M.Module 后,Net 類只需要定義初始化參數(shù)與重寫前饋 forward 過程就可以了。卷積層、批歸一化層、激活函數(shù)等模塊的使用非常符合直接,只需要給定必要參數(shù)就沒問題了。
這種繼承 Module 的方式非常直觀,是一種動(dòng)態(tài)計(jì)算圖編寫方式。如果要實(shí)現(xiàn)前向傳播,傳給它輸入數(shù)據(jù)就行了,要是需要調(diào)試,在 forward 函數(shù)下設(shè)置斷點(diǎn),或者打印變量的信息都沒問題。
然而,一般寫模型真正復(fù)雜的地方在于定義模型架構(gòu)之外的過程,例如后面需要完成的訓(xùn)練與測(cè)試過程。天元的優(yōu)勢(shì)在于,它允許動(dòng)態(tài)圖結(jié)合靜態(tài)圖,即使定義模型使用的是動(dòng)態(tài)圖,但在定義訓(xùn)練與測(cè)試函數(shù)仍然可以用靜態(tài)計(jì)算圖。
如上在最為核心的前向、反向傳播與模型損失計(jì)算過程中,我們可以采用天元中的 @trace 裝飾器,直接調(diào)用靜態(tài)計(jì)算圖模式。因?yàn)榻^大多數(shù)計(jì)算都發(fā)生在這個(gè)過程,因此,由動(dòng)態(tài)計(jì)算圖轉(zhuǎn)為靜態(tài)計(jì)算圖將更有優(yōu)勢(shì),天元能采用更高效的方式訓(xùn)練模型。
最后就是迭代訓(xùn)練過程了,這里天元也采用了 DataLoader,這種方式非常便捷。后續(xù)的損失函數(shù)計(jì)算與最優(yōu)化器更新,與現(xiàn)有的 DL 框架比較類似,我們差不多不需要學(xué)習(xí)額外的知識(shí),了解一下 API 就能用。
當(dāng)然,后續(xù)還有保存、加載模型,也是兩條語(yǔ)句的功夫。總體而言,很明顯天元類似 PyTorch 保持了最好理解與使用的接口,并在關(guān)鍵的計(jì)算過程提供裝飾器以調(diào)用靜態(tài)計(jì)算圖,這可以稱得上是結(jié)合了動(dòng)態(tài)、靜態(tài)圖各自的優(yōu)勢(shì)。
因?yàn)檎w上天元的 API 接口非常精簡(jiǎn),且保持著主流框架所養(yǎng)成的編程習(xí)慣,入門門檻還是非常低的,之前了解過深度學(xué)習(xí)框架的同學(xué),不需要文檔都能快速讀懂整個(gè)過程。此外天元作為新手入門框架也沒是沒問題的,學(xué)會(huì)了它,差不多等同于學(xué)會(huì)了深度學(xué)習(xí)常用框架。
此外,除了 MegStudio,曠視還發(fā)布了模型中心 ModelHub,它匯聚了全球頂尖算法的一些預(yù)訓(xùn)練的模型,和曠視研究院一些最新的技術(shù)、研發(fā)成果。
曠視聯(lián)合創(chuàng)始人兼 CTO 唐文斌 發(fā)布會(huì)現(xiàn)場(chǎng)分享
在曠視的計(jì)劃中,Brain++將作為「AI 基礎(chǔ)設(shè)施」逐步開源、開放,將生產(chǎn)力共享給廣大開發(fā)者,讓每個(gè)擁有小場(chǎng)景需求的人都可以做出能夠解決其關(guān)鍵問題的最優(yōu)算法。此外,曠視還希望在未來面向高校課程、初創(chuàng)企業(yè)提供更多支持,以方便小規(guī)模深度學(xué)習(xí)部署。
值得一提的是,曠視本次發(fā)布的天元版本是 Alpha 版。曠視表示,更為「正式」的版本會(huì)在今年晚些時(shí)候上線,隨著大量組件的更新,曠視會(huì)逐步將計(jì)劃中開源的代碼和能力進(jìn)一步釋放出來?!? 月份開源的版本包含前期整理的代碼和關(guān)鍵組件,今年 6 月我們還會(huì)發(fā)布對(duì) Arm 架構(gòu)、深度學(xué)習(xí)加速芯片、低比特和量化環(huán)境的支持。在今年 9 月份,天元還會(huì)有動(dòng)態(tài)圖的核心升級(jí),整個(gè)系統(tǒng)會(huì)走向第一個(gè)開源的穩(wěn)定版。屆時(shí)體驗(yàn)會(huì)達(dá)到更為理想的狀態(tài)。」田忠博表示。
自 2012 年起,曠視就推出了人臉識(shí)別開放平臺(tái) Face++,近幾年來,AI 已從實(shí)驗(yàn)室中快速走向?qū)嵱没?。曠視的研發(fā)人員們認(rèn)為,「天元」的開源宣告著人工智能技術(shù)再次回到了算法探索的層面。
未來,曠視還會(huì)進(jìn)一步增強(qiáng)這一框架的分布式機(jī)器學(xué)習(xí)能力,對(duì)底層編譯與代碼生成能力進(jìn)行優(yōu)化,并歡迎機(jī)器學(xué)習(xí)社區(qū)力量的加入。
-
算法
+關(guān)注
關(guān)注
23文章
4588瀏覽量
92506 -
開源
+關(guān)注
關(guān)注
3文章
3218瀏覽量
42329 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5466瀏覽量
120891
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論