AI 技術(shù)需要開源,、開放。就在剛剛結(jié)束的中關(guān)村論壇曠視平行論壇中,,曠視正式發(fā)布了天元 1.0 預(yù)覽版,。
9 月 18 日,中關(guān)村論壇曠視平行論壇中,,曠視研究院院長(zhǎng),、首席科學(xué)家孫劍正式發(fā)布了開源深度學(xué)習(xí)框架天元 1.0 預(yù)覽版,并對(duì)天元的技術(shù)特性與發(fā)展方向進(jìn)行了深入解讀,。
曠視 2014 年開始研發(fā)深度學(xué)習(xí)框架天元,。目前,曠視 1400 多名研發(fā)人員全員使用天元 MegEngine,,曠視所有算法均通過天元 MegEngine 進(jìn)行訓(xùn)練和推理。
曠視天元 1.0 預(yù)覽版,,歷經(jīng) 8 次迭代 5 大升級(jí)
2020 年 3 月,,曠視正式將天元開源,提供給全球開發(fā)者使用。開源以來,天元從 3 月的 Alpha 版本升級(jí)到 6 月的 Beta 版本,、到 9 月的 1.0 版本,期間實(shí)現(xiàn)了 8 次迭代,。
此次天元 1.0 預(yù)覽版,,相比之前的版本,,實(shí)現(xiàn)了 5 項(xiàng)重要的技術(shù)升級(jí)。
首先,,天元 1.0 預(yù)覽版提供了全新的 Imperative Runtime。天元通過重寫動(dòng)態(tài)執(zhí)行引擎,,打破過去幾個(gè)版本中動(dòng)態(tài)圖的限制,解決了一系列資源釋放的問題,,并大幅提升了動(dòng)態(tài)自由度,讓使用 GPU 計(jì)算像 NumPy 一樣方便自如,。
其次,,天元 1.0 預(yù)覽版新增自動(dòng)代碼裁剪功能,。在實(shí)際的 AI 應(yīng)用開發(fā)中,用戶經(jīng)常面臨模型大小的問題,。自動(dòng)代碼裁剪功能讓用戶可以全自動(dòng)的針對(duì)自己網(wǎng)絡(luò)使用的算子進(jìn)行代碼裁剪,不用手工配置就能最小化推理時(shí)的代碼體積,,極大提升端側(cè)推理的競(jìng)爭(zhēng)力。
此外,,天元 1.0 預(yù)覽版進(jìn)行了 10 余項(xiàng)推理側(cè)性能優(yōu)化,,進(jìn)一步提升了端側(cè)推理性能,。同時(shí),天元支持了更多的國(guó)產(chǎn)硬件,。天元對(duì)于主流的一些國(guó)產(chǎn)硬件進(jìn)行了接入,,方便在國(guó)產(chǎn) NPU 芯片上進(jìn)行推理工作,。
最后,天元實(shí)驗(yàn)性的開發(fā)了一套基于 MLIR 的 JIT 引擎,,嘗試?yán)?MLIR 這一項(xiàng)非常有前景的方案進(jìn)行計(jì)算圖的進(jìn)一步融合、優(yōu)化來整體提升深度學(xué)習(xí)訓(xùn)練和推理的速度,。
經(jīng)過了半年的開源工作,現(xiàn)在天元擁有了完整的功能體系,。天元希望能依靠訓(xùn)推一體這一特性,讓產(chǎn)業(yè)應(yīng)用可以更快,、更高效的落地,。讓深度學(xué)習(xí)也可以簡(jiǎn)單開發(fā),。
天元三大核心優(yōu)勢(shì),實(shí)現(xiàn)簡(jiǎn)單開發(fā)
從開源到現(xiàn)在經(jīng)過半年的技術(shù)迭代,,天元擁有了三大核心優(yōu)勢(shì):訓(xùn)練推理一體、全平臺(tái)高效支持,、動(dòng)靜結(jié)合的訓(xùn)練能力。
核心優(yōu)勢(shì) 1:訓(xùn)練推理一體
所謂訓(xùn)練推理一體,,就是讓訓(xùn)練與推理不再是完全孤立的兩個(gè)步驟,。為什么訓(xùn)推一體如此重要?在傳統(tǒng)深度學(xué)習(xí)模型開發(fā)流程中,,從訓(xùn)練到推理,,開發(fā)者需要經(jīng)過一系列格式轉(zhuǎn)換,。但隨之而來的也會(huì)有種種復(fù)雜難題,比如推理框架對(duì)算子不支持,、作為中間轉(zhuǎn)換格式的 ONNX 版本不一致,轉(zhuǎn)換成 Caffe 過程中存在一些層的中間形狀變化導(dǎo)致無法轉(zhuǎn)換,涉及到量化模型時(shí)量化參數(shù)的定義不一致等,,都會(huì)增大轉(zhuǎn)換的難度。
除了轉(zhuǎn)換難外,,由于各個(gè)平臺(tái)的差異性和預(yù)處理邏輯的復(fù)雜性,訓(xùn)練側(cè)提供的預(yù)處理邏輯很有可能與推理側(cè)實(shí)現(xiàn)的結(jié)果不一致,,推理和訓(xùn)練的精度對(duì)齊變得非常困難,。
傳統(tǒng)深度學(xué)習(xí)模型開發(fā)環(huán)境下,,在不斷地對(duì)分配、適配和微調(diào)的過程中,,一個(gè)模型的落地工作往往需要數(shù)天到數(shù)周時(shí)間。如果還涉及到多平臺(tái)的部署,,則以上問題復(fù)雜度和難度會(huì)成倍增加,,讓模型交付變得非常困難,。
為了解決傳統(tǒng)模型開發(fā)的一系列痛點(diǎn),天元在訓(xùn)練和推理側(cè)均是一套底層框架提供支持,,對(duì)算子的支持、量化參數(shù)的理解均高度一致,。同時(shí),,天元支持各類常用的 CV 算子操作,,便于開發(fā)者將預(yù)處理的代碼邏輯直接寫入模型結(jié)構(gòu)當(dāng)中,從而讓訓(xùn)練和推理間的差距大幅度縮小,,開發(fā)者不再需要為了模型轉(zhuǎn)換而頭疼,。
經(jīng)過各方用戶一段時(shí)間的實(shí)際驗(yàn)證,使用天元整個(gè)模型,,可以將從訓(xùn)練到推理的交付時(shí)長(zhǎng)縮短至傳統(tǒng)方案的十分之一以下,,真正做到天級(jí)交付,。
另外,,由于訓(xùn)推一體化,模型在訓(xùn)練階段與推理階段可以高度對(duì)齊,,這使得量化感知訓(xùn)練產(chǎn)生的模型可以無風(fēng)險(xiǎn)的在端側(cè)應(yīng)用。同時(shí)天元擁有精心設(shè)計(jì)的量化訓(xùn)練模塊,,大大降低了量化感知訓(xùn)練模型的使用門檻。
以上表格中,,在各類模型上,,通過應(yīng)用量化感知訓(xùn)練,,可以在極小的精度下降前提下,使用 int8 推理,。量化感知訓(xùn)練產(chǎn)生的高精度模型,配合上天元經(jīng)過高度優(yōu)化的 int8 算子,,可以將各個(gè)常見網(wǎng)絡(luò)的推理耗時(shí)降至浮點(diǎn)模型的 30%~50% 以內(nèi),有效帶來性能加速,。
核心優(yōu)勢(shì) 2:全平臺(tái)高效支持
廣泛而高效的平臺(tái)支持,是實(shí)現(xiàn)訓(xùn)推一體的前提,。只有在各個(gè)平臺(tái)上都提供足夠高效便捷的推理能力,,才能真正的免除模型轉(zhuǎn)換工作,。
對(duì)于開發(fā)者常用的各類 CPU、GPU 和 NPU,,天元均提供了全面而高效的支持,讓用戶無需為每個(gè)平臺(tái)重新學(xué)習(xí)重新開發(fā),,可以讓用戶一套模型、一套代碼走天下,。
天元支持的設(shè)備包括 NVIDIA GPU,、ARM、X86 和 AMD GPU 平臺(tái)以及各類國(guó)產(chǎn) NPU 芯片,。同時(shí),測(cè)試表明,,相比其他一些框架,,天元在 CUDA,、ARM,、X86 平臺(tái)上都具備性能優(yōu)勢(shì),。
深度學(xué)習(xí)應(yīng)用中,運(yùn)行時(shí)的內(nèi)存占用是一個(gè)重要的指標(biāo),。由于天元的自動(dòng)內(nèi)存優(yōu)化策略在訓(xùn)練側(cè)得到了充分的打磨,,天元可以在內(nèi)存占用和推理性能之間取得良好的平衡。
僅依靠通用的優(yōu)化策略,,天元對(duì)于任意的模型結(jié)構(gòu)都有足夠良好的優(yōu)化表現(xiàn),框架無需針對(duì)網(wǎng)絡(luò)結(jié)構(gòu)特殊優(yōu)化,。這保證了天元可以在開發(fā)者自己的模型結(jié)構(gòu)也保持較低的內(nèi)存占用,讓天元可以幫助各個(gè)領(lǐng)域的開發(fā)者降低內(nèi)存占用量,,提高競(jìng)爭(zhēng)力,。
端側(cè)推理時(shí),推理程序的二進(jìn)制體積同樣是一項(xiàng)非常重要的指標(biāo),,對(duì)于端側(cè)的 SDK 競(jìng)爭(zhēng)力非常重要。
對(duì)此,,天元提供了自動(dòng)代碼裁剪機(jī)制,,根據(jù)模型的結(jié)構(gòu),將不需要的 kernel 實(shí)現(xiàn)和代碼片段裁減掉的過程全自動(dòng),,從而將代碼體積大幅度縮小,大幅度提升端側(cè) SDK 的競(jìng)爭(zhēng)力,。
核心優(yōu)勢(shì) 3:動(dòng)靜結(jié)合的訓(xùn)練能力
動(dòng)態(tài)圖訓(xùn)練對(duì)程序員友好,可以隨時(shí)停下來 Debug,;而靜態(tài)圖的訓(xùn)練好處是可以讓訓(xùn)練的精度,、內(nèi)存消耗和訓(xùn)練速度達(dá)到最優(yōu),。如何兼得動(dòng)態(tài)圖訓(xùn)練和靜態(tài)圖訓(xùn)練的好處,?天元通過動(dòng)靜結(jié)合支持快速模型設(shè)計(jì)。動(dòng)態(tài)模式下,,天元可以方便的排查模型問題,在遇到錯(cuò)誤后及時(shí)停下,,便于分析模型結(jié)構(gòu)上的異常問題,。通過添加一行 trace,模型可以被直接轉(zhuǎn)換為靜態(tài)圖模式,,獲得靜態(tài)圖所獨(dú)有的圖優(yōu)化,一方面可以更好的對(duì)顯存進(jìn)行復(fù)用,,提高顯存利用率,另一方面可以優(yōu)化計(jì)算順序,,提升模型的訓(xùn)練性能。
在 Beta 版天元推出了亞線性內(nèi)存優(yōu)化技術(shù),。目前天元是唯一一個(gè)支持全自動(dòng)亞線性內(nèi)存優(yōu)化技術(shù)的框架,。靜態(tài)模式下,在靜態(tài)圖的基礎(chǔ)上,,額外添加一個(gè)配置項(xiàng),則可以便捷的啟用亞線性內(nèi)存優(yōu)化,。天元內(nèi)置的 Sublinear 亞線性內(nèi)存優(yōu)化功能,可以對(duì)任意的模型結(jié)構(gòu)進(jìn)行內(nèi)存優(yōu)化,,在相同的顯卡下,,可以訓(xùn)練出更大更準(zhǔn)確的模型,。
亞線性內(nèi)存優(yōu)化的特點(diǎn)是參數(shù)量越大,從而節(jié)省下的顯存量越多,。因此越龐大的模型,,從中獲得的收益就越大。由于算法的普適性,,無論是任何的模型結(jié)構(gòu),,都可以全自動(dòng)的被亞線性內(nèi)存優(yōu)化機(jī)制處理。
共同推進(jìn)開源生態(tài)建設(shè)
在使用上,,天元模型中心 Model Hub 提供了豐富的預(yù)訓(xùn)練模型,,包括圖像分類、目標(biāo)檢測(cè),、圖像分割等模型,,并且每個(gè)模型都提供了 SOTA 級(jí)別準(zhǔn)確率,讓使用者可以便捷的上手天元,,站在巨人的肩膀上開始自己的科研工作,。
此外,,天元已經(jīng)與小米 MACE,、OpenAI Lab Tengine 進(jìn)行了深度的集成,用戶可以將 MegEngine 的模型直接轉(zhuǎn)換到 MACE 或 Tengine 中執(zhí)行,,從而獲取在各類異構(gòu)設(shè)備上執(zhí)行深度學(xué)習(xí)模型的能力,。
深度學(xué)習(xí)框架的未來路線
天元 1.0 預(yù)覽版的發(fā)布意味著天元已經(jīng)迭代成為一個(gè)完備的深度學(xué)習(xí)框架。未來天元將如何迭代發(fā)展,?曠視天元技術(shù)團(tuán)隊(duì)認(rèn)為深度學(xué)習(xí)未來會(huì)繼續(xù)蓬勃發(fā)展,,在不斷涌現(xiàn)新技術(shù)新方案的同時(shí),現(xiàn)有的方案和技術(shù)會(huì)進(jìn)一步的范式化,,簡(jiǎn)化整個(gè)流程,,像傳統(tǒng)軟件開發(fā)一樣精確分工、快速迭代,。因此天元會(huì)持續(xù)在易用性和整個(gè)深度學(xué)習(xí)落地的流程化上努力,,讓深度學(xué)習(xí)應(yīng)用的流程更加清晰易懂,從而大幅提高 AI 的生產(chǎn)力,。
此外,,在過去的一段時(shí)間中,深度學(xué)習(xí)框架從編譯器中借鑒了相當(dāng)一部分的內(nèi)容,,曠視天元技術(shù)團(tuán)隊(duì)認(rèn)為隨著 MLIR 等新興技術(shù)的產(chǎn)生,,框架將會(huì)進(jìn)一步向編譯器化發(fā)展,從而獲得更大幅度的性能提升,。
最后,,隨著大量云,、端上的 AI 芯片的衍生以及各類神經(jīng)網(wǎng)絡(luò)加速器應(yīng)用的愈加廣泛,,每家芯片自身的推理框架越來越強(qiáng)大。訓(xùn)推一體的核心是在訓(xùn)練階段對(duì)芯片的充分了解和兼容,,因此如何讓用戶能從一開始就訓(xùn)練出一個(gè)適用于最終要用到的芯片的模型,,才是讓整個(gè)落地流程最高效的重點(diǎn),。天元希望能夠與芯片協(xié)同演進(jìn),協(xié)同發(fā)展,,讓整個(gè)生態(tài)能夠更加健康蓬勃的發(fā)展,。
AI 產(chǎn)業(yè)落地浪潮中,開發(fā)者只有在友好,、開放,、創(chuàng)新的開發(fā)環(huán)境中,才能更好地進(jìn)行 AI 的價(jià)值設(shè)計(jì)與開發(fā),,為全球輸送 AI 動(dòng)能。歡迎全球開發(fā)者,,加入天元社區(qū),一起讓深度學(xué)習(xí)也可以簡(jiǎn)單開發(fā),。