寒武纪MLU270运行环境搭建

硬件要求

  • MLU270卡,是搭配服务器使用,如果使用pc机,推荐配置:
  • 主板:Z370/Z470 (强烈推荐)
  • CPU:i7-8700K
  • 推荐使用docker

 

主板需要支持启用芯片组 64bit 兼容性硬件物理寻址(较新的PC机主板以及服务器一般都支持)。查看方式:如果没有为板卡分配到内存,第一步可以进入Bios模式打开Above 4G Decoding 开关。如果打开依然没分配到,第二步再去查看启动参数 cat /proc/cmdline 是否有设定 pci=realloc=on。

       CPU 需要支持 avx(高级适量扩展)和 f16c(半精度数据类型)的指令集。查看方式:cat /proc/cpuinfo | grep -E 'avx|f16c'

 

软件系统

       目前已经支持主流 Linux 发行版系统(CentOS/Ubuntu)

  • Centos:CentOS 7.4(3.10.0‑862)、 CentOS 7.6(3.10.0‑957)
  • Ubuntu:Ubuntu 16.04(4.4.0‑112)、 Ubuntu 18.04(4.15.0‑32)
  • Debian:Debian 10.1(4.19.0‑6)、 Debian 9.8(4.14.138)

 

系统需要支持安装 docker 容器

 

整体流程


准备工作

  1. 主机:JWIPC E7QS,i7-6700 CPU @3.4GHz, 16GB内存,SSD硬盘,OS Ubuntu 18.04.5 LTS,正常联网
  2. Cambricon MLU270-S4 1pcs 如下图1
  3. Cambricon SDK v1.6.0 & datasets & models
         

硬件安装如下图所示
         

注意:

  • MLU270 与主板 PCIE-16 插槽连接
  • MLU270 没有散热风扇,可加装风扇对其散热,否则过热(卡片超過50℃)將导致设备将停止工作,建议使用服务器進行测试
  • AMD CPU 无集成显卡,若机箱空间太小可用 PCIE 延长线将显卡引出。若无需桌面环境或 Intel CPU 带集显,可忽略此步

檢查MLU卡

       将卡插入pcie卡槽后,开机,进入终端后输入命令:lspci -v -d:270
        

红色框需要出现如图的数字,才能进入下一步。

 可能遇到的问题:

  • Bar空间未分配

       

       输入命令 dmesg 会看到

       

处理方法:

(1) 在BIOS中,开启above4G选项

(2) 若無above4G,升級BIOS

不同主板厂商 BIOS 升级方式各不相同,相关操作参考网络内容。

(3)若無above4G,更換主板


文档下载

推荐使用:FileZilla 软件

主机:download.cambricon.com

用户名:找对应的FAE/AE

密码:找对应的FAE/AE

端口:8821

  • 下載SDK
       
  • 下載models和datasets
      

 

驱动安装

       寒武纪发布的驱动安装包有两种: deb 包和 rpm 包。寒武纪 neuware 驱动安装包使用 dkms 框架来管理驱动的安装、升级和卸载。 dkms 可以针对系统内安装的每个内核版本,通过编译、安装相应的内核模块来实现驱动的加载。用户只需安装、更新相应的 dkms 软件包(deb 包或 rpm 包)即可实现驱动的安装和升级。目前驱动已经支持主流 Linux 发行版系统(CentOS/Ubuntu),提供驱动安装包如下:
CentOS 系 统, 驱 动 安 装 包 名 称 为 neuware‑mluxxx‑driver‑***‑1.x86_64.rpm, 支 持 CentOS 7.4
(3.10.0‑862)、 CentOS 7.6(3.10.0‑957)。
Ubuntu 系统和 Debian 系统,驱动安装包名称为 neuware‑mluxxx‑driver‑dkms_***_all.deb,支
持 Ubuntu 16.04(4.4.0‑112)、 Ubuntu 18.04(4.15.0‑32)、 Debian 10.1(4.19.0‑6)、 Debian 9.8

          

在HOST环境中:

Ubuntu:

sudo apt install dkms

sudo dpkg -i neuware-mlu270-driver-dkms_4.1.1_all.deb

Centos:

sudo rpm -ivh neuware-mlu270-driver-4.1.1-1.x86_64.rpm

确认驱动安装成功:

在HOST执行 cnmon

          

出现这样的显示,表示安装成功。

 可能遇到的问题:

1)Linux header与kernel版本未匹配

方法如下:
        
删除多余内核:

查看已安装内核:

sudo dpkg --get-selections  |  grep  'linux'

卸载内核headers

sudo  apt-get  purge  linux-headers-x.xx.x-xxxxxx

2)若系统中已经存在旧版本驱动, 此时需要先卸载旧的驱动模块再重新安装

 

準備環境

Tensorflow 和 Pytorch 都是基于 python3.5的环境,Caffe目前支持python2.7

【建议】先阅读该章节整体,看下思路,再动手。下面以caffe為例

