×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【开发者学院】中级课程—MagicMind 使用(4节)(本文附课后小练习答案) 三叶虫2023-02-23 17:13:33 回复 查看 社区交流 干货资源
【开发者学院】中级课程—MagicMind 使用(4节)(本文附课后小练习答案)
分享到:

image.png

MagicMind 系列中级课程已更新,以下为简介及课后练习答案:

一、《MagicMind 特性之混合精度》

简介 讲解量化基础、MagicMind 混合精度使用的一般方法以及量化校准器的使用

链接:MagicMind 特性:混合精度 – 寒武纪开发者社区 (cambricon.com)

课后习题:

1MagicMind支持哪几种混合精度模式,以及混合精度的优势?

2MagicMind支持哪几种精度粒度设置?优先级如何?

3量化校准流程是如何?校准器如何使用?

4如何快速评估量化模型性能?

答案:

1.支持force_float32/force_float16/qint8_mixed_float32/qint8_mixed_float16/

qint16_mixed_float32/qint16_mixed_float16 共6中混合精度模式;

2.按网络粒度设置和按算子粒度设置;当同时设置整网粒度和算子粒度,且二者不同时,算子粒度具有更高优先级

3.解析模型->获取校准数据->创建校准器->设置量化算法和模型精度->校准网络并生成量化模型

校准器的使用:实现一个继承于 CalibDataInterface 虚基类的子类,并实现基类的所有虚函数;使用校准数据创建校准器,调用calibrator.calibrate完成网络的校准

4.使用mm_build 和mm_run 工具

二、《MagicMind 特性之 PluginOp》

简介 讲解如何在 MagicMind 中添加自定义算子及使用

链接:MagicMind 特性:PluginOp – 寒武纪开发者社区 (cambricon.com)

课后习题

Q1为什么需要自定义算子?

Q2MagicMind添加自定义算子的一般流程?

Q3MagicMind使用自定义算子有哪几种方式?

答案

A1、 某些运算逻辑没有对应算子,或无法组合基础 API 实现; 通过算子融合追求更高的计算性能

A2、 Plugin算子定义->实现MM算子Kernel->注册MM算子Kernel->编译动态库

A3、 自定义算子的使用可以通过API使用,也可以通过parser使用.

 

三、《MagicMind 进阶之精度调试》

简介 讲解常见精度问题、处理思路以及精度调试工具的使用

链接:MagicMind 进阶:精度调试 – 寒武纪开发者社区 (cambricon.com)

课后习题

Q1、精度出现问题时,可以从哪些方面排查?

Q2、确定模型算子精度有问题时,有哪些解决方法?

答案

A1、前处理、推理、后处理三方面去排查

A2

image.png

首先使用Debugtools,设置相同的精度类型,分别获取该模型在Magicmind和框架的逐层数据,并进行逐层对比,

1)如果算子差异超过了阈值(一般是0.05),并且是量化模型,先看下量化设置是否已经对比,没对齐需要对齐后再比对;

2)如果已经对齐了,算子差异还是超过阈值,说明该量化算子在MagicMind上的实现可能有问题,可以尝试提升该算子精度,如果无法解决就需要在寒武纪社区论坛寻求帮助。

3)如果是非量化模型且算子差异超过阈值,说明该量化算子在MagicMind上的实现可能有问题;可以尝试提升该算子精度,如果无法解决就需要在寒武纪社区论坛寻求帮助;

4)如果算子差异没超过阈值,即框架模拟也有类似问题,说明该算子不适合该精度类型,可以提升该算子精度再推理;对量化模型可以进行敏感度分析,找出敏感算子来提升精度。

 

四、《MagicMind 进阶之性能优化》

简介 讲解 MagicMind 网络性能优化的一般思路和性能分析

链接:MagicMind 进阶:性能优化 – 寒武纪开发者社区 (cambricon.com)

课后习题

Q1、Throughput 和Latency 分别是怎么定义的?

Q2、常用的优化手段有哪些?(列举3个以上)

Q3、列一下性能数据采集的步骤?

答案

A1吞吐率(throughput):在单位时间内能完成多少次推理请求

Throughput(qps) = Batchsize per launch * Launch times / Walltime

延时(Latency):指单次推理请求的总响应时间

Latency = D2HEnd – H2DStart = H2D time + Compute time + D2H time

A2、调整输入输出物理布局、使用混合精度、使用自定义算子、BatchSize调优、多实例并发等

A3、创建和配置数据采集->开启数据采集->标记Step ->开启PMU理论值数据量显示(可选)->开启内存采样功能(可选)->停止数据采集->销毁数据采集


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