MindStudio
MindStudio 提供一站式AI開發(fā)環(huán)境,依靠工具與性能調優(yōu),采用插件化擴展機制,打造高效、便捷的全流程開發(fā)工具鏈。目前最新版本是5.0.RC3,發(fā)布于2022年20月,對應的昇騰社區(qū)版本:6.0.RC1。新增眾多特性,這里主要介紹兩個我非常感興趣的分析遷移和。
X2MindSpore工具新增已驗證支持的PyTorch模型49個,TensorFlow 1.x模型20個,TensorFlow 2.x模型20個。
X2MindSpore工具中TensorFlow1.x新增支持混合精度遷移,TensorFlow2.x新增支持分布式遷移。
X2MindSpore工具初步支持動態(tài)圖遷移至靜態(tài)圖模式(包括PyTorch框架下ResNet系列和BiT系列的模型)。
Profiling性能分析
Profiling支持集群場景性能數據展示(Analysis Summary界面新增集群場景解析結果、新增Cluster Iteration Analysis和Data Preparation界面)。
Profiling性能分析Merge Reports支持指定輸入目錄的PROF_XXX目錄的父目錄為任意目錄,以及輸出目錄為任意目錄。
精度比對
精度比對工具新增支持新增npy與npy文件之間的精度比對功能。
精度比對工具新增支持dump數據文件轉換為npy數據文件功能。
精度比對工具整網比對結果新增Show Model功能、散點分布圖字段說明增加點擊聯動高亮以及結果增加OpType字段。
專家系統(tǒng)工具
專家系統(tǒng)工具soc_version新增支持Ascend310P1平臺。
專家系統(tǒng)工具新增性能調優(yōu)一鍵式閉環(huán)功能。
專家系統(tǒng)工具新增知識庫模板功能。
專家系統(tǒng)工具自有知識庫配置新增支持Python App工程。
AI Core Error分析工具
AI Core Error分析工具增加remote run配置模式。
Beta特性AutoML工具
HPO任務支持fully_train,并在可視化任務界面查看fully_train結果。
HPO任務可視化任務界面新增展示已搜索到的超參值。
總的來說,MindStudio提供開發(fā)者在AI開發(fā)所需的一站式開發(fā)環(huán)境,支持模型開發(fā)、應用開發(fā)以及算子開發(fā)三個主流程中的開發(fā)任務。依靠模型可視化、算力測試、IDE本地仿真調試等功能,MindStudio能夠幫助開發(fā)者在一個工具上就能高效便捷地完成AI應用開發(fā)。MindStudio功能框架如圖下圖所示。
在異構計算架構中, 昇騰AI處理器與CPU通過PCIe總線連接在一起來協同工作:
Host:CPU所在位置稱為主機端(Host),是指與昇騰AI處理器所在硬件設備相連接的x86_64服務器、aarch64服務器或者WindowsPC,利用昇騰AI處理器提供的NN(Neural-Network)計算能力完成業(yè)務。如上圖中的開發(fā)平臺層。
Device:是指安裝了昇騰AI處理器的硬件設備,利用PCIe接口與服務器連接,為服務器提供NN計算能力。如上圖中的芯片層。
對于Ascend RC產品形態(tài),昇騰AI處理器所在硬件設備與之相連接的ARM服務器合設,統(tǒng)稱為Host。
一般來說,MindStudio支持AscendCL和MindX SDK來進行應用開發(fā)。說到二者的區(qū)別,簡單來講,MindX SDK可以視為AscendCL的封裝版,進一步簡化開發(fā)。而AscendCL是對昇騰AI處理器通用的開發(fā)語言,更接近硬件底層。這里我們介紹MindX SDK。
MindX SDK當前適用于UbuntuOS、CentOS、EulerOS、LinxOS、KylinOS等系統(tǒng)。
目前MindStudio僅支持MindX SDK中的mxManufacture和mxVision,暫不支持mxIndex。
MindX SDK運行依賴Python 3.9,請在安裝CANN前確保Python 3.9已安裝,并完成Python 3.9的環(huán)境變量配置。
MindX SDK致力于簡化異騰 AI 處理器推理業(yè)務開發(fā)過程,降低使用異騰A處理器開發(fā)的門檻。
插件化開發(fā)模式
提供豐富的插件庫
支持自定義插件開發(fā)
通過Stream配置文件,Stream manager可識別需要構建的Element,及它們的連接關系,并啟動業(yè)務流程。Stream manager對外提供接口,用于向Stream發(fā)送數據和獲取結果,令用戶實現業(yè)務對接。
Plugin表示業(yè)務流程的基礎模塊,通過Element的串接構建Stream。Buffer內部掛載解碼后的視頻/圖像數據,是Element間傳遞的數據結構,也可掛載元數據(Metadata),存放結構化數據 (如目標檢測結果) 或過程數據 (如縮放后的圖像)。
我們先來看看AI應用開發(fā)的典型推理業(yè)務流程,如下圖所示,先通過目標檢測獲取目標坐標,然后通過圖像分類識別目標屬性。流程中有兩次圖像縮放的操作,兩者主要區(qū)別在于設置的縮放寬高參數不同。
下面,我們看看基于MindStudio完成上述流程是怎么做的。使用MindStudio開發(fā)和運行推理業(yè)務步驟如圖所示,其中“深入開發(fā)”為SDK高級特性,用戶可以視情況選擇執(zhí)行。
確定業(yè)務流程。
根據業(yè)務的功能如目標檢測、圖像分類、屬性識別等,將業(yè)務流程進行模塊化。
尋找合適插件。
首先根據已有SDK插件的功能描述和規(guī)格限制來匹配業(yè)務功能。當SDK提供的插件無法滿足功能需求時,用戶可以開發(fā)自定義插件(可參見插件開發(fā)、《mxManufacture 用戶指南》或《mxVision 用戶指南》的“已有插件介紹”與“插件開發(fā)介紹”章節(jié)。)。
準備推理模型文件與數據集。
根據插件的實際應用場景,添加用于推理的模型文件和數據集。(加載的模型路徑中不能有空格。)
(1) 轉換模型。
在添加模型文件前,請參見模型轉換將第三方模型轉換為適配昇騰AI處理器的離線模型(*.om文件)。SDK樣例工程的模型轉換請參見SDK樣例工程使用指導中的步驟4至6。模型轉換具體指導與相關參數設置請參見《ATC工具使用指南》。
(2) 添加模型文件。
請用戶將準備好的模型文件上傳到應用工程中用戶自定義目錄下。
(3) 準備推理數據。
準備推理所用數據,并上傳到應用工程文件目錄下。
流程編排。
請參見可視化流程編排、《mxManufacture 用戶指南》或《mxVision 用戶指南》的“流程編排介紹”與“數據流程介紹”章節(jié)。
業(yè)務集成。
編寫C++程序或Python程序,調用業(yè)務流管理的API(MxStreamManager),先進行初始化,再加載業(yè)務流配置文件(*.pipeline),然后根據stream配置文件中的StreamName往指定Stream獲取輸出數據,最后銷毀Stream。
可用API請參見《mxManufacture 用戶指南》或《mxVision 用戶指南》的“API參考(C++)”章節(jié)與“API參考(Python)”章節(jié)。
編譯與運行應用。
請參見編譯與運行應用工程。
說明
MindX SDK昇騰應用工程支持Profiling功能,具體可參見性能分析。
在開發(fā)應用前,先創(chuàng)建目錄存放代碼文件、編譯腳本測試圖片數據、模型文件等。
Mindstudio提供工程模板,包含推薦的工程目錄結構,Cmake工程模板等。
根據業(yè)務的功能如目標檢測、圖像分類、屬性識別等,將業(yè)務流程進行模塊化。
首先根據已有插件功能描述和規(guī)格限制來匹配業(yè)務功能,當已有插件無法滿足功能需求時,用戶可以開發(fā)自定義插件。
對于開源框架的網絡模型,不能直接在異騰AI處理器上做推理,需要先使用ATC (Ascend TensorCompiler)工具將開源框架的網絡模型轉換為適配異騰AI處理器的離線模型 (*.om文件)。
Mindstudio提供圖形化界面,引導用戶快速完成模型轉換。同時提供模型可視化能力,幫助用戶了解模型內部結構。
當現有插件無法滿足需求時,開發(fā)人員還可以自定義插件,靈活擴展原生MindX SDK的能力。
MindStudio提供MindX SDK插件模板,開發(fā)者可聚焦于業(yè)務邏輯實現,同時支持動態(tài)插件掃描功能新增插件直接加入插件庫中用于流程編排。
不同于傳統(tǒng)代碼流程式開發(fā)模式MindX SDK應用開發(fā),采用模塊化設計理念,將業(yè)務流程中的各個功能單元封裝成獨立插件,通過插件串接和參數配置,形成流程編排Pipeline配置文件,可快速構建推理業(yè)務。
MindStudio提供可視化流程編排通過“拖拉拽”和界面配置即可完成主體業(yè)務流程開發(fā),配合少量的代碼,拉起流管理器,加載上述配置文件,完成業(yè)務執(zhí)行。
對于開源框架的網絡模型,不能直接在異騰A處理器上做推理,需要先使用ATC (Ascend Tensor Compiler) 工具將開源框架的網絡模型轉換為適配異騰AI處理器的離線模型 (*.om文件)。
MindStudio支持C/C++、Python語言,除基礎的語法高亮、自動補產外Mindstudio支持編譯、本地/遠程 運行/調試能力。
功能描述: 該樣例主要是使用MindX SDK實現現實場景下的情緒識別功能。
https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/35480513-5d01-4531-ad83-a51ee10309c8
2.?基于face mask detection的目標檢測應用
功能描述: 該樣例主要是使用MindX SDK實現識別圖片中的人是否佩戴口罩的功能。
https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/b6eea89b-971a-40f3-b0f7-3ad11c40959a