久久久精品一区中文字幕,国产一区欧美一区二区日韩,国产一区二区成人久久919色,曰本一区二区三区精品免费,国产日产久久高清欧美一区,操天天操天天干天天,国产99久久久产精品免费,精品久久久中国字幕,99精品久久久久免费看蜜臀

聯(lián)系我們
商務合作 加入我們 媒體資訊
EN
黑芝麻
黑芝麻
黑芝麻
CHN KOR ENG
黑芝麻

開芯課堂丨基于黑芝麻智能山海工具鏈的模型量化編譯與部署

開芯課堂丨基于黑芝麻智能山海工具鏈的模型量化編譯與部署 2024/11/15

近日,黑芝麻智能聯(lián)合智猩猩策劃推出的黑芝麻智能山海工具鏈專場在線研討會順利完結。黑芝麻智能嵌入式工程師李俊何以《黑芝麻智能山海工具鏈:深度學習模型量化與部署實戰(zhàn)》為主題,進行了直播講解。本文是黑芝麻智能李俊何的主講實錄整理。


李俊何:大家好,我是來自黑芝麻智能的李俊何,很榮幸能在這里和大家分享關于黑芝麻智能山海工具鏈的相關知識。


首先介紹一下黑芝麻智能科技有限公司。黑芝麻智能成立于2016年,在今年上市,公司的定位是智能汽車計算芯片引領者。


我們目前有兩個產(chǎn)品線,一個是黑芝麻智能華山系列,也就是大家熟知的A1000家族芯片,包括華山A1000、華山A1000L和華山A1000 Pro。其中 ,A1000有58TOPS的算力,能夠完美適配L2+或L3級別的自動駕駛;A1000L算力有16TOPS,能夠支持L2或L2+級別的自動駕駛。


我們還針對跨域計算推出了武當系列,也就是C1200家族芯片。其中,武當C1296芯片是行業(yè)內(nèi)首顆支持多域融合的芯片平臺;武當C1236是本土首顆單芯片支持NOA的芯片平臺。


1731651333535119.png



微信截圖_20241115141453.png

好的芯片配好的工具鏈


好的芯片配好的工具鏈。介紹完硬件再和大家分享一下黑芝麻智能基于芯片開發(fā)的山海工具鏈。


黑芝麻智能山海開發(fā)工具鏈是一個配合華山系列和武當系列兩款芯片的開發(fā)工具鏈,能夠為開發(fā)者提供快速開發(fā)的平臺,具有很強的可擴展性、完整性和靈活性。


1731651371446807.png


首先,我們整體看一下量化和部署一體化的流程。


1731651402102654.png


大家熟知的深度學習模型,像障礙物檢測模型、車道線檢測模型、語義分割模型、行為監(jiān)控模型,隨著電動汽車越來越火,其實很多功能都依賴于這些模型去實現(xiàn)。模型訓練好之后,需要經(jīng)過黑芝麻智能山海工具鏈(BST-DAL)量后才能部署到硬件計算平臺,也就是計算芯片上面。


黑芝麻智能提供50多種AI參考模型庫的轉換用例,大大降低了算法開發(fā)的門檻,同時也保證了算法精度,支持一些客戶自定義算子開發(fā)。


接下來,讓我們聚焦于黑芝麻智能山海工具鏈BST-DAL,DAL全稱是Deep-learning Acceleration Library。


1731651426917947.png


山海工具鏈支持不同種類的深度學習框架和模型格式,比如說像常見的PyTorch、Caffe、TensorFlow等,輸入格式有ONNX,也支持PB。


圖中間的部分是我們工具鏈做的一些事情,能夠提供黑芝麻智能研發(fā)的量化、分區(qū)、模型優(yōu)化算法,自動生成底層的模型代碼。


在開始具體的工具鏈介紹之前,還想和大家介紹一下黑芝麻智能自主研發(fā)的NPU。NPU硬件就是加速計算資源。


1731651456397860.png


以A1000為例,A1000芯片上是有一個SIMD向量化元素計算加速單元,就是EDP(non-linear)這一塊。


GEMM是一個通用矩陣乘加速陣列,用于加速矩陣與矩陣乘法。