最终目的解压成如下图的结构

---workdir

    |------run-docker.sh 【名字可以任意,该脚本是为了进入docker环境】

    ------ Cambricon-MLU270

    -----  armeemesser_v1.x.0 【一键配置包,x是版本号】

    -----  models  【模型库】

    -----  datasets 【数据集】

    -----  xxx 【其他】

解压 软件包

tar xvf Cambricon-MLU270/v1.6.0/caffe/src/caffe-v5.3.4.tar.gz [-C workdir]

Cambricon-MLU270目录就解压完成了。其他如tf/porch軟件包類似解壓

解压 数据集

tar -zxvf MLU270_datasets_xxx.tar.gz -C workdir/Cambricon-MLU270/datasets/

解压 模型

tar -xvf Cambricon-MLU270-models-xxx.tar -C workdir/Cambricon-MLU270/

 

  • armeemesser_v1.x.0

一键配置包,完成配置docker环境,工作是未在发布包里面的,需要自行下载。

下载路径:

链接:https://pan.baidu.com/s/104zGbXOQZCY2ULRgxCWF-Q

提取码:4wke

该工具包原理:主要执行prepare_env.sh文件

完成:

  1. 安装 neuware-mlu270-x.y.z-xxx.deb
  2. 安装 cnas-x.x.x.deb
  3. 安装 cncc-x.y.z.deb
  4. 替换/etc/apt/sources.list 为ali源
  5. 更新conf源
  6. 切换py为py35
  7. Bazel-cache放到/root/.cache下,tensorflow编译依赖的包
  8. pkg_resources是pip依赖的package
  9. configure_tf/caffe/pt/mxnet.sh 复制到Cambricon-MLU270目录下,编译单模块编译

【注意】

如果不使用该工具包需要手动完成。 

最后在Cambricon-MLU270结构如下:

         




安装&配置容器

安装 docker

参考 https://www.runoob.com/docker/ubuntu-docker-install.html

Docker version 19.03.x,Docker version 18.03.x两个版本均可以使用。

 创建本地镜像

下载官方 ubuntu16.04 镜像

$sudo docker pull ubuntu:16.04

 下载寒武纪官方镜像

Docker image 下载地址:

链接:https://pan.baidu.com/s/1xngxbLJOzjsd8Nwtm65G0g

提取码:coqu

安装docker images命令:

$sudo docker load < ubuntu-16.04-mlu270-image.tar.gz

查看本地 images

$sudo docker images

          

启动容器:

基于镜像 ubuntu-16.040mlu270-image:latest 启动一个容器,并映射相关工作目录,脚本內容如下
          

執行sudo ./run-cambricon-test-docker.sh (文件名可自定義)

此时,我们运行了一个名为 Cambricon-MLU270-v1.6.0-test的容器,并且容器的/home/Cambricon-MLU270 路径与宿主机脚本同级路径下的 MLU270 文件下互相映射

 
配置容器

方法一(全自动安装)

推荐使用:armeemesser

cd armeemesser

./prepare_env.sh

 方法二 (手动安装)

  1. 安装neuware

dpkg -i neuware-mlu270-*_Ubuntu16.04_amd64.deb

cd /var/neuware-mlu270-*/

dpkg -i *.deb

cd - 

  1. 安装cnas

dpkg -i cnas_*.deb 

  1. 安装cncc

dpkg -i cncc_*.deb 

  1. 安装cntoolkit /cnml/cnnl/cncl/cnplugin

cd ~/Downloads/cambricon-sdk/v1.6.0/cntoolkit

sudo apt install ./cntoolkit_1.6.1-1.ubuntu18.04_amd64.deb

cd /var/cntoolkit-1.6.1

sudo dpkg *.deb

并配置好环境变量 参考《Cambricon-CNToolkit-Installation-And-Updation-Guide-CN-v1.6.1.pdf》page35

  1. 更新conf源

[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

find-links = /home/Cambricon-MLU270/armeemesser/pkg_resources

find-links指向pkg_resources包的地址

pkg_resources 根据tf和pt所需要的python package提前准备好的。

 mkdir ~/.pip

cp pip.conf ~/.pip 

  1. 切换py为py35

rm /usr/bin/python

ln -sf /usr/bin/python3.5 /usr/bin/python 

rm /usr/bin/pip

ln -s /usr/bin/pip3 /usr/bin/pip

source switch_py35.sh

or

sudo ./switch_py35.sh 

  1. Bazel-cache放到/root/.cache下,tensorflow编译依赖的包

mkdir -p /root/.cache/bazel/_bazel_root

tar -xvf bazel-*.tar.xz -C /root/.cache/bazel/_bazel_root

 

参考文档

《Cambricon-Driver-User-Guide-CN-v4.8.0》

《Cambricon-Caffe-User-Guide-CN-v5.3.3》

《Cambricon-CNToolkit-Installation-And-Updation-Guide-CN-v1.6.1》

 


 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論