【云駐共創】收藏好,程序員必逛的那些網站
1566
2025-03-31
一、昇騰全棧解決方案
1.1. 昇騰整體介紹
當前中國的人工智能主要聚焦于應用,基礎軟硬件相對薄弱。昇騰的目標就是打造最強的軟硬件的基礎平臺,賦能千行百業到人工智能無所不及。
接下來會介紹如何通過 MindStudio 全流程工具鏈串起一條從上到下的應用流,如何從訓練模型、開發模型到應用模型和使用 SDK,快速的走通一個應用、一個分類目標檢測的應用。
2019 年 8 月 29 日,科技部宣布將依托華為建設基礎軟硬件國家新一代人工智能開放創新平臺。
昇騰的全棧解決方案:
底層從推理到訓練,全場景的硬件產品
上層 CANN 軟件平臺,通過異構計算架構平臺 CANN 能充分釋放昇騰產品強大的澎湃的驗算力,它里面做了很多圖結構的編譯優化
再上層是 MindSpore AI 框架,他是一個支持邊端云協同的 AI 訓練推理框架
最上層提供了數據中心、智能邊緣的一些組件、做了極致優化的模型優化、還有各個行業的 SDK,ModelArts 提供了數據標注、模型部署等等很多一站式的方案
全流程的開發工具鏈,和昇騰開發場景相關的一個工具鏈,它從模型開發、算子開發、應用開發到端到端開發都可使用起來。
目標:硬件開放,軟件開發,使能伙伴。
上面列出了推理訓練的產品,這些硬件會集成開放給合作伙伴,進入他們的解決方案和服務器中,這就是所說的硬件開發,打造算力平臺基石。
1.2. 極致性能 CANN
強大的異構計算平臺,能夠充分的釋放強大的算力,提供了 AscendCL 統一編程接口,通過 CANN 的優化做到極致性能。
AI 框架:華為推出的 MindSpore 框架,還有業界比較具有代表的 AI 框架
操作系統:支持 14+ OS
設備形態:支持端、邊、云的各種設備
通過極致的優化,昇騰在訓練場景性能持續領先,通過第一個柱狀圖的紅色柱子,可以看出 Huawei Atlas 800 在各個模型上的吞吐量都是最強的;昇騰在推理場景性能全面占優,通過第二個柱狀圖的紅色柱子,可以看出Huawei Atlas 3001 就可以實現 80 路高清視頻同時分析。這些都得益于 CANN 的極致優化。
1.3. 全場景 AI 框架 MindSpore
全場景 AI 框架 MindSpore,構建端邊云全場景生態。它能做到全自動并行,不像現在很多模型都很大、很多參數甚至多達 175 億個參數,如果在這種情況下,不并行執行,效率會很低。支持全場景協同,端邊云協同打通,非常適合于昇騰產品。同時也做到全流程極簡。
MindSpore 發展勢頭也非常好,開源貢獻者 1500+,日均下載量 600+,有良好的商業生態,同時在學術上也不僅和高校合作還發表相關論文也眾籌 200+ 個模型。
1.4. 使能 MindX
MindX歸納為 2 + 1 +
2:深度學習使能 MindX DL,數據中心設備與計算資源統一管理與調度;智能邊緣使能 MindX Edge,輕量化的邊緣計算資源統一管理運維。通過這些組件屏蔽一些配置和開發,使上層調用更加簡潔,做到極簡易用。
1:優化模型庫 ModelZoo,預訓練高性能模型,總共推出 60+ 的模型。
X:行業 AI 應用軟件開發套件,比如,mxVision,行業 SDK mxManufacture,AI 超算、交易、醫療、金融、電力……。用盡量少的代碼,打通一個全流程。
1.5. MindStudio 2.0 支撐全流程開發
它能支持極簡、易用的開發,只要選擇模型,提供數據,提供業務流程,一個簡易的基于 SDK 的全流程只需要 140 行代碼,如果不基于 SDK 而是自行開發模型則需要 1.5 萬行以上的代碼。
在實際的工廠生產線上,質檢的準確率高達 99.9%,使人工質工作量減低超過 60%。
1.6. 昇騰開發者社區
昇騰開發者社區上不僅有各種需要的工具、框架、組件,都可以直接下載,還有很多其他的資源,比如,樣例、模型,還有課程和教學資源,還可以去論壇發表意見、想法。
二、MindStudio 整體介紹
2.1. 面向昇騰芯片的全棧開發工具鏈
MindStudio 是一套基于 IntelliJ 框架的開發工具平臺,提供了應用開發、調試、模型轉換功能,同時還提供了網絡移植、優化和分析功能,為用戶開發應用程序帶來了極大的便利。針對計算子開發、提供了全套的算子開發、調優能力;針對網絡模型開發,集成了離線模型轉換工具、模型量化工具、模型精度對比工具、日志分析工具;針對計算引擎,預制了典型的分類模型、檢測網絡;針對應用開發,集成了各種工具,如分析器和便器,為開發提供了圖形化的集成開發環境。
2.2.昇騰 AI 開發
應用開發場景的流程:創建應用工程,代碼開發,模型集成,應用調試,應用性能調優,質量保證,發布應用。
模型調優場景:創建算法工程,模型訓練,生成模型,模型轉換,模型算子精度比對,模型整網調優,模型評估。
算子開發場景:創建算子工程,算子開發,算子調試,算子仿真運行,算子性能調優,算子上板運行,算子質量評估。
2.3. MindStudio 架構
Mind Studio是一套基于IntelliJ框架的開發工具鏈平臺,提供了應用開發、調試、模型轉換功能,同時還提供了網絡移植、優化和分析功能,為用戶開發應用程序帶來了極大的便利。
功能簡介
針對算子開發,Mind Studio提供了全套的算子開發、調優能力。通過Mind Studio提供的工具鏈也可以進行第三方算子開發,降低了算子開發的門檻,并提高算子開發及調試調優的效率,有效提升了產品競爭力。
針對網絡模型的開發,Mind Studio集成了離線模型轉換工具、模型量化工具、模型精度比對工具、模型運行性能分析工具、日志分析工具,提升了網絡模型移植、分析和優化的效率。
針對計算引擎開發,Mind Studio預置了典型的分類網絡、檢測網絡等計算引擎代碼,降低了開發者的技術門檻,加快了開發者對AI算法引擎的編寫及移植效率。
針對應用開發,Mind Studio集成了各種工具如分析器(Profiler)和編譯器(Compiler)等,為開發者提供了圖形化的集成開發環境,通過Mind Studio能夠進行工程管理、編譯、調試、性能分析等全流程開發,能夠很大程度提高開發效率。
2.3. MindStudio 安裝流程
Mind Studio只能安裝在Ubuntu服務器上,可以在Ubuntu服務器上使用原生桌面自帶的終端gnome-terminal進行安裝,也可以在Windows服務器上通過SSH登錄到Ubuntu服務器進行安裝,因為Mind Studio是一款GUI程序,所以在Windows服務器上通過SSH登錄到Ubuntu服務器進行安裝時,需要使用集成了X server的SSH終端(比如mobaxterm,該工具版本需要為v20.2及以上)。
Mind Studio所在的環境為開發環境,開發人員可以進行普通的工程管理、代碼編寫、編譯、模型轉換;實際安裝昇騰AI處理器的環境為運行環境,實際運行用戶開發的應用。如果需要在真實的昇騰AI處理器上運行開發的工程,則需要將Mind Studio連接到主機,并通過主機和設備上的工具后臺服務模塊進行配合,完成所有開發工程的運行、日志和性能分析等功能。
Toolkit:開發套件包,為開發者提供基于昇騰AI處理器的相關算法開發工具包,旨在幫助開發者進行快速、高效的人工智能算法開發。開發者可以將開發工具包安裝到Mind Studio上,使用Mind Studio開發工具進行算法快速開發。
2.4. MindStudio 部署形態
部署形態可分為
共部署形態
分部署形態
2.5. MindStudio 軟件包與環境準備
硬件:內存:最小4GB,推薦8GB,磁盤空間:最小6GB
操作系統:版本:18.04 64位操作系統
Python:3.7.5
OpenJDK:openjdk-8
cmake:3.5.1+
gcc:7.4.0
g++:7.4.0
protobuf:3.11.3+
系統語言:en_US.U
2.6. MindStudio CANN-Toolkit 包管理
ADK Manager為用戶提供了在不重裝Mind Studio的前提下,切換以及更新ADK版本的功能。使用該功能之前,請確保已經完成Mind Studio以及ADK的安裝。
在Mind Studio工程界面菜單欄依次選擇“File > Settings...?> Appearance&Behavior?> System Settings > ADK”,彈出ADK Manager界面。
在Mind Studio工程界面菜單欄依次選擇“Tools > ADK Manager”,彈出ADK Manager界面。
在Mind Studio快捷工具欄右上角,單擊如下圖標進入ADK Manager界面。
在Mind Studio歡迎頁面右下角,依次選擇“Configure > ADK Manager?”,彈出ADK Manager界面。
三、AI 應用開發
3.1. MindStudio 的使用-工具界面
Create new project:創建新工程,創建后工程保存在“$HOME/AscendProjects”目錄。
Open project:打開已有工程。
Checkout from version control:從git等版本控制工具導出工程。
3.2. MindStudio 的使用-應用工程(1)
應用工程開發流程
新建 Ascend App 工程
代碼開發、模型、數據準備
編譯配置與工程編譯
運行配置與工程運行
借助 dump/profiling 功能性能調優
3.3. MindStudio 的使用-應用工程(2)
在New Project窗口中,選擇Ascend App,配置工程相關參數,單擊Next。
在New Project窗口中,選擇工程類型。
Create Empty Project:創建一個僅包括開發框架的工程,不含具體的代碼邏輯。
Classification(resnet50) :創建一個以acl_resnet50樣例為模板的工程。
3.4. MindStudio 的使用-應用工程(3)
代碼開發、模型/數據準備
開發應用代碼
模型準備,下載模型數據、轉換模型、添加模型
數據準備,打開并執行
3.1. MindStudio 的使用-應用工程(4)
編譯配置與工程編譯
編譯配置,通過菜單欄“Build->Edit Build Configuration”或者點擊工具欄的“工具圖標”,編輯編譯配置。
編譯工程,通過菜單欄“Build->Build/Rebuild->具體配置”或者點擊工具欄的“工具圖標”。
3.5. MindStudio 的使用-應用工程(5)
運行配置與工程運行
運行配置,菜單欄“Run->Edit Configuration”,編輯運行配置。
工程運行,菜單欄“Run->Run ...”。
3.6. MindStudio 的使用-應用工程(6)
借助 dump 和 profiling 功能調優
Dump configuration,選擇“Ascend > Dump Configuration”菜單。
Run,設置dump完成后,分別單擊MindStudio界面“Build”和“Run”菜單,重新編譯和運行應用工程。
3.7. MindStudio 的使用-Profiling 工具(1)
MindStudio針對昇騰AI處理器提供高效、易用的系統化性能分析工具Profiling,便于快速識別產品的關鍵性能瓶頸并提出針對性能優化的建議,最終實現產品的極致性能。Profiling提供針對APP工程的硬件和軟件性能數據采集、分析、匯總展示。
通過以下操作方法啟動Profiling:
選擇已編譯完成的工程。
單擊菜單欄“Run > Run...”,在彈出窗口中選擇“Edit Configurations...”,彈出Profiling設置窗口。
3.8. MindStudio 的使用-Profiling 工具(2)
Profiling執行成功后,通過右鍵單擊工程目錄,選擇“View Profiling Result”菜單,查看Profiling數據結果。在Profiling運行完成后,以時序圖的呈現方式為用戶提供全流程推理過程中的運行情況,按照調度流程ACL> GE > Runtime > Ascend Compute來呈現整體的運行狀況。
3.9. MindStudio 的使用-Profiling 工具(3)
Summary View視圖,支持Summary View視圖展示,呈現APP工程信息、AI Core Op Statistic信息、算子Memory Bandwidth信息與AI Core Utilization信息。
3.10. MindStudio 的使用-日志工具
MindStudio為昇騰AI處理器提供覆蓋全系統的日志收集與日志分析解決方案,提升運行時算法問題定位效率。MindStudio提供全系統統一的日志格式,并以圖形化的形式提供跨平臺日志可視化分析能力及運行時診斷能力,提升日志分析系統的易用性。
通過Log工具,您可以進行以下操作:
日志管理
設置日志級別
在MindStudio窗口底部單擊“+Log”標簽,顯示“Log”窗口,可以通過該窗口查看日志信息。
四、模型調優
4.1. MindStudio 的使用-模型轉換(1)
用戶使用Caffe/TensorFlow等框架訓練好的模型,可通過ATC工具將其轉換為昇騰AI處理器支持的離線模型,模型轉換過程中可以實現算子調度的優化、權重數據重排、內存使用優化等,可以脫離設備完成模型的預處理。
可以通過如下兩種方式進入模型轉換界面:
在菜單欄選擇“Ascend > Model Converter”。
在菜單欄選擇“View > Appearance > Toolbar” ,菜單欄下方會出現一行工具欄,選擇。
4.2. MindStudio 的使用-模型轉換(2)
配置輸入節點(Input Node)。
某些情況下,用戶想要查看某層算子參數是否合適,則需要將該層算子的參數輸出,即可以通過單擊“Select”按鈕,在彈出網絡拓撲結構中將所需層的算子標記為“Select”,然后在“Output Nodes”參數下方選中想要輸出的算子,模型轉換后,在相應.om模型文件可以看到該算子的輸出直接作為模型的輸出。
4.3. MindStudio 的使用-模型轉換(3)
數據預處理是昇騰AI處理器提供的硬件圖像預處理模塊,包括色域轉換,圖像歸一化(減均值/乘系數)和摳圖(指定摳圖起始點,摳出神經網絡需要大小的圖片)等功能。
只有當“Model Information”頁簽,“Input Nodes”參數中,輸入節點的“Type”有配置為“Uint8”類型,“Data Pre-Processing”頁簽才可以配置該節點的數據預處理功能。如果模型有多個輸入,每個輸入節點都可以獲取shape信息中的寬和高,并且“Input Nodes”參數中每個輸入節點的“Type”都配置為“Uint8”,則“Data Pre-Processing”頁簽,可以配置多個節點的數據預處理功能。
4.4. MindStudio 的使用-模型可視化(1)
對于已經轉換成功的.om模型文件,可以在MindStudio界面呈現其網絡拓撲結構,并可以查看模型所使用的算子。依次單擊菜單欄 “Ascend > Model Visualizer”,或在工具欄選擇。
4.5. MindStudio 的使用-模型可視化(2)
查看算子信息
單擊某層算子,該層算子會出現綠色選中框,右側區域會展示該算子的詳細信息,包括算子名稱、算子輸入、輸出等信息。單擊展開算子的所有參數信息,用戶也可以逐層單擊相關參數左側的展開按鈕,查看參數的詳細信息;單擊折疊所有的算子信息。
右下角會展示該網絡模型的整體結構,包括左側展示框中的算子在整體網絡結構中的位置,即圖中的藍色框選擇位置。左側展示區域下拉,右側整體區域中的藍區選擇框隨之往下移動。左側展示框放大和縮小,右側藍色框隨之縮小和放大。
查看算子輸出維度和shape信息
每一層算子輸出的維度和shape信息,將鼠標移至某個shape上面,在其上面會顯示算子輸出的維度信息。
搜索算子
在界面右下方會彈出搜索區域。搜索區域中給出了該模型所用到的所有算子,您可以在搜索區域對話框中輸入算子名稱,下方搜索區域會列出相關的算子。選擇其中一個算子,左側網絡拓撲結構中相應算子會顯示綠色選中框,右上方會展示該算子的詳細信息,包括算子名稱、算子輸入、輸出等信息。
搜索算子內部信息
選中某層算子,單擊右上方的展開按鈕,右側區域框會展示該層所包括所有算子的信息,單擊或在右側區域使用“Ctrl+F”快捷鍵,彈出搜索界面。其中,Case sensitive:大小寫敏感;Wrap Search:循環搜索;Backward:反向搜索。
4.6. MindStudio 的使用-精度對比
在模型轉換過程中對模型進行了優化,包括算子消除、算子融合、算子拆分,可能會造成自有實現的算子運算結果與業界標準算子(如Caffe、TensorFlow、ONNX)運算結果存在偏差,此時需要提供工具比對兩者之間的差距,幫助開發人員快速解決算子精度問題。
精度比對工具提供比對華為自有模型算子的運算結果與Caffe、TensorFlow、ONNX標準算子的運算結果,以便確認誤差發生的算子,目前提供以下比對項目:余弦相似度、最大絕對誤差、累積相對誤差、歐氏相對距離、KLD散度、標準差的算法比對。
4.6. MindStudio 的使用-模型評估報告(推理場景)
進行模型轉換時,如果選擇的模型文件中包含不支持算子,就會轉換模型失敗,并生成模型評估報告。
4.7. MindStudio 的使用-訓練工程(1)
在MindStudio歡迎界面中單擊“Create new project”,進入創建工程界面,在左側導航欄選擇“Ascend Training”。
4.8. MindStudio 的使用-訓練工程(2)
單擊應用工程界面“Run > Edit Configurations...”,進入運行配置界面。在運行配置界面上點擊“+?”然后選擇“Ascend Training”進入運行參數配置界面。“Run Mode”選擇“Remote Run”或“Local Run”。
單擊應用工程界面“Run >Run”,執行訓練。訓練執行過程:連接遠端訓練機器 -> 打包訓練工程發布到遠端訓練機器 -> 啟動訓練工程執行。執行訓練后,在應用工程界面底部“Run”窗口顯示運行實時信息。如果訓練成功,打印訓練成功信息。如果訓練失敗,在工程根目錄下的out/reports下生成訓練工程的整網支持度報告network_analysis_timestamp.report。
4.9. MindStudio 的使用-腳本轉換
MindConverter是一款用于將PyTorch腳本文件、TensorFlow框架模型文件轉換到MindSpore腳本的工具。結合轉換報告的信息,用戶只需對轉換后的腳本進行微小的改動,即可快速將PyTorch腳本文件、TensorFlow框架的模型遷移到MindSpore。
五、AI算子
5.1. MindStudio 的使用-自定義算子開發(1)
在MindStudio歡迎界面中單擊“Create new project”,進入創建工程界面。在左側導航欄選擇“Ascend Operator”,在右側配置算子工程信息。單擊“Next”,在彈出的頁面中配置算子相關信息。
5.2. MindStudio 的使用-自定義算子開發(2)
通過調用TBE DSL接口,在算子工程下的“tbe/impl/add.py”文件中進行Add算子的實現,包括算子函數定義、算子入參校驗、compute過程實現及調度與編譯。
5.3. MindStudio 的使用-自定義算子開發(3)
進入“op_proto/”目錄,編寫IR實現文件“xxx.h”和“xxx.cpp”,將算子注冊到算子原型庫中。網絡運行時,GE會調用算子原型庫的校驗接口進行基本參數的校驗,校驗通過后,會根據原型庫中的推導函數推導每個節點的輸出shape與dtype,進行輸出tensor的靜態內存的分配。
需要通過配置算子信息文件,將算子的相關信息注冊到算子信息庫中。算子信息庫主要體現算子在昇騰AI處理器上物理實現的限制,包括算子的輸入輸出dtype、format以及輸入shape信息。網絡運行時,FE會根據算子信息庫中的算子信息做基本校驗,判斷是否需要為算子插入合適的轉換節點,并根據算子信息庫中信息找到對應的算子實現文件進行編譯,生成算子二進制文件進行執行。
5.4. MindStudio 的使用-自定義算子開發(4)
以上為算子工程目錄結構和主要文件。
5.5. MindStudio 的使用-自定義算子開發(5)
上圖展示了設置 TBE Python 庫的步驟。
5.6. MindStudio 的使用-UT 測試
MindStudio提供了基于gtest框架的新的UT測試方案,簡化了開發者開發UT測試用例的復雜度。
UT(Unit Test:單元測試)是開發人員進行單算子運行驗證的手段之一,主要目的是:
測試算子代碼的正確性,驗證輸入輸出結果與設計的一致性。
UT側重于保證算子程序能夠跑通,選取的場景組合應能覆蓋算子代碼的所有分支(一般來說覆蓋率要達到100%),從而降低不同場景下算子代碼的編譯失敗率。
5.7. MindStudio 的使用-ST 測試
MindStudio提供了MindSpore框架的算子ST(System Test)測試框架,可以自動生成測試用例,在真實的硬件環境中,驗證算子功能的正確性和計算結果準確性,包括:
根據算子實現和算子信息文件(*_impl.py)生成算子測試用例定義文件(*.json),作為算子ST測試用例的輸入。
根據算子測試用例定義文件生成ST測試數據及測試用例執行代碼,在硬件環境上執行算子測試用例。
5.8. MindStudio 的使用-算子部署
在彈出的界面中選擇“Deploy Locally”,并單擊“Deploy”按鈕。
5.9. MindStudio 的實踐-云端實驗室
在云端實驗室提供了一套完成的在線實驗環境,方便大家學習和體驗。
六、總結
MindStudio工具中的主要幾個功能特性,工程管理,SSH管理,應用開發,自定義算子開發,離線模型轉換,日志管理,性能分析,設備管理,精度比對,開發工具包的安裝與管理。提供了應用開發、調試、模型轉換功能,同時還提供了網絡移植、優化和分析功能,為用戶開發應用程序帶來了極大的便利。
本文整理自華為云社區【內容共創】活動第12期。
查看活動詳情:https://bbs.huaweicloud.com/blogs/325315
相關任務詳情:任務24. 昇騰全棧與MindStudio全流程開發工具鏈
AI MindSpore
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。