寒武紀加速平台(MLU200系列) 摸魚指南(二)--- 模型移植-環境搭建


PS:要轉載請注明出處,本人版權所有。

PS: 這個只是基於《我自己》的理解,

如果和你的原則及想法相沖突,請諒解,勿噴。

前置說明

  本文作為本人csdn blog的主站的備份。(BlogID=112)

環境說明
  • Ubuntu 18.04
  • MLU270 加速卡一張

前言


  閱讀本文前,請務必須知以下前置文章概念:

  前文我們已經介紹一些基本的概念。在本文,將會從安裝加速卡,到模型環境移植搭建完成,都會做一個簡單的介紹。

  若文中引用部分存在侵權,請及時聯系我刪除。





安裝MLU270加速卡到主機


  首先MLU270加速卡你可以直接把他看為一張普通的獨立顯卡就行。只需要安裝在主機的PCIE x16 口即可,並連接好供電線,其供電線是特制的接口,需要官方提供的線纜進行轉換一下接口。其官網渲染圖如圖:

rep_img

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

rep_img




安裝驅動


  根據其官網資料( 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的信息,包含了加速卡的一些基本信息。

rep_img




安裝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 得到如圖輸出:

rep_img




配置模型移植開發環境


  寒武紀官方支持3種常見框架的模型移植,他們分別是caffe/tensorflow/pytorch,他們的官方資料如下:

  寒武紀官方支持的環境配置方式有兩種,一種是全程手動搭建環境。第二種是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文件。如圖:

rep_img

  然后執行寒武紀提供的run腳本即可。根據腳本中的配置,默認會將當期目錄映射到docker的/home/share目錄。

  當我們第一次進入一個docker環境時,需要執行寒武紀提供的patch腳本(聯系供應商),在docker根目錄生成一個env_pytorch.sh文件,配設定相關的環境。

  此外,每當我們執行run腳本進入docker后(docker run),每一次都需要執行:cd / && source env_pytorch.sh 進入pytorch虛擬環境。這個時候執行如下命令,並反饋如圖:

rep_img

  使用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等目標檢測的最后一個解碼層,詳情見相關文檔。

  這里介紹了寒武紀算法移植環境搭建的方法,同時也對整個流程做了一個簡要的說明。其實如果你能夠和供應商聯系上,應該還可以得到一些其他的相關支持和資料。我這里由於一些原因,只引用了其官方公開的內容。

參考文獻




打賞、訂閱、收藏、丟香蕉、硬幣,請關注公眾號(攻城獅的搬磚之路)
qrc_img

PS: 請尊重原創,不喜勿噴。

PS: 要轉載請注明出處,本人版權所有。

PS: 有問題請留言,看到后我會第一時間回復。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM