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