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

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

安裝驅動
根據其官網資料( https://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,里面包含了好幾個模塊。其具體介紹請查看其官網: https://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: https://www.cambricon.com/docs/caffe/index.html
- tensorflow: https://www.cambricon.com/docs/tensorflow/user_guide/index.html
- pytorch: https://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系列) 摸魚指南(一)--- 基本概念及相關介紹》 ( https://blog.csdn.net/u011728480/article/details/121194076 )
- https://www.cambricon.com/
- 其他相關保密資料。

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