寒武纪MLU220-M.2边缘端智能加速卡支持 简介 MLU220-M.2 加速卡采用思元220芯片,芯片基于寒武纪MLUv02架构。加速卡采用 标准M.2接口,理论峰值性能为8TOPS,功耗仅为8.25W。可以轻松实现终端设备 和边缘段设备的AI赋能方案。 MLU220-M.2加速卡用于离线模型的部署,离线模型在MLU220上运行, 不依赖AI 框架,只需要利用CNRT库,即可实现高效的AI推理运算。 如果需要对模型转化、量化、开发、精度调优等需要在配合MLU270在x86 PC上完 成,然后生成离线模型,部署到MLU220加速卡上。 核心特性 寒武纪MLUv02架构 多达16个张量核心,借助NOC片上网络提升并行效率 硬件片内数据压缩,提升缓存有效容量和带宽 更全面AI精度支持: INT16, INT8, INT4, FP32, FP16 小个头大智能 U盘大小,可以提供8路高清视频的实时智能分析 计算弹性和可编程 高效支持多种神经网络 寒武纪Neuware软件栈和BANG语言编程环境,满足全面AI定制化要求 全面支持模型拆分并行,多模型并行,最大化计算效率 MLU220 与 MLU270 MLU220产品定位 开发调试: 基于MLU270板卡,在线模式(使用AI框架),通用性高,可生成离 线模型 业务部署: 基于MLU220板卡,离线模式(脱离AI框架),直接加载离线模型, 性能更优 MLU220 离线部署 MLU220 应用流程 MLU220 + Firefly AIO-3399J硬件平台 系统固件更新 Firefly AIO-3399J操作系统使用Firefly定制的Ubuntu18.04. 系统中已经适配 了MLU220 离线运行环境。包含以下几个部分: MLU220-M.2 内核驱动 CNToolKit 运行库 编译工具链 CNStream SDK / Demo。 固件下载地址如下: AIO-3399J Ubuntu18.04 MLU220固件 选择AIO-3399J-UBUNTU18.04-MLU220-GPT-**.img.7z 固件升级方法参照: AIO-3399J 固件升级 验证运行环境 在系统启动完成进入桌面后,可以使用以下命令验证为了验证当前环境是否已经 正确配置,如有异常,请与Firefly客服联系。 firefly@firefly:~$ lspci -v -d:0220 0002:21:00.0 Processing accelerators: Device cabc:0220 Subsystem: Device cabc:0033 Flags: bus master, fast devsel, latency 0, IRQ 114 Memory at 381000000 (64-bit, prefetchable) [size=16M] Memory at 382000000 (64-bit, prefetchable) [size=8M] Memory at 380c00000 (64-bit, prefetchable) [size=2M] Capabilities: Kernel driver in use: cambricon-pci-drv Kernel modules: cambricon_drv firefly@firefly:~$ ls /dev/cambricon_* /dev/cambricon_ctl /dev/cambricon_dev0 firefly@firefly:~$ cnmon Wed May 19 10:33:51 2021 +-----------------------------------------------------------------------------+ | CNMON 1.16.0 | +------------------------------+----------------------+-----------------------+ | Card VF Name Firmware | Inited Driver | Util Ecc-Error | | Fan Temp Pwr:Usage/Cap | Memory-Usage | vMemory-Usage | |==============================+======================+=======================| | 0 / MLU220-M2 v1.1.1 | On v4.6.9 | 0% N/A | | 0% 51C 3.70 W/ 8.25 W | 967 MiB/ 4096 MiB | 10240 MiB/1048576 MiB | +------------------------------+----------------------+-----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | Card VF PID Command Line MLU Memory Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ 运行CNStream Demo (yolov3) firefly@firefly:~$ cd /home/firefly/cnstream/samples/demo/detection/mlu220 firefly@firefly:~/cnstream/samples/demo/detection/mlu220$ ./run_yolov3_mlu220.sh yolov3_4c4b_argb_220_v1.5.0.cambricon exists. /home/firefly/cnstream/samples/demo/detection/mlu220 /home/firefly/cnstream/samples/demo/detection/mlu220 Rga built version:06fc7c4 CNRT: 4.7.5 3d3546b WARNING: Logging before InitCNStreamLogging() is written to STDERR CNSTREAM REFLEX_OBJECT I0519 10:36:26.904601 2121] Register object named [PreprocCpu] CNSTREAM REFLEX_OBJECT I0519 10:36:26.906293 2121] Register object named [ObjPreprocCpu] CNSTREAM REFLEX_OBJECT I0519 10:36:26.906965 2121] Register object named [PreprocYolov3] CNSTREAM REFLEX_OBJECT I0519 10:36:26.907565 2121] Register object named [VideoPreprocCpu] ... CNToolKit 运行库介绍 CNToolKit运行库类组件主要为用户提供部署环境和开发环境中的运行时支持。 在MLU220中,只支持边缘端的部署环境。 CNRT CNRT(Cambricon Neuware Runtime Library,寒武纪运行时库)提供了 一套面向MLU(Machine Learning Unit,寒武纪机器学习单元)设备的高级别的 接口,用于主机与MLU设备之间的交互。CNRT作为寒武纪软件系统最底层支撑, 所有其他的寒武纪软件运行都需要调用CNRT接口。 有关CNRT的详细开发文档, 请参见寒武纪官方文档-CNRT CNCodec CNCodec(Cambricon Neuware Codec,寒武纪硬件编解码)是一套封 装了视频编解码和图片编解码的SDK接口。 CNCodec典型应用场景如:带有 CNCodec板卡的主机接收IP Camera传输过来的码流数据,CNCodec接收到码流数 据后,将数据输入给VPU(Video Processor Unit,视频处理单元)或JPU(JPEG Processor Unit,JPEG处理单元)进行硬件编解码, 编解码得到的图片数据送 给MLU(Machine Learning Unit,寒武纪机器学习单元)进行推理,推理完成后 返回推理结果至主机。 有关CNCodec的详细开发文档,请参见寒武纪官方文档 -CNCodec CNDev CNDev(Cambricon Neuware Device Interface,寒武纪设备接口)是一 套支持主机端应用程序获取寒武纪芯片硬件信息的软件接口。 通过CNDev接口, 用户可以对设备管理实现定制化需求,比如云服务平台的设备管理、自动化测试 平台的设备管理等。 CNDev主要实现了以下功能: 获取设备硬件信息,比如 :设备名称、设备利用率、板卡功耗、板卡温度、板卡带宽、风扇转速等。 评 测应用程序在寒武纪硬件设备上的开销,比如:内存占用、MLU利用率等。 提 供获取设备间拓扑逻辑以及CPU亲和性等相关信息的功能。 有关CNDev的详细开 发文档,请参见寒武纪官方文档-CNDev CNDrv CNDRV API(Cambricon Driver Application Programming Interface, 寒武纪驱动应用程序接口)提供了一套面向MLU(Machine Learning Unit,机器 学习单元)设备的接口,用于主机与MLU设备之间的交互。 CNDRV API作为寒武 纪软件系统的底层支撑,向下封装了对更底层驱动的操作,向上提供了可以调用 的接口,通过该接口实现了上层对底层驱动的操作。 上层框架既可以间接通过 CNRT(Cambricon Neuware Runtime Library,寒武纪运行时库)调用CNDRV API 进行软件编程,也可以直接调用CNDRV API进行软件编程。 有关CNDrv的详细开 发文档,请参见寒武纪官方文档-CNDrv CNStream SDK CNStream是面向寒武纪开发平台的数据流处理SDK。用户可以根据CNStream提供 的接口,开发实现自己的组件。还可以通过组件之间的互连,灵活地实现自己的 业务需求。CNStream能够大大简化寒武纪深度学习平台提供的推理和其他处理, 如视频解码、神经网络图像前处理的集成。也能够在兼顾灵活性的同时,充分发 挥寒武纪MLU(Machine Learning Unit 机器学习处理器)的硬件解码和机器学 习算法的运算性能。 CNStream 开源项目地址: https://github.com/cambricon/cnstream CNStream 详细开发文档: https://www.cambricon.com/docs/cnstream/developer_guide_html/index.ht ml https://www.cambricon.com/docs/cnstream/user_guide_html/overview/Over view.html 开发流程 MLU220-M.2加速卡用于离线模型的部署,如果需要对模型转化、量化、开发、精 度调优等需要在配合MLU270在x86 PC上完成。 配合寒武纪人工智能开发平台(Cambricon NeuWare®),用户在x86 PC上,利用 MLU270智能加速卡,完成的开发工作,保存生成的离线模型。 然后再将保存生成的离线模型,部署到Firefly AIO-3399J平台上。 更多关于Cambricon NeuWare的文档,请参阅 寒武纪官方文档