寒武紀加速平台(MLU200系列) 摸魚指南(一)— 基本概念及相關介紹
PS:要轉載請註明出處,本人版權所有。
PS: 這個只是基於《我自己》的理解,
如果和你的原則及想法相衝突,請諒解,勿噴。
前置說明
本文作為本人csdn blog的主站的備份。(BlogID=111)
環境說明
無
前言
從2019年開始,我們公司的智能分析平台核心架構就開始逐漸的轉向了RK3399PRO,這是我們公司的第三代智能分析平台,前面兩代分別是TK1和TX2,但是因為眾所周知的原因,這一代分析平台選擇了國內的一些替代商。經過了2019年和2020年的實際部署和使用,對於第三代智能分析平台來說,有一個硬性缺陷就是NPU算力過低(INT8 3T),導致了某些算法達不到實時幀率,其其他的性能還是不錯的,如CPU計算力、編解碼等等。正是由於這個算力的缺陷,所以在2020年,我們調研了市場上的其他算力平台的情況,經過某些渠道,我們和寒武紀聯繫上了。寒武紀給我們介紹了他們的MLU200系列智能分析平台的情況,並提供了相應測試板卡,經過相應的測試後,我們技術人員及公司領導對其比較認可,因此決定第四代平台會加入寒武紀的推理模塊,最終形成了以RK作為主控,寒武紀作為推理模塊的形式,為什麼這樣搭建,後文有所提及。由於現在市場上已經出現了類似我們公司的第四代智能分析平台的產品,於是相關介紹可以進行解密脫敏發佈。本系列文章就是對這個寒武紀平台做一些簡單的介紹及總結。
若文中引用部分存在侵權,請及時聯繫我刪除。
寒武紀加速平台簡介
寒武紀加速平台是有兩個部分構成,一個部分是算力硬件,一部分是配套的軟件。
寒武紀硬件部分
首先,這裡介紹的是寒武紀的MLU200系列,在本文發佈時,其實其MLU200系列的升級版,MLU300系列也在寒武紀內部及其相關的合作夥伴正在測試。
對於MLU200系列來說,我們從其官網可以看到,大概存在3個系列,一個是邊緣端推理MLU220(只支持推理),一個是服務器端推理MLU270(只支持推理),一個是MLU290(支持訓練和推理)。可以從其官網(//www.cambricon.com/) 查看更加詳細的介紹。
對於MLU220來說,這裡介紹兩個比較重要的參數,具備兩種形態,一種是INT8 8T算力+8.25W功耗,一種是INT8 16T算力+16.5W功耗。MLU220邊緣端模塊正是我們公司第四代智能分析平台的核心部件之一,但是由於其CPU計算能力較弱,導致不能夠進行大量的業務邏輯運算,這也是某些場景可能需要其他主控的原因。
對於MLU270來說,除了部署服務端的智能分析算法外,其對我們來說最重要的功能是作為模型移植的硬件。我們的智能分析算法想要比較好的工作在MLU220邊緣端,就必須要經過MLU270上進行模型移植,這也是後續文章的重點之一。
對於MLU290來說,我們公司沒有使用,但是看其介紹,一般來說都是應用在各雲廠商、機房和服務中心等,其的最大亮點是支持模型訓練。
寒武紀軟件部分
寒武紀軟件部分我大概可以分為3類,一個是驅動,一個是運行時庫,一個是其相關的算法框架等。如其官網的結構圖:

從上圖來看,在相關的算法框架那塊裏面,還包含了兩個我們實際用到了,但是其圖中沒有給出的介紹。圖中的相關算法框架部分都是用於算法訓練、推理、移植使用的。其實在推理部分來看(運行時之上),還應該包含寒武紀出的兩個開源工程:EasyDK以及CNStream。
EasyDK是其基於其運行時庫封裝的一些常用和簡易接口,對我們來說,可能最常用的就是關於離線模型推理部分。相關介紹請參見其官網: //github.com/Cambricon/easydk
CNStream是其基於EasyDK封裝的一套應用層庫,我覺得其和deepstream和MediaPipe有異曲同工之妙。相關介紹請參見其官網://github.com/Cambricon/CNStream
其實從這裡我們可以看出,一般來說,我們自己的推理端的程序和服務,有三種形態:
- 基於CNStream進行開發,其封裝的還不錯,並行處理的還行,但是可能就是不能夠很好的和自己以前的程序框架移植和融合。
- 基於EasyDK進行開發,簡化調用及開發流程,但是會有些坑需要去閱讀EasyDk源碼和運行時相關的SDK文檔。
- 基於其運行時相關的SDK文檔進行開發,需要花大量的時間進行學習,適合長期工作在此平台的相關人員。
對於我們公司來說,我們現在基本工作在EasyDK和其運行時之間,基於這兩個進行混合編程,最終的理想狀態是直接基於其運行時庫進行開發。
寒武紀加速平台使用簡介
在前言部分已經介紹過了,我們公司的第四代智能分析平台的核心構成部分是MLU220。因此,我們公司做的事情其實將已經訓練好的Caffe、Pytorch等框架的模型移植到寒武紀平台。寒武紀平台根據其定位做了雲端和終端的商業定位。其官網介紹圖如下:

下面我對我司使用的基本流程做一個簡介。
部署流程簡介
寒武紀平台的部署流程有一條主線是將一個原始模型轉為一個離線模型。基本流程如下:
- 得到算法的原始模型,如caffe/pytorch/tensorflow等框架的模型。
- 配置對應框架模型的模型轉換環境,有兩種一種是手動配置,一種是docker。
- 使用對應的框架模型轉換環境,進行模型量化、轉換得到離線模型。
- 開發支持離線模型的程序應用,調用離線模型進行推理並做其他處理。
關於我司使用的基本流程,後續文章將會有一個實例來詳細展開說明,這裡就不多介紹了。
後記
本文主要介紹了寒武紀加速平台的一些概念。更多的詳情,請查看寒武紀官網相關的介紹。
其實看到國內的各個軟硬一體廠商發展的還是不錯的,希望他們可以取得更加長足的發展,希望他們為國產爭光。
參考文獻
- //www.cambricon.com/
- 其他相關保密資料。

PS: 請尊重原創,不喜勿噴。
PS: 要轉載請註明出處,本人版權所有。
PS: 有問題請留言,看到後我會第一時間回復。