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