日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

超轻量AI引擎MindSpore Lite

發布時間:2023/11/28 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超轻量AI引擎MindSpore Lite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

超輕量AI引擎MindSpore Lite
揭秘一下端上的AI引擎:MindSpore Lite。
MindSpore Lite是MindSpore全場景AI框架的端側引擎,目前MindSpore Lite作為華為HMS Core機器學習服務的推理引擎底座,已為全球1000+應用提供推理引擎服務,日均調用量超過3億,同時在各類手機、穿戴感知、智慧屏等設備的AI特性上得到了廣泛應用。
MindSpore Lite 1.0.0 已經開源,開源之后,其接口易用性、算子性能與完備度、第三方模型的廣泛支持等方面,得到了眾多手機應用開發者的廣泛認可。最新的MindSpore Lite 1.1.0 在算子性能優化、模型小型化、加速庫自動裁剪工具、端側模型訓練、語音類模型支持、Java接口開放、模型可視化等方面進行了全面升級,升級后的版本更輕、更快、更易用。接下來看一下 MindSpore Lite 1.1.0 。
獲取1.1.0版本MindSpore Lite:https://www.mindspore.cn/tutorial/lite/zh-CN/r1.1/use/downloads.html

  1. 算子庫優化與擴展
    1.1 性能優化
    推理性能優化依然是本次版本的重頭戲,除了持續的ARM CPU(FP16/FP32/INT8)性能優化,ARM GPU和X86_64的優化也是本次的亮點,GPU方面除了傳統的算子優化,還加入了在線融合、AutoTuning等技術,使得ARM GPU推理性能大幅提升;同時為了更好的支持PC側推理,在X86_64算子方面做了大量匯編層面的優化;經過大量模型的實測,MindSpore Lite 1.1.0 在推理性能方面在業界各類框架中極具競爭力。
    1.1.1 ARM CPU優化
    從引入減少計算量的更優算法,到盡可能減少硬件訪存從而提高指令吞吐量,MindSpore Lite 的CPU算子性能大幅提升。使用TF Hub官網上100+端側預置模型進行了推理時延對比測試,測試結果顯示在Mate30/P30等高端機型上MindSpore Lite已全面超越TFLite,在P20等中低端機型上推理性能優于TFLite的占比也達到97%。
    ? FP16推理性能
    MindSpore Lite全面支持ARMv8.2的FP16推理,推理時延基本達到了FP32類型推理的二分之一,在推理時延大幅降低的同時精度滿足業務要求;FP16推理方案已經在華為HMS MLKit和華為手機預置的各類AI服務中普遍應用。
    由于TF Lite不支持FP16推理,所以在FP16推理性能對比測試環節中只選擇了阿里MNN最新的1.1版本,從測試結果看MindSpore Lite在FP16推理性能上展現出一定的優勢。

華為Mate30(麒麟990)上網絡整體時延對比情況

華為Mate30(麒麟990)上FP16推理時延對比

三星Note20(驍龍865+)上FP16推理時延對比
? Int8量化模型推理性能
對于量化算子,當前版本MindSpore Lite實現了在算法層面加入如Convolution Kernel為3x3的Winograd優化算法(目前主要針對非ARMv8.2機型),在支持ARMv8.2的高端機上使用SDOT指令對MatMul、Fully Connection、Convolution等算子進行優化,以及提高底層緩存命中率的一系列優化策略,使得MindSpore Lite量化推理性能得到大幅提升,相較于FP16推理有40%+的性能提升。選擇了TF Lite最新2.4版本和MNN最新的1.1版本進行推理性能對比測試,使用的模型為TF Hub官方預置的量化模型(測試過程中發現MNN存在大量量化模型無法轉換問題,甚至TF Lite對自家模型也存在轉換問題),從測試結果看MindSpore Lite對量化模型無論在支持度還是推理性能方面,都較其他框架有明顯優勢。

