寒武纪加速平台(MLU200系列) 摸鱼指南(一)--- 基本概念及相关介绍
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=111)
环境说明
无
前言
从2019年开始,我们公司的智能分析平台核心架构就开始逐渐的转向了RK3399PRO,这是我们公司的第三代智能分析平台,前面两代分别是TK1和TX2,但是因为众所周知的原因,这一代分析平台选择了国内的一些替代商。经过了2019年和2020年的实际部署和使用,对于第三代智能分析平台来说,有一个硬性缺陷就是NPU算力过低(INT8 3T),导致了某些算法达不到实时帧率,其其他的性能还是不错的,如CPU计算力、编解码等等。正是由于这个算力的缺陷,所以在2020年,我们调研了市场上的其他算力平台的情况,经过某些渠道,我们和寒武纪联系上了。寒武纪给我们介绍了他们的MLU200系列智能分析平台的情况,并提供了相应测试板卡,经过相应的测试后,我们技术人员及公司领导对其比较认可,因此决定第四代平台会加入寒武纪的推理模块,最终形成了以RK作为主控,寒武纪作为推理模块的形式,为什么这样搭建,后文有所提及。由于现在市场上已经出现了类似我们公司的第四代智能分析平台的产品,于是相关介绍可以进行解密脱敏发布。本系列文章就是对这个寒武纪平台做一些简单的介绍及总结。
若文中引用部分存在侵权,请及时联系我删除。
寒武纪加速平台简介
寒武纪加速平台是有两个部分构成,一个部分是算力硬件,一部分是配套的软件。
寒武纪硬件部分
首先,这里介绍的是寒武纪的MLU200系列,在本文发布时,其实其MLU200系列的升级版,MLU300系列也在寒武纪内部及其相关的合作伙伴正在测试。
对于MLU200系列来说,我们从其官网可以看到,大概存在3个系列,一个是边缘端推理MLU220(只支持推理),一个是服务器端推理MLU270(只支持推理),一个是MLU290(支持训练和推理)。可以从其官网(https://www.cambricon.com/) 查看更加详细的介绍。
对于MLU220来说,这里介绍两个比较重要的参数,具备两种形态,一种是INT8 8T算力+8.25W功耗,一种是INT8 16T算力+16.5W功耗。MLU220边缘端模块正是我们公司第四代智能分析平台的核心部件之一,但是由于其CPU计算能力较弱,导致不能够进行大量的业务逻辑运算,这也是某些场景可能需要其他主控的原因。
对于MLU270来说,除了部署服务端的智能分析算法外,其对我们来说最重要的功能是作为模型移植的硬件。我们的智能分析算法想要比较好的工作在MLU220边缘端,就必须要经过MLU270上进行模型移植,这也是后续文章的重点之一。
对于MLU290来说,我们公司没有使用,但是看其介绍,一般来说都是应用在各云厂商、机房和服务中心等,其的最大亮点是支持模型训练。
寒武纪软件部分
寒武纪软件部分我大概可以分为3类,一个是驱动,一个是运行时库,一个是其相关的算法框架等。如其官网的结构图:
从上图来看,在相关的算法框架那块里面,还包含了两个我们实际用到了,但是其图中没有给出的介绍。图中的相关算法框架部分都是用于算法训练、推理、移植使用的。其实在推理部分来看(运行时之上),还应该包含寒武纪出的两个开源工程:EasyDK以及CNStream。
EasyDK是其基于其运行时库封装的一些常用和简易接口,对我们来说,可能最常用的就是关于离线模型推理部分。相关介绍请参见其官网: https://github.com/Cambricon/easydk
CNStream是其基于EasyDK封装的一套应用层库,我觉得其和deepstream和MediaPipe有异曲同工之妙。相关介绍请参见其官网:https://github.com/Cambricon/CNStream
其实从这里我们可以看出,一般来说,我们自己的推理端的程序和服务,有三种形态:
- 基于CNStream进行开发,其封装的还不错,并行处理的还行,但是可能就是不能够很好的和自己以前的程序框架移植和融合。
- 基于EasyDK进行开发,简化调用及开发流程,但是会有些坑需要去阅读EasyDk源码和运行时相关的SDK文档。
- 基于其运行时相关的SDK文档进行开发,需要花大量的时间进行学习,适合长期工作在此平台的相关人员。
对于我们公司来说,我们现在基本工作在EasyDK和其运行时之间,基于这两个进行混合编程,最终的理想状态是直接基于其运行时库进行开发。
寒武纪加速平台使用简介
在前言部分已经介绍过了,我们公司的第四代智能分析平台的核心构成部分是MLU220。因此,我们公司做的事情其实将已经训练好的Caffe、Pytorch等框架的模型移植到寒武纪平台。寒武纪平台根据其定位做了云端和终端的商业定位。其官网介绍图如下:
下面我对我司使用的基本流程做一个简介。
部署流程简介
寒武纪平台的部署流程有一条主线是将一个原始模型转为一个离线模型。基本流程如下:
- 得到算法的原始模型,如caffe/pytorch/tensorflow等框架的模型。
- 配置对应框架模型的模型转换环境,有两种一种是手动配置,一种是docker。
- 使用对应的框架模型转换环境,进行模型量化、转换得到离线模型。
- 开发支持离线模型的程序应用,调用离线模型进行推理并做其他处理。
关于我司使用的基本流程,后续文章将会有一个实例来详细展开说明,这里就不多介绍了。
后记
本文主要介绍了寒武纪加速平台的一些概念。更多的详情,请查看寒武纪官网相关的介绍。
其实看到国内的各个软硬一体厂商发展的还是不错的,希望他们可以取得更加长足的发展,希望他们为国产争光。
参考文献
- https://www.cambricon.com/
- 其他相关保密资料。
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
寒武纪加速平台(MLU200系列) 摸鱼指南(一)--- 基本概念及相关介绍的更多相关文章
- 寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 寒武纪加速平台(MLU200系列) 摸鱼指南(四)--- 边缘端实例程序分析
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 春节前“摸鱼”指南——SCA命令行工具助你快速构建FaaS服务
春节将至,身在公司的你是不是已经完全丧失了工作的斗志? 但俗话说得好:"只要心中有沙,办公室也能是马尔代夫." 职场人如何才能做到最大效能地带薪"摸鱼",成为了 ...
- HTML5系列四(特征检测、Modernizr.js的相关介绍)
Modernizr:一个HTML5特征检测库 Modernizr帮助我们检测浏览器是否实现了某个特征,如果实现了那么开发人员就可以充分利用这个特征做一些工作 Modernizr是自动运行的,无须调用诸 ...
- 【转】让Chrome化身成为摸鱼神器,利用Chorme运行布卡漫画以及其他安卓APK应用教程
下周就是十一了,无论是学生党还是工作党,大家的大概都会有点心不在焉,为了让大家更好的心不在焉,更好的在十一前最后一周愉快的摸鱼,今天就写一个如何让Chrome(google浏览器)运行安卓APK应用的 ...
- Thief-Book 上班摸鱼神器
Thief-Book 上班摸鱼神器 介绍 Thief-Book 是一款真正的摸鱼神器,可以更加隐秘性大胆的看小说. 隐蔽性 自定义透明背景,随意调整大小,完美融入各种软件界面 快捷性 三个快捷键,实现 ...
- AI解决方案:边缘计算和GPU加速平台
AI解决方案:边缘计算和GPU加速平台 一.适用于边缘 AI 的解决方案 AI 在边缘蓬勃发展.AI 和云原生应用程序.物联网及其数十亿的传感器以及 5G 网络现已使得在边缘大规模部署 AI 成为可能 ...
- 菜鸡学C语言之摸鱼村村长
题目描述 摸鱼村要选村长了! 选村长的规则是村里每个人进行一次投票,票数大于人数一半的成为村长. 然鹅摸鱼村的人都比较懒,你能帮他们写一个程序来找出谁当选村长吗? (每名村民的编号都是一个int范围内 ...
- [摸鱼]cdq分治 && 学习笔记
待我玩会游戏整理下思绪(分明是想摸鱼 cdq分治是一种用于降维和处理对不同子区间有贡献的离线分治算法 对于常见的操作查询题目而言,时间总是有序的,而cdq分治则是耗费\(O(logq)\)的代价使动态 ...
随机推荐
- Orchard Core入门配方和主题
包含Orchard Core入门配方和主题 可以通过两个不同的NuGet包使用Orchard Core. OrchardCore.Application.Cms.Core.Targets Orchar ...
- redis被360禁止,设置启动
https://blog.csdn.net/blick__winkel/article/details/77986481 一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下 ...
- 【.NET 与树莓派】气压传感器——BMP180
BMP180 是一款数字气压计传感器,实际可读出温度和气压值.此模块使用 IIC(i2c)协议.模块体积很小,比老周的大拇指指甲还小:也很便宜,一般是长这样的.螺丝孔只开一个,也有开两个孔的. 这货基 ...
- 微信小程序Canvas添加水印字体,通过setGlobalAlpha设置字体透明度。
微信小程序自带的设置透明度只有setGlobalAlpha,但是CanvasContext.setGlobalAlpha设置透明度,是全局透明,整张图片都透明了.所以直接使用是不行的. 换种思路实现: ...
- RabbitMQ的web页面介绍(三)
一.Virtual Hosts 每一个 RabbitMQ 服务器都能创建虚拟的消息服务器,我们称之为虚拟主机 (virtual host) ,简称为vhost.每一个 vhost 本质上是一个独立的小 ...
- 干货 | 数据为王,携程国际火车票的 ShardingSphere 之路
以下文章来源于携程技术 ,作者瑞华 作者简介 瑞华,携程高级后端开发工程师,关注系统架构.分库分表.微服务.高可用等. 一.前言 随着国际火车票业务的高速发展,订单量快速增长,单数据库瓶颈层面的问题逐 ...
- SpringBoot-Thymeleaf模板引擎
模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想 ...
- 告别Vuex,发挥compositionAPI的优势,打造Vue3专用的轻量级状态
Vuex 的遗憾 Vuex 是基于 Vue2 的 option API 设计的,因为 optionAPI 的一些先天问题,所以导致 Vuex 不得不用各种方式来补救,于是就出现了 getter.mut ...
- 2021.1.23--vj补题
B - B CodeForces - 879B n people are standing in a line to play table tennis. At first, the first tw ...
- MyBatis原生批量插入的坑与解决方案!
前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法 ...