作为国产 AI 计算卡的先驱产品,其高通用性,高效能,全面部署场景,完善的软件开发环境等优点,必将在国内市场占有一席之地。本文着重介绍 MLU270 在 HOST 端的环境搭建中的硬件需求,软件适配。并一 caffe 模型为例,在 MLU270 上运行模型作为演示。
一、硬件和驱动安装
1.硬件环境:
CPU: AMD Ryzen5 3600
主板: 华硕 B450M Gaming
计算卡: Cambricon MLU270
BIOS版本: 华硕 Ver2409
OS: Ubuntu16.04/Ubuntu18.04
图(1)
如图(1)说明:
- MLU270 与主板 PCIE-16 插槽连接。
- MLU270 没有散热风扇,可使用 USB 接口风扇对其散热,否则会过热导致设备将停止工作。
- AMD CPU 无集成显卡,若机箱空间太小可用 PCIE 延长线将显卡引出。若无需桌面环境或 Intel CPU 带集显,可忽略此步。
2、BIOS 升级
MLU270 工作需要在 BIOS 中开启64位设备在大于4G地址空间的解码,根据不同的 CPU、主板厂商,需要开启 Re-Size BAR Support 和(或) Above 4G Decoding 功能选项。华硕 AM4 接口主板在 ver2409 版本后才开始支持此功能(如图2)。如果低于此版本需要先升级 BIOS。
图(2)
不同主板厂商 BIOS 升级方式各不相同,相关操作参考网络内容。升级后的 BIOS 会出现如图(3)
所示的选项功能。
图(3)
3.MLU270驱动的安装与升级
①驱动的 .deb 包可以从 download.cambricon.com FTP 服务器下载,用户名和密码可以找对应的
AE/FAE 获取。如图(4)。
图(4)
② 安装升级驱动
执行以下命令安装驱动
$sudo apt install dkms
$sudo apt install ./neuware-mlu270-driver-dkms_4.8.0_all.deb
若系统中已经存在旧版本驱动,则在执行以上命令升级的时候会出现如图(5)所示提示,
图(5)
此时需要先卸载旧的驱动模块再重新安装
$sudo rmmod cambricon-drv
$sudo insmod /lib/modules/5.4.0-58-generic/updates/dkms/cambricon-drv.ko
$sudo lspci -v -d:270
$cnmon
板卡信息如下图(6)所示
图(6)
- 可能遇到的问题:
Linux header与kernel版本未匹配
方法如下:
图(7)
删除多余内核:
查看已安装内核:
sudo dpkg --get-selections | grep 'linux'
卸载内核headers
sudo apt-get purge linux-headers-x.xx.x-xxxxxx
二、Docker 搭建
①安装 docker
$sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
添加docker 用户组到用户群组并更新配置(login out)
$sudo usermod -aG docker username
$newgrp docker
查看本地镜像
$docker images
②创建本地镜像
下载官方 ubuntu16.04 镜像
$docker pull ubuntu:16.04
下载寒武纪官方镜像
Docker image 下载地址:
见 FTP 服务器。从中选取自己需要的镜像,寒武纪官方已经提供了集成了
caffe tensorflow Pytorch 等框架的 docker 镜像。
镜像的路径。
图(8)
$docker load<docker-image-name.tar
查看本地 images
图(9)
- 启动容器
基于镜像 ubuntu-16.040mlu270-image:latest(实际操作根据自己所选的镜像文件作对应的修改) 启动一个容器,并从宿主机继承 /dev/cambricon_dev0设备,并映射相关工作目录,创建如图(9)所示脚本
图(10)
此时,我们运行了一个名为 Cambricon-MLU270-clean-sim 的容器,并且容器的 /home/Cambricon-MLU270 路径与宿主机脚本同级路径下的 MLU270 文件下互相映射,如图(10)所示。
图(11)
三、caffe 运行测试
①下载文件
使用 FTP 软件下载官方提供的 SDK,models 等等,到主机与容器共享工作目录下
推荐使用:FileZilla 软件
主机:download.cambricon.com
用户名:找对应的FAE/AE
密码:找对应的FAE/AE
端口:8821
下载 SDK 文件
图(12)
下载 models 和 datasets。
图(13)
②容器配置
Caffe 基于 python2.7 环境,Tensorflow 和 Pytorch 都是基于 python3.5的环境。
- 解压 软件包
tar xvf model/Cambricon-MLU270.tar.gz -C workdir
Cambricon-MLU270目录就解压完成了。
- 解压 数据集
cat MLU270_datasets.tar.gza* > MLU270_datasets.tar.gz
tar -xvf MLU270_datasets.tar.gz -C workdir/Cambricon-MLU270
- 解压 模型包【一般情况下,先使用caffe作为测试,或者根据自己的情况选择框架】
tar -xvf Cambricon-MLU270-models-caffe.tar -C workdir/Cambricon-MLU270
tar -xvf Cambricon-MLU270-models-tensorflow.tar -C workdir/Cambricon-MLU270
tar -xvf Cambricon-MLU270-models-tensorflow_models.tar -C workdir/Cambricon-MLU270
tar -xvf Cambricon-MLU270-models-mxnet.tar -C workdir/Cambricon-MLU270
tar -xvf Cambricon-MLU270-models-pytorch.tar -C workdir/Cambricon-MLU270
- x.0
一键配置包,完成配置docker环境,工作是未在发布包里面的,需要自行下载。
下载路径: 链接:https://pan.baidu.com/s/104zGbXOQZCY2ULRgxCWF-Q 提取码:4wke |
该工具包原理:主要执行prepare_env.sh文件
完成:
- 安装 neuware-mlu270-x.y.z-xxx.deb
- 安装 cnas-x.x.x.deb
- 安装 cncc-x.y.z.deb
- 替换/etc/apt/sources.list 为ali源
- 更新conf源
- 切换py为py35
- Bazel-cache放到/root/.cache下,tensorflow编译依赖的包
- pkg_resources是pip依赖的package
- configure_tf/caffe/pt/mxnet.sh 复制到Cambricon-MLU270目录下,编译单模块编译
【注意】
如果不使用该工具包需要手动完成。
最后在Cambricon-MLU270结构如下图(14):其中,红框部分为主体文件夹。
图(14)
③编译运行 caffe
切换 python3.5->2.7
图(15)
$source env_caffe.sh //每次进入 docker 容器都要执行一次
$./configure_caffe.sh
$./run_caffe.sh
运行效果如图(16)所示
图(16)
参考资料:
- Cambricon-Neuware-SDK-Installation-And-Updation-Guide-CN-v1.2.5
- Cambricon-CNToolkit-Installation-And-Updation-Guide-CN-v1.6.1
- Cambricon-Driver-User-Guide-CN-v4.8.0
- Cambricon-Caffe-User-Guide-CN-v5.3.3
评论