華為Mate30(麒麟990)上量化網絡整體時延對比情況
ARMv8.2機型測試

三星Note20上量化模型時延對比
ARMv8機型測試
華為P20上量化模型時延對比
? FP32推理性能
同時為了確保在低端CPU上使用MindSpore Lite推理時,能夠同樣獲得業界最優的推理性能,持續對FP32的推理性能進行了優化。在華為P20上以TFLite(2.4版本)、MNN(1.1版本)作為對比對象,進行了benchmark性能測試,從測試結果中可以看出MindSpore Lite FP32推理性能依然處理領先地位,但與其他框架的差距正在縮小。

華為P20上FP32推理時延對比
1.1.2 ARM GPU優化
MindSpore Lite 1.1.0 版本對GPU推理性能進行了重點優化,除了在算子層面進行了常規優化外,還增加了在線融合、AutoTuning、OpenCL kernel二進制cache機制等多種優化方式,使得整體性能較MindSpore Lite 1.0 有25%+的提升;
同樣在華為Mate30上使用TF Hub官網100+預置模型與MNN(1.1版本)和TF(2.4版本),進行了GPU推理性能對比測試,可以從下圖的測試結果看出MindSpore Lite GPU推理性能在大部分模型上優于TF Lite,而對于MNN則優勢明顯。

華為Mate30上GPU FP32推理時延對比
1.1.3 X86_64 CPU優化
本次版本還對X86_64平臺上的推理性能進行了大量優化工作,在Intel Core i7-8700的CPU上與Intel OpenVINO和MNN在幾個經典CV類網絡上進行了benchmark測試,從測試結果看MindSpore Lite性能相比于MNN和OpenVINO都有一定的優勢。

Intel Core i7-8700 X86_64 CPU推理性能對比
1.1.4 更多的融合
當前MindSpore Lite版本已經基本覆蓋了機器視覺領域通用的卷積相關融合pattern,同時針對基于Transformer結構的語音模型和LSTM結構的模型進行了深度融合優化,主要包括將小算子融合成Layernorm、LSTM等大算子,多個MatMul融合成BatchMatMul算子,Slice算子切分矩陣的前移融合等,使得語音類模型獲得20%+的提升,后續將嘗試融合pattern的自動schedule功能。

1.2 算子完備度擴展
MindSpore Lite支持包括ARM CPU、ARM GPU、X86 CPU、Kirin NPU、MTK APU在內的多種硬件平臺。
1.2.1 ARM CPU
MindSpore Lite是目前端側推理框架中CPU算子支持最豐富的框架之一,當前的模型轉換工具支持TF Lite(100個)、TF(53個)、ONNX(96個)以及Caffe(26個)等第三方框架算子定義的解析,做到了高兼容性,上文性能測試中也提到過MNN對很多模型無法轉換,甚至連TF Lite對自家官網預置模型的支持度也不夠完善;同時MindSpore Lite實現了121個FP32,55個FP16以及71個INT8 CPU算子;而此次的1.1版本對控制流算子也進行一次大的調整與完善,以便更好的支持語音類模型。
1.2.2 ARM GPU
新增OpenCL算子10+,當前支持GPU算子總數為58,基本實現常見CV類網絡覆蓋;新增在線融合、Auto Tuning等特性支持,同時支持權重量化,實現8bit權重量化網絡在GPU整網運行。
1.2.3 Kirin NPU
1.1版本完善了對華為麒麟NPU硬件平臺的支持,增加了對Kirin 9000芯片的支持,同時新增了50+ NPU算子支持,從而實現支持大部分CV類場景在NPU上的加速執行;在華為最新的Mate 40手機上進行了幾個典型網絡的benchmark驗證,NPU上推理時延較CPU推理有明顯提升;

Mate 40上NPU和CPU FP32/16推理時延對比
2. 支持端側訓練 由于使用公共數據集訓練的模型與真實用戶場景存一定的偏差,比如人臉識別、語音識別等場景,往往需要利用本地數據對預訓練模型進行微調,從而提高本地模型推理的精度,改善用戶體驗。

