摘要:最近哈工大被禁用MATLAB一事,引發了國人關於國產化工業軟體和基礎軟體發展的熱議,也讓我們對中國人工智慧研究與應用發展潛力產生了一些疑慮和擔心,產生了對國產深度學習框架發展的深度關切和期待。本文介紹了五款國產開源深度學習軟體框架產品,他們是:百度的PaddlePaddle(飛漿),曠視科技的MegEngine(天元),華為的Mindspore、阿里的X-DeepLearning(XDL)和清華大學的Jittor(計圖)。
近年來,深度學習技術得到了飛速的發展和廣泛應用,中國人工智慧技術應用取得了耀眼的成果,其學術論文發表成績僅次於美國,實際應用已經覆蓋社會經濟發展、工業生產和個人日常生活中,惠及億萬大眾百姓。但是,最近哈工大、哈工程被禁用MATLAB一事,引發了國人關於國產化工業軟體和基礎軟體發展的熱議,也讓我們對中國人工智慧發展前景產生了一些疑慮和擔心,我們的人工智慧研究與應用成果是否大多數都是基於國外深度學習框架研究和發展的?國產深度學習框架發展情況如何?本文基於上述擔心和疑慮,專題介紹了幾款國產開源深度學習軟體框架的情況,表達了對國產深度學習框架產品發展的熱切期待。
一、國際主流深度學習框架簡介
隨著深度學習技術的不斷發展,逐步出現了許多深度學習開發框架,常見的有:TensorFlow、Caffe、Torch、PyTorch、MxNet、CNTK、Theano等,這些開發框架可以讓開發者很輕鬆地學習使用深度學習技術,並提供了各種不同的接口供開發者使用,從而推動了深度學習技術的普及和從業人員的擴大。其中,TensorFlow是谷歌公司發布的第二代深度學習平臺,是當今應用最廣泛、最具生產性應用能力的深度學習開源框架;Caffe是基於C++實現的開源庫,提供了Python和Matlab外部接口,通過配置文件定義模型即可實現網絡模型訓練;Torch是基於Lua實現的開源庫,需要開發人員自己編寫訓練代碼,Facebook基於Torch開發了深度學習框架PyTorch;亞馬遜推出了MxNet;微軟推出了CNTK;Theano是基於Python實現的開源庫,Pylearn2基於Theano開發了深度學習工具。全球科技巨頭及AI創業公司紛紛布局計算框架並逐步開源。
我們知道,機器學習(深度學習)開源軟體框架對機器學習的研究與廣泛應用起到了積極的推動作用,大大降低了進入深度學習應用研究領域的技術門檻和難度。對於機器學習科研工作者和工業界從業人員來說,熟練掌握一種機器學習框架是必備技能之一。隨著深度學習技術發展的突飛猛進和應用的普及,機器學習框架市場也漸漸度過了初期野蠻生長的階段。大浪淘沙,目前最活躍的開源機器學習框架主要是Facebook的PyTorch和谷歌的TensorFlow兩種。
回顧2019年,機器學習開源軟體框架之爭中剩下兩個競爭者:PyTorch和TensorFlow。據有關專業人士分析表明,研究人員正在放棄TensorFlow而紛紛轉向使用PyTorch,在學術界2019年PyTorch的應用已經超越TensorFlow。
然而,TensorFlow目前仍是工業界的首選平臺,其原因有三:一是慣性所致,二是工業界採用新技術要稍晚一些,三是TensorFlow的模型應用執行引擎本身不需要Python,並且通過TensorFlow Lite和TensorFlow Serving分別處理移動端和伺服器端的問題,更利於工業化應用。一段時間內,TensorFlow和PyTorch這兩種機器學習框架都有其各自主導的領域:PyTorch在學術界佔據主導,而TensorFlow在工業界則更受歡迎,但這種情況可能不會持續太久。機器學習是一個由研究驅動的領域,工業界不會忽視科學研究的成果,只要PyTorch在研究領域佔據主導地位,就會迫使工業界轉而使用PyTorch。不過也許還會出現另一種情形,隨著機器學習技術研究的發展另一種計算模型佔據主導地位,從而出現另外一種新的機器學習軟體框架。
那麼,就框架本身來說,為何越來越多的研究者選擇在論文中使用PyTorch呢?大概可以總結為以下三個原因:
(1)簡單。與numpy類似,PyTorch可以很容易地與Python生態系統融合。例如,向PyTorch模型的任意位置放入一個pdb斷點,它都可以正常工作。而在TensorFlow中,調試模型需要一個激活的會話,最後會變得非常棘手。
(2)優秀的API。相較於TensorFlow,多數研究者更喜歡PyTorch的API。部分原因在於PyTorch的設計更加合理,還有一部分原因在於:TensorFlow在將API轉換多次之後已經自損元氣。
(3)性能。儘管PyTorch的動態圖留給優化的機會非常之少,但有不少非正式報告稱PyTorch與TensorFlow一樣快。目前還不清楚這是不是真的,但至少TensorFlow在這方面還沒有取得決定性優勢。
二、國內深度學習框架發展概述
近年來,國內網際網路企業和部分人工智慧新創企業也加大深度學習技術的研究與應用,在取得諸多實際應用效果的同時,研發出一些高水平的深度學習開發平臺,有些企業還將其開發平臺開放或開源,最突出的是百度公司的PaddlePaddle(飛漿)。
發展到2020年,我們看到國內越來越多的科技巨頭、創業公司、高等院校在人工智慧底層創新的基礎上研發、使用自家的深度學習框架,並紛紛開源開放。如網際網路科技巨頭百度的PaddlePaddle(飛漿)、阿里巴巴的X-DeepLearning(XDL)、華為的 MindSpore,計算機視覺獨角獸公司曠視科技的MegEngine(天元),清華大學的Jittor(計圖)等。
三、國內主要開源深度學習框架簡介
本節分別簡要介紹國內五款主要開源深度學習軟體框架產品,提供下載地址和相關信息。
(一)百度的飛漿(PaddlePaddle)
飛槳(PaddlePaddle)是由百度研發的開源深度學習框架。飛漿以百度多年的深度學習技術研究和業務應用為基礎,集深度學習核心框架、基礎模型庫、端到端開發套件、工具組件和服務平臺於一體。飛槳源於產業實踐,始終致力於與產業深入融合。目前飛槳已廣泛應用於工業、農業、服務業等,服務150多萬開發者,與合作夥伴一起幫助越來越多的行業完成 AI 賦能。飛漿2016年正式開源,2017年啟動新一代深度學習框架研發,2018年 7月發布Paddle v0.14,目前的最新版本是2020年2月發布的Paddle v1.7。
飛漿的整體架構如下圖所示:
飛漿全景圖
飛槳組件使用場景概覽
飛漿具有四大領先技術:
(1)靈活高效的產業級深度學習框架:飛槳深度學習框架採用基於編程邏輯的組網範式,對於普通開發者而言更容易上手,符合他們的開發習慣。同時支持聲明式和命令式編程,兼具開發的靈活性和高性能。網絡結構自動設計,模型效果超越人類專家。
(2)支持超大規模深度學習模型的訓練:飛槳突破了超大規模深度學習模型訓練技術,實現了世界首個支持千億特徵、萬億參數、數百節點的開源大規模訓練平臺,攻克了超大規模深度學習模型的在線學習難題,實現了萬億規模參數模型的實時更新。
(3)多端多平臺部署的高性能推理引擎:飛槳不僅兼容其他開源框架訓練的模型,還可以輕鬆地部署到不同架構的平臺設備上。同時,飛槳的推理速度也是全面領先的。尤其經過了跟華為麒麟NPU的軟硬一體優化,使得飛槳在NPU上的推理速度進一步突破。
(4)面向產業應用,開源覆蓋多領域工業級模型庫:飛槳官方支持100多個經過產業實踐長期打磨的主流模型,其中包括在國際競賽中奪得冠軍的模型;同時開源開放 200多個預訓練模型,助力快速的產業應用。
飛漿還提供了豐富的工具與組件:
飛漿支持豐富的作業系統環境:
同時還提供了在線編程與調試環境,包括AI Studio在線編程環境和PaddleCloud雲上任務提交工具。
飛漿官方網站:https://www.paddlepaddle.org.cn/
飛漿Github官方地址:https://github.com/paddlepaddle/paddle
飛漿碼雲(Gitee)官方地址:https://gitee.com/paddlepaddle/Paddle
飛槳微信公眾號:飛槳PaddlePaddle
飛槳官方QQ群:703252161
(二)曠視科技的天元(MegEngine)
天元(MegEngine)是由曠視科技研發的開源深度學習框架,它是曠視人工智慧算法平臺Brain++的一部分。MegEngine由曠視科技於2020年3月25日正式開源。
曠視Brain++是一個具備大規模算法研發能力的端到端解決方案,覆蓋從數據的生成、清洗、預處理、標註和存儲開始,到算法架構設計、實驗環節設計、訓練環境搭建,以及訓練、加速、調參、模型效果評估和產生模型,以及模型分發和部署應用的全流程。總體來說曠視Brain++由深度學習框架MegEngine、深度學習雲計算平臺MegCompute、數據管理平臺MegData三部分組成。其中Brain++在算法開發方面的強大能力很大程度上源於其使用的深度學習框架 MegEngine。MegEngine的研發始於2014年,如今曠視的所有算法均基於MegEngine進行訓練和推理。MegEngine是工業級的深度學習框架,架構先進、性能優異、移植性強。MegEngine強調產品化能力,在此基礎上保證研發過程的快捷便利。
曠視人工智慧算法平臺Brain++示意圖
MegEngine是Brain++的核心組件,是與百度PaddlePaddle一樣的為開發者和研究人員提供開發的國產原創深度學習框架。該框架主要用於進行計算機視覺領域的算法開發工作,包括大規模的圖像檢測、分割、識別任務等,因此在計算機視覺領域具備獨特的優勢。
天元(MegEngine)是一個基於計算圖的深度學習框架,從架構來說分為四個層,包括計算引擎、運行時管理、編譯和優化以及編程和表示。計算引擎以MegDNN為核心,MegDNN 是一個基於異構架構、有著統一交互方法的內核,可以根據設備本身啟發式地選擇最優內核,也可以讓用戶自己選擇最適合的內核進行計算。在運行時管理層中包括兩個模塊,分別是內核調度和內存管理優化兩大模塊。在內存管理優化模塊中,MegEngine採用了動態、靜態內存分配並存的方式。在編譯層和優化層,MegEngine使用了基於計算圖的編譯和優化方法。編程和表示層進行用戶交互,能夠使用高級程式語言(如 Python)執行用戶的命令。
天元(MegEngine)整體架構
天元(MegEngine)架構具有動靜合一、兼容並包、靈活高效、訓練推理一體四大特點,有著多種優勢:
(1)運算速度快:MegEngine採用動態、靜態結合的內存優化機制,速度比 TensorFlow更快;
(2)內存佔用少:通過分析整個執行方案的內存使用情況,MegEngine充分優化內存,特別是亞線性內存優化,可以支持複雜的網絡結構,自動利用部分冗餘計算縮減內存佔用可達兩個數量級,從而支持更大規模的模型訓練;
(3)易用性好:MegEngine封裝了平臺細節,易於新用戶快速上手;
(4)支持多種硬體平臺和異構計算:MegEngine支持通用CPU、GPU、FPGA以及其他行動裝置端硬體,可多卡多機進行訓練;
(5)訓練部署一體化:整個框架既可用於訓練又同時支持推理,實現模型一次訓練,多設備部署,避免複雜的轉換過程造成的性能下降和精度損失。
MegEngine之所以能夠成為核心算法框架,主要依靠其幾大底層技術。
首先,MegEngine基於C++開發,可幫助用戶藉助程式語言進行高性能的運算執行。曠視在框架內部使用了目前流行的計算圖方式,但MegEngine使用的是異構架構,方便使用框架進行分布式計算。
此外,MegEngine內部的計算以算子的形式進行,它支持多種算子節點和變量算子,包括常用的卷積、全連接、ReLU 和用戶可定製的算子,甚至可以計算二階梯度,從而進行更多底層和靈活的運算。可以說,MegEngine 在盡全力提升深度學習計算性能的基礎上,為用戶提供了靈活易用的模型構建工具,極大地提升了開發效率。
值得一提的是,MegEngine為了提升大規模圖像數據處理和模型訓練的效率,分布式計算中既應用了數據並行又應用了模型並行方式,模型並行可以和數據並行模式混合使用,極大提升了模型訓練效率。在模型並行方面,MegEngine提供原語級別的支持,方便用戶進行模型並行設置和執行。
除了標新立異的訓練、推理一體化,MegEngine還集成了曠視最新的AutoML技術,對深度學習算法的各個關鍵環節進行自動化的設計、搜索和優化。這項技術以One-Shot方法為核心,通過一次訓練完成自動化過程,將計算代價減小至傳統AutoML方法的萬分之一,在可控的時間內搜索出高性能、易部署的模型結構。
天元(MegEngine)主要支持64位Ubuntu作業系統的安裝部署,同時還提供了在線深度學習開發平臺(MegStudio)、模型中心(ModelHub)、示例模型和開放目標檢測數據集(Objects365)。
天元MegEngine官方網站:https://megengine.org.cn/
天元MegEngine官方Github:https://github.com/MegEngine
(三)華為的Mindspore
2020年3月28日華為在開發者大會2020(雲)上宣布,全場景AI計算框架MindSpore在碼雲正式開源,企業級AI應用開發者套件ModelArts Pro也在華為雲上線,華為還展示了其人工智慧計算平臺Atlas的雲邊端全場景開發實踐。MindSpore是華為人工智慧整體解決方案的一部分,下有人工智慧晶片算力支撐,上有ModelArts應用開發環境支持。
華為人工智慧全場景全棧整體解決方案
MindSpore人工智慧計算框架著重提升易用性並降低AI開發者的開發門檻,通過MindSpore自身的技術創新及MindSpore與華為昇騰AI處理器的協同優化,大大提高計算性能;MindSpore同時支持CPU、GPU等其它處理器。MindSpore是一款支持端、邊、雲獨立/協同的統一訓練和推理框架。
MindSpore框架架構總體分為MindSpore前端表示層、MindSpore計算圖引擎和MindSpore後端運行時三層。
MindSpore框架三層架構
(1)MindSpore前端表示層(Mind Expression,簡稱ME)
該部分包含Python API、MindSpore IR(Intermediate representation,簡稱IR)、計算圖高級別優化(Graph High Level Optimization,簡稱GHLO)三部分。Python API向用戶提供統一的模型訓練、推理、導出接口,以及統一的數據處理、增強、格式轉換接口。GHLO包含硬體無關的優化(如死代碼消除等)、自動並行和自動微分等功能。MindSpore IR提供統一的中間表示,MindSpore基於此IR進行pass優化。
(2)MindSpore計算圖引擎(Graph Engine,簡稱GE)
該部分包含計算圖低級別優化(Graph Low Level Optimization,簡稱GLLO)、圖執行。GLLO包含硬體相關的優化,以及算子融合、Buffer融合等軟硬體結合相關的深度優化。圖執行提供離線圖執行、分布式訓練所需要的通信接口等功能。
(3)MindSpore後端運行時
該部分包含雲、邊、端上不同環境中的高效運行環境。
MindSpore的目標是打造簡單高效的AI計算框架。針對業界AI開發者所面臨的開發門檻高、運行成本高、部署難度大等挑戰,MindSpore提出對應的三點技術創新點,即新編程範式、新執行模式和新協同模式,幫助開發者更簡單、更高效實現AI應用的開發和部署。
(1)新編程範式
AI算法即代碼,降低AI開發門檻,基於數學原生表達的AI編程新範式讓算法專家聚焦AI創新和探索。
(2)新執行模式
Ascend Native的執行引擎:On-Device執行,整圖卸載執行,充分發揮昇騰
大算力。
(3)新協同模式
在端-邊-雲全場景實現統一架構下的按需協同分布式計算架構,更好的資源效率和隱私保護。
MindSpore作為新一代深度學習框架,是源於全產業的最佳實踐,最佳匹配昇騰處理器算力,支持終端、邊緣、雲全場景靈活部署,開創全新的AI編程範式,降低AI開發門檻。MindSpore是一種全新的深度學習計算框架,旨在實現易開發、高效執行、全場景覆蓋三大目標。為了實現易開發的目標,MindSpore採用基於源碼轉換(Source Code Transformation,SCT)的自動微分(Automatic Differentiation,AD)機制,該機制可以用控制流表示複雜的組合。函數被轉換成函數中間表達(Intermediate Representation,IR),中間表達構造出一個能夠在不同設備上解析和執行的計算圖。在執行前,計算圖上應用了多種軟硬體協同優化技術,以提升端、邊、雲等不同場景下的性能和效率。MindSpore支持動態圖,更易於檢查運行模式。由於採用了基於源碼轉換的自動微分機制,所以動態圖和靜態圖之間的模式切換非常簡單。為了在大型數據集上有效訓練大模型,通過高級手動配置策略,MindSpore可以支持數據並行、模型並行和混合併行訓練,具有很強的靈活性。此外,MindSpore還有「自動並行」能力,它通過在龐大的策略空間中進行高效搜索來找到一種快速的並行策略。
MindSpore官網地址:https://www.mindspore.cn/
MindSpore碼雲地址:https://gitee.com/mindspore
(四)阿里媽媽的X-DeepLearning(XDL)
X-DeepLearning(簡稱XDL)是由阿里媽媽事業部推出的一款面向高維稀疏數據場景(如廣告/推薦/搜索等)深度優化的一整套解決方案。XDL於2018年12月在Github上開源,目前的最新版本為1.2。XDL的核心貢獻團隊包括阿里媽媽工程平臺、算法平臺、定向廣告技術團隊、搜索廣告技術團隊等,同時XDL項目也得到了阿里巴巴計算平臺事業部(特別是PAI團隊)的幫助。
XDL突破了現有深度學習開源框架大都面向圖像、語音等低維稠密數據而設計的現狀,面向高維稀疏數據場景進行了深度優化,並已大規模應用於阿里媽媽的業務及生產場景。
以深度學習為核心的人工智慧技術,近年來在語音識別、計算機視覺、自然語言處理等領域獲得了巨大的成功,其中以GPU為代表的硬體計算力,以及優秀的開源深度學習框架起到了巨大的推動作用。儘管以TensorFlow、PyTorch、MxNet等為代表的開源框架已經取得了巨大的成功,但是當我們把深度學習技術應用在廣告、推薦、搜索等大規模工業級場景時,發現這些框架並不能很好的滿足需求。矛盾點在於開源框架大都面向圖像、語音等低維連續數據設計,而網際網路的眾多核心應用場景(如廣告/推薦/搜索)往往面對的是高維稀疏離散的異構數據,參數的規模動輒百億甚至千億。而且不少產品應用需要大規模深度模型的實時訓練與更新,現有開源框架在分布式性能、計算效率、水平擴展能力以及實時系統適配性等方面往往難以滿足工業級生產應用的需求。
X-DeepLearning正是面向這樣的場景設計與優化的工業級深度學習框架,經過阿里巴巴廣告業務的錘鍊,XDL在訓練規模和性能、水平擴展能力上都表現出色,同時內置了大量面向廣告/推薦/搜索領域的工業級算法解決方案。
XDL具有以下系統核心能力:
(1)為高維稀疏數據場景而生。支持千億參數的超大規模深度模型訓練,支持批學習、在線學習等模式。
(2)工業級分布式訓練能力。支持CPU/GPU的混合調度,具備完整的分布式容災語義,系統的水平擴展能力優秀,可以輕鬆做到上千並發的訓練。
(3)高效的結構化壓縮訓練。針對網際網路樣本的數據特點,提出了結構化計算模式。相比傳統的平鋪樣本訓練方式,典型場景下的樣本存儲空間、樣本IO效率、訓練絕對計算量等方面都大幅下降,推薦等場景下整體訓練效率最大可提升10倍以上。
(4)成熟多後端支持。單機內部的稠密網絡計算復用了成熟開源框架的能力,只需要少量的分布式驅動代碼修改,就可以把TensorFlow/MxNet等框架上的單機代碼運行在XDL上,獲得XDL分布式訓練與高性能稀疏計算的能力。
XDL框架內置了豐富的工業級算法解決方案:
(1)點擊率預估領域的最新算法,包括深度興趣網絡(Deep Interest Network, DIN),用戶興趣演化模型(Deep Interest Evolution Network, DIEN),跨媒介網絡(Cross Media Network,CMN)。
(2)點擊率&轉化率聯合建模的全空間多任務模型(Entire Space Multi-task Model, ESMM)。
(3)匹配召回領域的最新算法——深度樹匹配模型(Tree-based Deep Match,TDM)。
(4)輕量級通用模型壓縮算法(Rocket Training)
XDL框架的系統架構如下圖所示:
XDL系統架構
XDL包含多項系統設計與優化:
(1)XDL-Flow:數據流與分布式運行時
XDL-Flow驅動整個深度學習計算圖的生成與執行,包括樣本流水線、稀疏表徵學習、稠密網絡學習。同時,XDL-Flow也負責分布式模型的存儲與交換控制邏輯,分布式容災與恢復控制等全局一致性協調工作。
(2)AMS:高效模型伺服器
AMS是面向稀疏場景專門設計與優化的分布式模型存儲與交換子系統。綜合小包網絡通信、參數存儲結構、參數分布式策略等進行了大量的軟硬體優化,使得AMS在吞吐力和水平擴展力上都大幅優於傳統的Parameter Server,AMS也支持內置的深度網絡計算,可以使用AMS進行表徵子網絡的二階計算。
(3)Backend Engine:橋接技術復用成熟框架的單機能力
為了充分利用現有開源深度學習框架在稠密深度網絡上的能力,XDL使用橋接技術(Bridging),把開源深度學習框架(本期開源版XDL支持TensorFlow、MxNet)作為單機稠密網絡的計算引擎後端。用戶可以在保留TensorFlow或MxNet網絡開發習慣的同時,通過少量的驅動代碼修改,就直接獲得XDL在大規模稀疏計算上的分布式訓練能力。換句話說,使用XDL時無需再學習一門新的框架語言,這使XDL可以很輕鬆地將Tensorflow社區的某個開源模型通過XDL拓展到工業級場景。
(4)Compact Computation:結構化計算模式大幅提升訓練效率
工業界稀疏場景下的樣本表徵往往呈現很強的結構化特點,例如用戶特徵、商品特徵、場景特徵。這種構建方式決定了某些特徵會大量出現在重複的樣本中——隸屬於同一個用戶的多條樣本中,用戶特徵很大一部分是相同的。結構化樣本壓縮正是利用海量樣本中大量局部特徵重複這一特點,在存儲和計算兩個維度上對特徵進行壓縮,節省了存儲、計算和通信帶寬資源。樣本預處理階段,對需要聚合的特徵進行排序;batching階段,在tensor層面進行壓縮;計算階段,壓縮特徵只有在最後一層才會展開,極大節省深層網絡的計算開銷。推薦場景下的效果驗證表示,在典型的生產數據上使用聚合排序的樣本和完全shuffle的樣本評估整體性能提升10倍以上。
(5)Online-Learning:大規模在線學習
在線學習近年來在工業界開始被大規模應用,它是工程與算法的深入結合,賦予模型實時捕捉線上流量變化的能力,在一些對時效性要求很高的場景,有很大的價值。例如在電商大促等場景下,在線學習可以更加實時地捕捉用戶行為變化,顯著提升模型的實時效果。XDL提供了一套完整的在線學習解決方案,支持基於全量模型,讀取實時消息隊列裡的樣本進行實時持續學習。另外,為避免無限制的新特徵流入導致實時模型爆炸問題,XDL內置了實時特徵自動選擇與過期特徵淘汰等功能,保證用戶使用XDL進行在線學習的簡便性。
XDL官方Github地址:https://github.com/alibaba/x-deeplearning
XDL官方碼雲地址:https://gitee.com/mirrors/X-DeepLearning
(五)清華大學的計圖(Jittor)
計圖(Jittor)是一個由清華大學計算機系計算機圖形學組開發的開源機器學習框架。Jittor目前由來自清華大學計算機圖形學組的梁盾、楊國燁、楊國煒和周文洋等博士生維護。Jittor使用Apache 2.0版權協議。計圖(Jittor)於2020年3月開始在Github開源,於5月2日發布1.1版本,新增了骨幹網絡、JIT功能升級和多卡訓練支持。
計圖(Jittor)是一個完全基於動態編譯(Just-in-time)、內部使用創新的元算子和統一計算圖的深度學習框架,元算子和Numpy一樣易於使用,並且超越Numpy能夠實現更複雜、更高效的操作。而統一計算圖則是融合了靜態計算圖和動態計算圖的諸多優點,在易於使用的同時,提供高性能的優化。基於元算子開發的深度學習模型,可以被計圖實時自動優化並且運行在指定的硬體上,如CPU和GPU。
計圖(Jittor)框架的設計理念為:
(1)易用且可定製:用戶只需要數行代碼就可定義新的算子和模型,在易用的同時不喪失任何可定製性。
(2)實現與優化分離:用戶可以通過前端接口專注於實現,而實現自動被後端優化,從而提升前端代碼的可讀性以及後端優化的魯棒性和可重用性。
(3)所有都是即時的:Jittor的所有代碼都是即時編譯並且運行的,包括Jittor本身。用戶可以隨時對Jittor的所有代碼進行修改,並且動態運行。
計圖(Jittor)平臺整體架構包括四個層次:系統層、算子層、框架層和應用層,其中包含了計圖的兩個創新點:統一計算圖和元算子融合。
計圖(Jittor)框架的四層架構
計圖(Jittor)具有如下特點:
(1)在計圖中,神經網絡所需的基本算子被定義為元算子,元算子融合就是將多個元算子進行相互融合合成為更加複雜的算子,如卷積層、歸一化層等,進一步構成神經網絡和深度學習應用。
(2)元算子的反向傳播也是元算子,支持任意高階導數的計算,即使用了統一的算子傳播計算,可以使用統一的優化策略。
(3)Jittor內置元算子編譯器,可以將用戶通過元算子編寫的Python代碼動態編譯成高性能的C++代碼。並可根據硬體設備自動優化動態編譯的代碼,常見的優化編譯包括:循環重排、循環分裂、循環融合、數據打包、向量化、GPU並行等。
(4)Jittor使用統一內存管理,統一了GPU和CPU之間的內存。當深度學習模型將GPU內存資源耗盡時,將使用CPU內存補充。
(5)Jittor同時提供同步接口和異步接口,同步接口編程簡單,異步接口更加高效,兩種接口間的切換不會產生任何性能損失,讓用戶同時享受到易用性和高效率。
(6)Jittor採用和PyTorch較為類似的模塊化接口,提供了輔助轉換腳本,可以幫助用戶將PyTorch代碼轉換成Jittor模型。在參數保持和數據傳輸上,Jittor使用和PyTorch一樣的Numpy+pickle協議。所以Jittor和PyTorch的模型可以相互加載和調用。
Jittor是一個基於即時編譯和元算子的高性能深度學習框架,整個框架在即時編譯的同時,還集成了強大的Op編譯器和調優器,為您的模型生成定製化的高性能代碼。
Jittor前端語言為Python。前端使用了模塊化的設計,類似於PyTorch和Keras,後端則使用高性能語言編寫,如CUDA和C++。
計圖(Jittor)官網地址:https://cg.cs.tsinghua.edu.cn/jittor/
計圖(Jittor)官方Github地址:https://github.com/Jittor/Jittor
四、結束語
本文簡要介紹了五款國產開源深度學習軟體框架產品,他們是:百度的PaddlePaddle(飛漿),曠視科技的MegEngine(天元),華為的Mindspore,阿里的X-DeepLearning(XDL),和清華大學的Jittor(計圖)。
我們熱切期待國產深度學習軟體框架健康發展,期待它們能支撐起中國人工智慧研究與應用的可持續發展,降低外來封鎖對我國科技與經濟發展的制約和破壞作用。
2020年7月15日於寧
2020年《地學新視野》文章: