寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建
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: 有问题请留言,看到后我会第一时间回复。
寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建的更多相关文章
- 寒武纪加速平台(MLU200系列) 摸鱼指南(四)--- 边缘端实例程序分析
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 寒武纪加速平台(MLU200系列) 摸鱼指南(一)--- 基本概念及相关介绍
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 春节前“摸鱼”指南——SCA命令行工具助你快速构建FaaS服务
春节将至,身在公司的你是不是已经完全丧失了工作的斗志? 但俗话说得好:"只要心中有沙,办公室也能是马尔代夫." 职场人如何才能做到最大效能地带薪"摸鱼",成为了 ...
- Storm 系列(四)—— Storm 集群环境搭建
一.集群规划 这里搭建一个 3 节点的 Storm 集群:三台主机上均部署 Supervisor 和 LogViewer 服务.同时为了保证高可用,除了在 hadoop001 上部署主 Nimbus ...
- (转)微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
原文传送门(http://blog.csdn.net/bingtianxuelong/article/details/17843111) 版本说明: V1: 2014-2-13 ...
- ATT&CK实战系列 红队实战(一)————环境搭建
首先感谢红日安全团队分享的靶机实战环境.红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习.视频教程.博客三位一体学习. 靶机下载地址:http://vulnstack.qiyuanxue ...
- phonegap 开发指南系列(3) ----在Eclipse中Android开发环境搭建
前提条件:已在Eclipse中安装好Android SDK 和 ADT. 1.下载PhoneGap,解压. 2.用Eclipse新建一个安卓项目. 3.将phoneGap解压包里的Android文 ...
- Storm 系列(三)—— Storm 单机版本环境搭建
1. 安装环境要求 you need to install Storm's dependencies on Nimbus and the worker machines. These are: Jav ...
- Hadoop 系列(五)—— Hadoop 集群环境搭建
一.集群规划 这里搭建一个 3 节点的 Hadoop 集群,其中三台主机均部署 DataNode 和 NodeManager 服务,但只有 hadoop001 上部署 NameNode 和 Resou ...
随机推荐
- P3645-[APIO2015]雅加达的摩天楼【bfs,根号分治】
正题 题目链接:https://www.luogu.com.cn/problem/P3645 题目大意 \(n\)个点,\(m\)条狗,第\(i\)条狗可以往左或者右跳恰好\(p_i\)步,开始是\( ...
- JVM探针与字节码技术
JVM探针是自jdk1.5以来,由虚拟机提供的一套监控类加载器和符合虚拟机规范的代理接口,结合字节码指令能够让开发者实现无侵入的监控功能.如:监控生产环境中的函数调用情况或动态增加日志输出等等.虽然在 ...
- WPF实现聚光灯效果
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 前言 效果仿照 CSS聚光灯效果 实现思路: 1. 设置底部Canvas背景色 #222222 . 2. ...
- 设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01
在<vivo 营销自动化技术解密 |开篇>中,我们从整体上介绍了vivo营销自动化平台的业务架构.核心业务模块功能.系统架构和几大核心技术设计. 本次带来的是系列文章的第2篇,本文详细解析 ...
- nginx禁止IP访问系统
server { listen 80 default; server_name _; if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; ...
- 如何通过 Serverless 技术降低微服务应用资源成本?
前言 在大型分布式 IT 架构领域,微服务是一项必不可少的技术.从本质上来讲,微服务是一种架构风格,将一个大型的系统拆分为多个拥有独立生命周期的应用,应用之间采用轻量级的通信机制进行通信.这些应用都是 ...
- NOIP模拟76
前言 还有不到 10 天就要 CSP-S ...马上我就要有我的第一篇游记了. 今天考试莽了一回,整了大概 2.5h 的 T1 ,可能是因为今天题目比较难,看起来成效不错. 以后还是要注意时间的分配( ...
- 回归本心QwQ背包问题luogu1776
今天在这里说一下多重背包问题 对 之前一直没有怎么彻底理解 首先多重背包是什么?这里就不做过多的赘述了 朴素的多重背包的复杂度是\(O(n*m*\sum s[i])\),其中\(s[i]\)是每一件物 ...
- 2020.3.28-ICPC训练联盟周赛,选用试题:UCF Local Programming Contest 2016
A.Majestic 10 签到题. #include<iostream> #include<cstdio> #include<cstring> #include& ...
- struts2漏洞复现分析合集
struts2漏洞复现合集 环境准备 tomcat安装 漏洞代码取自vulhub,使用idea进行远程调试 struts2远程调试 catalina.bat jpda start 开启debug模式, ...