寒武纪加速平台(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)\)的代价使动态 ...
随机推荐
- gin 源码阅读(2) - http请求是如何流入gin的?
推荐阅读: gin 源码阅读(1) - gin 与 net/http 的关系 本篇文章是 gin 源码分析系列的第二篇,这篇文章我们主要弄清一个问题:一个请求通过 net/http 的 socket ...
- 常用的jquery 中一些js
目录: 1.验证用户登录信息 2. 获取下拉框所选中的元素 3. 动态获取 id 和对应文本框的值 4. table 中 tr 的隐藏 5 . 更换图片 6. ajax 进行提交 7. 判断 ...
- file_get_contents('php://input') 数据如何转换成数组
前台表单页:demo01.html 后台:demo01.php 输出结果: 备注:若前台通过Ajax的post提交过来的是json数据,需要对json数据进行解析:$data = json_decod ...
- nginx 配置文件(支持thnkphp3.2~5)
server { listen 8080 ; server_name localhost; set $root /var/www/myweb; #listen 443 ssl; #ssl_certif ...
- 关于Redis的十个高频面试问题
文件来自大神的分析,小弟引用.希望更多的资源能被更多的人分享到!!! 一.Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 如果你是 ...
- 案例分享 | dubbo 2.7.12 bug导致线上故障
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star.搜索关注微信公众号"捉虫大师",后端技术分享,架构设计.性能优化.源码阅读. ...
- 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么 | 百篇博客分析OpenHarmony源码 | v16.02
百篇博客系列篇.本篇为: v16.xx 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪 ...
- P1791-[国家集训队]人员雇佣【最大权闭合图】
正题 题目链接:https://www.luogu.com.cn/problem/P1791 题目大意 有\(n\)个人,雇佣第\(i\)个需要\(A_i\)的费用,对于\(E_{i,j}\)表示如果 ...
- 51nod1600-Simple KMP【SAM,树链剖分】
正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1600 题目大意 给出一个字符串\(s\),每次在最后插入一个字符后求它的 ...
- YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
正题 题目链接:http://www.ybtoj.com.cn/contest/122/problem/3 题目大意 \(S(i)\)表示\(i\)的约数个数,\(Q\)次询问给出\(n,m\)求 \ ...