寒武紀加速平台(MLU200系列) 摸魚指南(二)— 模型移植-環境搭建
PS:要轉載請註明出處,本人版權所有。
PS: 這個只是基於《我自己》的理解,
如果和你的原則及想法相衝突,請諒解,勿噴。
前置說明
本文作為本人csdn blog的主站的備份。(BlogID=112)
環境說明
- Ubuntu 18.04
- MLU270 加速卡一張
前言
閱讀本文前,請務必須知以下前置文章概念:
- 《寒武紀加速平台(MLU200系列) 摸魚指南(一)— 基本概念及相關介紹》 ( //blog.csdn.net/u011728480/article/details/121194076 )
前文我們已經介紹一些基本的概念。在本文,將會從安裝加速卡,到模型環境移植搭建完成,都會做一個簡單的介紹。
若文中引用部分存在侵權,請及時聯繫我刪除。
安裝MLU270加速卡到主機
首先MLU270加速卡你可以直接把他看為一張普通的獨立顯示卡就行。只需要安裝在主機的PCIE x16 口即可,並連接好供電線,其供電線是特製的介面,需要官方提供的線纜進行轉換一下介面。其官網渲染圖如圖:

開機後通過查看pcie設備即可發現剛剛安裝的設備(lspci命令):

安裝驅動
根據其官網資料( //www.cambricon.com/docs/driver/index.html ),我簡要說明部分內容。
首先根據其資料,我們可以看到大概支援兩個系列的os,一個是ubuntu/debian,一個是centos。這裡,我建議使用ubuntu,具體原因,有興趣的可以去查看此文檔的注意部分。
在Ubuntu18.04上安裝驅動
首先從你的供應商拿到驅動包,名字如:neuware-mlu270-driver-dkms_xxx_all.deb。然後不用客氣,直接執行:sudo dpkg -i neuware-mlu270-driver-dkms_xxx_all.deb。
我們其實可以看到,其用DKMS來管理驅動,和安裝N卡驅動非常類似。具體顯示資訊,請查看如上官網資料。這裡只有一個問題要注意,就是內核版本一定要在其文檔說明支援的範圍內。
當安裝成功後,執行:cnmon,可以看到一個類似nvidia-smi的資訊,包含了加速卡的一些基本資訊。

安裝CNToolKit
其實和我們前置文章裡面講的軟體框架部分,當我們準備好驅動之後,其實下一步就是安裝運行時層。運行時層就是CNToolKit,裡面包含了好幾個模組。其具體介紹請查看其官網: //www.cambricon.com/docs/cntoolkit/index.html 。
在CNToolKit模組裡面,我接觸的最多的就是CNRT,因為這是離線模型推理部分的底層支援部分。也就是說前文我提到的EasyDK就是大部分基於CNRT進行設計的。
在Ubuntu18.04上安裝CNToolKit
官方路子:
- sudo dpkg -i cntoolkit_xxx.deb
- sudo apt update
- sudo apt-get install cnas cncc cncodec cndev cndrv cnlicense cnpapi cnperf cnrt cnrtc cnstudio
野路子:
- 解壓cntoolkit_xxx.deb。
- 找到裡面的所有deb文件,選擇自己需要的,直接解壓安裝。
注意,野路子在邊緣端環境配置的時候、邊緣端程式生成的時候有奇效。
配置相關環境變數:
- export NEUWARE_HOME=”/usr/local/neuware”
- export PATH=”${NEUWARE_HOME}/bin:${PATH}”
注意,此變數NEUWARE_HOME將會伴隨著你移植模型,生成邊緣端程式等階段,需要注意。
安裝好進行測試,執行命令:/usr/local/neuware/bin/cncc –version 得到如圖輸出:

配置模型移植開發環境
寒武紀官方支援3種常見框架的模型移植,他們分別是caffe/tensorflow/pytorch,他們的官方資料如下:
- caffe: //www.cambricon.com/docs/caffe/index.html
- tensorflow: //www.cambricon.com/docs/tensorflow/user_guide/index.html
- pytorch: //www.cambricon.com/docs/pytorch/index.html
寒武紀官方支援的環境配置方式有兩種,一種是全程手動搭建環境。第二種是docker。
對於手動搭建環境,這裡仁者見仁智者見智,我個人認為新手可以嘗試著搭建一次就行,後續還是使用docker。因為手動搭建可以讓你更加的了解整個移植工作的流程。以pytorch為例,因為手動搭建,大概包含了安裝virtualenv,解壓源碼,設定NEUWARE_HOME環境,打patch,安裝依賴,編譯編譯生成對應的庫,運行單元測試,最終檢測即可。
對於業務開發來說,我建議還是docker來的快點。
搭建模型移植docker環境
docker的安裝我就不說了,自己百度把docker基本環境搭好,能夠跑hello-world就行。
首先我們在寒武紀那裡可以拿到對應環境的docker鏡像,下載到我們的安裝了MLU270的主機電腦。然後執行命令: sudo docker load -i pytorch-xxxx-ubuntu18.04.tar,然後執行sudo docker images 查看你已經導入的image文件。如圖:

然後執行寒武紀提供的run腳本即可。根據腳本中的配置,默認會將當期目錄映射到docker的/home/share目錄。
當我們第一次進入一個docker環境時,需要執行寒武紀提供的patch腳本(聯繫供應商),在docker根目錄生成一個env_pytorch.sh文件,配設定相關的環境。
此外,每當我們執行run腳本進入docker後(docker run),每一次都需要執行:cd / && source env_pytorch.sh 進入pytorch虛擬環境。這個時候執行如下命令,並回饋如圖:

使用docker還有一個好處是更新升級方便,更重要的是方便建立多個不同演算法移植環境。
後記
對於寒武紀加速平台來說,我們不要將它視為一個新的事物,可以將它類比為Nvidia的顯示卡加速平台。加速卡驅動對應n卡驅動。cncc類比nvcc。bang c類比為cuda。更高級的演算法推理和訓練框架其實底層加速部分就是使用cuda/bang c/cpu-simd來構建的。對於我們用戶來說,一般情況下,我們只需要普通的了解pytorch/tensorflow/caffe的api即可。只有當對某些特殊運算元需要加速的時候,這個時候你有可能去涉及這些cuda/bang c/cpu-simd。這裡寒武紀加速平台根據其提供的一些資料來看,直接在運算元裡面集成了例如ssd/yolov3/yolov5等目標檢測的最後一個解碼層,詳情見相關文檔。
這裡介紹了寒武紀演算法移植環境搭建的方法,同時也對整個流程做了一個簡要的說明。其實如果你能夠和供應商聯繫上,應該還可以得到一些其他的相關支援和資料。我這裡由於一些原因,只引用了其官方公開的內容。
參考文獻
- 《寒武紀加速平台(MLU200系列) 摸魚指南(一)— 基本概念及相關介紹》 ( //blog.csdn.net/u011728480/article/details/121194076 )
- //www.cambricon.com/
- 其他相關保密資料。

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