昇騰AI軟件棧可以分為神經(jīng)網(wǎng)絡(luò)相關(guān)軟件模塊、工具鏈以及其它軟件模塊。
1、神經(jīng)網(wǎng)絡(luò)軟件主要包含了流程編排器(Matrix),框架管理器(Framework),運行管理器(Runtime)、數(shù)字視覺預處理模塊(Digital Vision Pre-Processing,DVPP)、張量加速引擎(Tensor Boost Engine,TBE)以及任務(wù)調(diào)度器(Task Scheduler,TS)等功能模塊,主要用來完成神經(jīng)網(wǎng)絡(luò)模型的生成、加載和執(zhí)行等功能。
2、工具鏈主要為神經(jīng)網(wǎng)絡(luò)實現(xiàn)過程提供了輔助便利。
如圖所示,這些主要組成部分在軟件棧中功能和作用相互依賴,承載著數(shù)據(jù)流、計算流和控制流。昇騰AI軟件棧主要分為4個層次和一個輔助工具鏈。4個層次分別為L3應用使能層、L2執(zhí)行框架層、L1芯片使能層和L0計算資源層。工具鏈主要提供了程序開發(fā)、編譯調(diào)測、應用程序流程編排、日志管理和性能分析等輔助能力。
L3應用使能層
L3應用使能層是應用級封裝,主要是面向特定的應用領(lǐng)域,提供不同的處理算法。應用使能層包含計算機視覺引擎、語言文字引擎以及通用業(yè)務(wù)執(zhí)行引擎等,其中:
1、計算機視覺引擎面向計算機視覺領(lǐng)域提供一些視頻或圖像處理的算法封裝,專門用來處理計算機視覺領(lǐng)域的算法和應用。
2、語言文字引擎面向語音及其他領(lǐng)域,提供一些語音、文本等數(shù)據(jù)的基礎(chǔ)處理算法封裝等,可以根據(jù)具體應用場景提供語言文字處理功能。
3、通用業(yè)務(wù)執(zhí)行引擎提供通用的神經(jīng)網(wǎng)絡(luò)推理能力。
在通用業(yè)務(wù)需求上,基于流程編排器定義對應的計算流程,然后由通用業(yè)務(wù)執(zhí)行引擎進行具體的功能實現(xiàn)。L3應用使能層為各領(lǐng)域提供具有計算和處理能力的引擎,并可以直接使用下一層L2執(zhí)行框架提供的框架調(diào)度能力,通過通用框架來生成相應的神經(jīng)網(wǎng)絡(luò)而實現(xiàn)具體的引擎功能。
L2執(zhí)行框架層
L2執(zhí)行框架層是框架調(diào)用能力和離線模型生成能力的封裝,包含了框架管理器以及流程編排器。
對于昇騰AI處理器,L2執(zhí)行框架提供了神經(jīng)網(wǎng)絡(luò)的離線生成和執(zhí)行能力,可以脫離深度學習框架(如Caffe、TensorFlow等)使得離線模型(Offline Model,OM)具有同樣的能力(主要是推理能力)??蚣芄芾砥髦邪穗x線模型生成器(Offline Model Generator, OMG)、離線模型執(zhí)行器(Offline Model Executor, OME)和離線模型推理接口,支持模型的生成、加載、卸載和推理計算執(zhí)行。
離線模型生成器主要負責將Caffe或TensorFlow框架下已經(jīng)生成的模型文件和權(quán)重文件轉(zhuǎn)換成離線模型文件,并可以在昇騰AI處理器上獨立執(zhí)行。離線模型執(zhí)行器負責加載和卸載離線模型,并將加載成功的模型文件轉(zhuǎn)換為可執(zhí)行在昇騰AI處理器上的指令序列,完成執(zhí)行前的程序編譯工作。這些離線模型的加載和執(zhí)行都需要流程編排器進行統(tǒng)籌。流程編排器向開發(fā)者提供用于深度學習計算的開發(fā)平臺,包含計算資源、運行框架以及相關(guān)配套工具等,讓開發(fā)者可以便捷高效的編寫在特定硬件設(shè)備上運行的人工智能應用程序,負責對模型的生成、加載和運算的調(diào)度。在L2層將神經(jīng)網(wǎng)絡(luò)的原始模型轉(zhuǎn)化成最終可以執(zhí)行在昇騰AI處理器上運行的離線模型后,離線模型執(zhí)行器將離線模型傳送給L1芯片使能層進行任務(wù)分配。
L1芯片使能層
L1芯片使能層是離線模型通向昇騰AI處理器的橋梁。在收到L2執(zhí)行框架生成的離線模型后,針對不同的計算任務(wù),L1芯片使能層主要通過加速庫(Library)給離線模型計算提供加速功能。L1芯片使能層是最接近底層計算資源的一層,負責給硬件輸出算子層面的任務(wù)。L1芯片使能層主要包含數(shù)字視覺預處理模塊、張量加速引擎、運行管理器、驅(qū)動以及任務(wù)調(diào)度器。
在L1芯片使能層中,以芯片的張量加速引擎為核心,支持離線模型的加速計算。張量加速引擎中包含了標準算子加速庫,這些算子經(jīng)過優(yōu)化后具有良好性能。算子在執(zhí)行過程中與位于算子加速庫上層的運行管理器進行交互,同時運行管理器與L2執(zhí)行框架層進行通信,提供標準算子加速庫接口給L2執(zhí)行框架層調(diào)用,讓具體網(wǎng)絡(luò)模型能找到優(yōu)化后的、可執(zhí)行的、可加速的算子進行功能上的最優(yōu)實現(xiàn)。如果L1芯片使能層的標準算子加速庫中無L2執(zhí)行框架層所需要的算子,這時可以通過張量加速引擎編寫新的自定義算子來支持L2執(zhí)行框架層的需要,因此張量加速引擎通過提供標準算子庫和自定義算子的能力為L2執(zhí)行框架層提供了功能完備性的算子。
在張量加速引擎下面是任務(wù)調(diào)度器,根據(jù)相應的算子生成具體的計算核函數(shù)后,任務(wù)調(diào)度器會根據(jù)具體任務(wù)類型處理和分發(fā)相應的計算核函數(shù)到AI CPU或者AI Core上,通過驅(qū)動激活硬件執(zhí)行。任務(wù)調(diào)度器本身運行在一個專屬的CPU核上。
數(shù)字視覺預處理模塊是一個面向圖像視頻領(lǐng)域的多功能封裝體。在遇到需要進行常見圖像或視頻預處理的場景時,該模塊為上層提供了使用底層專用硬件的各種數(shù)據(jù)預處理能力。
L0計算資源層
L0計算資源層是昇騰AI處理器的硬件算力基礎(chǔ)。在L1芯片使能層完成算子對應任務(wù)的分發(fā)后,具體計算任務(wù)的執(zhí)行開始由L0計算資源層啟動。L0計算資源層包含了操作系統(tǒng)、AI CPU、AI Core和DVPP專用硬件模塊。
AI Core是昇騰AI處理器的算力核心,主要完成神經(jīng)網(wǎng)絡(luò)的矩陣相關(guān)計算。而AI CPU完成控制算子、標量和向量等通用計算。如果輸入數(shù)據(jù)需要進行預處理操作,DVPP專用硬件模塊會被激活并專門用來進行圖像和視頻數(shù)據(jù)的預處理執(zhí)行,在特定場景下為AI Core提供滿足計算需求的數(shù)據(jù)格式。AI Core主要負責大算力的計算任務(wù),AI CPU負責較為復雜的計算和執(zhí)行控制功能,DVPP硬件完成數(shù)據(jù)預處理功能,而操作系統(tǒng)的作用是使得三者緊密輔助,組成一個完善的硬件系統(tǒng),為昇騰AI處理器的深度神經(jīng)網(wǎng)絡(luò)計算提供了執(zhí)行上的保障。
工具鏈
工具鏈是一套支持昇騰AI處理器,并可以方便程序員進行開發(fā)的工具平臺,提供了自定義算子的開發(fā)、調(diào)試和網(wǎng)絡(luò)移植、優(yōu)化及分析功能的支撐。另外在面向程序員的編程界面提供了一套桌面化的編程服務(wù),極大的降低了深度神經(jīng)網(wǎng)絡(luò)相關(guān)應用程序的開發(fā)門檻。
工具鏈中包括工程管理、工程編譯、流程編排、離線模型轉(zhuǎn)換、算子比對、日志管理、性能分析工具、自定義算子等。因此,工具鏈為在此平臺上的應用開發(fā)和執(zhí)行提供了多層次和多功能的便捷服務(wù)。