MindSpore Lite 1.1.0 版本將端側訓練框架進行了開源,首個版本給帶來了以下特性:1. 支持30+反向算子,提供SGD、ADAM等常見優化器及CrossEntropy/SparsCrossEntropy/MSE等損失函數;既可從零訓練模型,也可指定特定網絡層微調,達到遷移學習目的;
2. 已支持LeNet/AlexNet/ResNet/MobileNetV1/V2/V3和EffectiveNet等網絡訓練,提供完整的模型加載,轉換和訓練腳本,方便用戶使用和調測;
3. MindSpore云側訓練和端側訓練實現無縫對接,云側模型可直接加載到端側進行訓練;
4. 支持checkpoint機制,訓練過程異常中斷后可快速恢復繼續訓練;
端側訓練框架已經在華為部分設備的AI應用比如家庭相冊等場景進行了商用,并取得了很好的用戶體驗。
3. 訓練后量化 隨著AI應用在端側設備部署越來越普遍,而受制于端側資源的局限性,對于模型小型化和推理性能提升的挑戰日益倍增。MindSpore Lite提供了簡單實用的訓練后量化功能,最大程度壓縮模型大小,減小內存占用,提升推理速度,降低功耗。
訓練后量化相較于量化重訓具有兩個明顯優勢,一是無需大量訓練數據集,二是無需重新訓練,離線快速轉換。MindSpore Lite訓練后量化工具提供權重量化和全量化兩種方法,支持1~16bit量化,支持分類,檢測,NLP等多種模型。
為保障訓練后量化模型精度損失小,采用pipeline組合量化方法,一階段采用常規線性量化手段對權重和激活值進行量化,二階段對量化誤差進行分析,利用統計學方法對量化模型進行校正,補償因量化帶來的精度損失。

Pipeline 組合量化
以TF官網MobileNet_v2模型為例,MindSpore Lite訓練后量化A8W8(激活值8bit量化、權重8bit量化)精度與FP32模型相比,經損失校正后,精度損失由0.82%降到0.4%,同樣適用7bit量化下,精度損失仍不超過1%。

訓練后全量化mobilenet_v2模型精度對比

在HMS Face場景下模型進行了INT8權重量化(模型size范圍364KB~2.9MB),實際端到端識別精度完全滿足服務要求。權重量化精度損失矯正方案的相對精度誤差對比如下,可以看到損失矯正方案下量化精度損失有明顯降低。

Face場景模型權重量化精度損失矯正方案相對精度損失對比
經內部大量測試和實際商用交付反饋,pipeline組合量化方法效果顯著,甚至小至300KB的模型,經INT8量化壓縮后精度仍滿足商用要求。
4. 易用性增強
4.1 加速庫自動裁剪工具
為了滿足部分對發布包大小有極致小型化訴求的場景,提供了一個一鍵式裁剪工具,該工具可以根據用戶指定的模型列表,自動裁剪出足以運行列表中指定模型的最小化MindSpore Lite版本。
4.2 離線工具參數精簡
對離線轉換工具參數進行了精簡,最大程度地提高轉換工具的易用性,讓開發者在轉換三方模型時,無需感知三方模型的量化類型、輸入輸出節點名稱和對應的數據類型等。
4.3 支持Java接口
1.1版本正式開放了Java接口,以方便安卓開發者更簡單的使用MindSpore Lite進行應用開發。
4.4 模型可視化
為了方便開發者調試,在Netron開源社區提交了支持MindSpore Lite模型可視化的代碼,現在開發者可以使用Netron工具可視化MindSpore Lite模型。相信能給開發者調試模型,尤其是一些結構復雜的模型,帶來極大的方便。

總結

以上是生活随笔為你收集整理的超轻量AI引擎MindSpore Lite的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。