接下來是2個大算力的Engine,是2個MAC陣列用于加速卷積計算的硬件。


同時我們還內(nèi)置了一個通用的P6 DSP,能夠支持開發(fā)者自定義算子以及各種靈活NN算子的部署。




微信截圖_20241115141453.png

BST-DAL量化編譯與部署流程


接下來,我將紹一下BST-DAL量化編譯的整個流程。雖然流程有這么多,但是我們開發(fā)者只需要關注模型的輸入、輸出以及中間的配置文件就可以了。剩下的每一個階段,我將簡單為大家介紹一下它做了什么,以及為什么這么做。


1731651516145790.png


首先是預處理的:Preprocessing。在深度學習模型推理的時候會涉及到歸一化,我們會將原ONNX模型插一個Pre-head,將預處理階段整合到模型里,不需要開發(fā)者在后續(xù)在工程中手動做歸一化。


前處理之后就是圖優(yōu)化的階段。之所以設置圖優(yōu)化這個階段,是因為很多時候訓練好的模型都是從TensorFlow或PyTorch直接導出的,可能會存在一些冗余的節(jié)點,或比較耗時的操作。而我們的工具鏈會自動移除冗余節(jié)點,并判斷節(jié)點融合。


1731651559158313.png


上面是我舉了一個比較簡單的例子,一個Conv和一個Relu。山海工具鏈會將它自動融合成一個Fused_Conv計算節(jié)點,這樣能對硬件更加友好、推理速度更快,以及節(jié)點可以等效替代。還有其他很多的圖優(yōu)化策略,開發(fā)者都可以在拿到工具鏈開發(fā)包后,通過Python導入庫來看到所有詳細的pass。


圖優(yōu)化之后,就是量化階段。


1731651604114178.png


量化就是把一些浮點的數(shù)據(jù),比如將深度模型里面的權重,量化成定點數(shù)據(jù)。舉一個簡單的例子,上面的浮點數(shù)經(jīng)過量化會產(chǎn)生一個SCALE,然后就可以將其量化為一個定點數(shù)據(jù),這就是量化的基本思想。


在當前人工智能的快速發(fā)展下,量化也是越來越重要的一部分,是必不可少的。就像最近蘋果要發(fā)布Apple Intelligence,其實很多模型都是很大的,像GPT。如果蘋果的Apple Intelligence想部署到iPhone或者是iPad上面,也是需要量化的。


山海工具鏈提供兩種量化方式,分別是accuracy_level:0和accuracy_level:1。


1731651633874125.png


accuracy_level:0在評估階段可以快速地量化模型,看它能否適配我們的硬件平臺。


accuracy_level:0的量化速度比較快,采用的calibration算法是min_max算法。min_max算法屬于飽和量化,飽和量化將原始的數(shù)據(jù)區(qū)間映射到127到-127的定點區(qū)間,它會將所有的數(shù)據(jù)點映射到這個整數(shù)區(qū)間。


但這樣做的問題是:當輸入的原始數(shù)據(jù)排列比較分散時,比如像右邊這種,可能一些邊緣數(shù)據(jù)對整個模型的性能和精度影響沒那么大的時候,可以采取accuracy_level:1優(yōu)化的算法進行量化。它使用了KL散度+ easyquant的量化方式進行高精度的量化和優(yōu)化。


量化結束后將會得到一個量化后的模型,但如果想將其部署到A1000、C1200這樣的計算平臺上,還需要圖分割的階段。圖分割的意思是,這種很大的模型很多時候不能作為一個Section直接放到芯片上進行計算,我們需要將一個大的模型分割為一些子圖的形式。


1731651672764358.png


這邊有一個例子,前面的0說明它是第一個子圖,第二個0是第一個子圖的第一個計算節(jié)點。我們可以看到這5個節(jié)點構成了一個子圖。在硬件平臺計算的時候,只有 Section和Section之間會有一些IO交互,這樣能最大程度在DST硬件平臺上運行推理的過程。


當然這是一個Auto partition的算法,工具鏈會自動將整個模型切割成對硬件最友好、最高效的運行模式,同時也支持開發(fā)者手動設置子圖的邊界節(jié)點。如果想讓某些節(jié)點單獨做一個 Section也是完全支持的。


圖分割階段之后就到了編譯階段。編譯階段就是將圖分割之后的模型編譯成板端能執(zhí)行的文件。bin文件就是量化后的權重,meta文件可以看到模型輸入輸出的維度信息。


1731651690185741.png


其中還有一個小細節(jié),每一個步驟都是會產(chǎn)生一個IR中間件的結果,后綴是bstnnx。我們也做了一個基于Netron的小工具,可以使每一個階段模型可視化。開發(fā)者可以把每個階段的模型放到我們修改的Netron上面,支持BST算子的顯示,所有階段的結果都是可視化的,這對開發(fā)者是很友好的。


另外一方面就是精度評估。我們需要在量化之后評估這個模型量化之后是否符合工程上的要求,以及準確性。我們只要在之前提到的yaml文件上配置 quantization_evaluation_stage就可以直觀地在量化后得到一個PDF。這個PDF我截取了一段,可以看到像mae、mse、psnr這些常規(guī)的精度評估數(shù)據(jù),能夠幫助開發(fā)者去調(diào)優(yōu)。


1731651715535748.png


我截取了部分我們公開的模型庫在量化前后模型精度的對比,可以看到我們的工具鏈能夠做到精度損失非常小。


1731651746802774.png


山海工具鏈是高度封裝的,但也支持開發(fā)者自定義類。比如開發(fā)者想很快的加一個數(shù)據(jù)讀取的階段,或想加一個自定義的圖優(yōu)化階段,都是完全支持的。


1731651775740395.png


我總結一下以上介紹的量化部署的流程。


開發(fā)者只需要關注準備模型和配置文件,給到山海工具鏈,它就可以開始自動轉換。轉換完之后,先要檢查一下有沒有數(shù)據(jù)對齊,會不會有什么一些bug。如果數(shù)據(jù)對齊了,我們會去做精度驗證,如果不滿足要求,我們也有精度調(diào)優(yōu)手冊,或者尋求黑芝麻智能的支持來進行精度的優(yōu)化,最終優(yōu)化到符合工程要求的程度,就可以上板端在端側部署了。


1731651807201948.png



微信截圖_20241115141453.png

板端開箱即用


總體來說,黑芝麻智能山海工具鏈是非常容易上手的。工具鏈發(fā)布形式采用Docker的形式,這樣就不需要依賴于一些本地的庫,只需要把Docker下載安裝一下。


板端就更簡單了,黑芝麻智能提供完整的SDK,包括Linux和QNX兩個系統(tǒng)。


板端提倡開箱即用,對開發(fā)者非常友好。山海工具鏈有完備的測試例程,config文件快速配置以及完整的API接口,支持零拷貝的功能。


大家可以看到,lib和bin文件是之前工具鏈量化生成的文件,就是模型量化后的文件,只要放到算法層,根據(jù)demo示例去修改一下配置,就可以直接上板進行驗證。


1731651847352084.png


接下來是一些黑芝麻智能已經(jīng)驗證的模型,比如說像一些經(jīng)典的NN模型,以及常見的PointPillars雷達效果點云的模型。同時還支持Transformer。Transformer也是一個當前熱門的模型結構,像Swim Transformer、BEVFormer、FastBEV、PETRv2這些都有很好的支持,下方ppt右邊就是一個BEV的效果圖。


1731651878149783.png


黑芝麻智能成立以來,已經(jīng)和很多客戶達成了深度的合作。其中,Nullmax是行業(yè)領先的自動駕駛科技公司,致力于打造全場景的無人駕駛應用,加速推動移動出行產(chǎn)業(yè)的智能化變革。黑芝麻智能與Nullmax深化合作,基于華山A1000和武當C1200家族芯片,共同為主機廠提供高性價比和高價值的BEV無圖單芯片NOA智駕方案。


1731651901575552.png



關注我們:
黑芝麻
黑芝麻
黑芝麻
黑芝麻
黑芝麻 黑芝麻 黑芝麻
-->
關注我們:
黑芝麻
黑芝麻
黑芝麻
黑芝麻
黑芝麻 黑芝麻 黑芝麻
-->
黑芝麻
Copyright ? 2022 Black Sesame Technologies.All rights reserved