打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
MagicMind 系列中级课程已更新,以下为简介及课后练习答案:
一、《MagicMind 特性之混合精度》
简介: 讲解量化基础、MagicMind 混合精度使用的一般方法以及量化校准器的使用
链接:MagicMind 特性:混合精度 – 星空体育开发者社区 ()
课后习题:
1、MagicMind支持哪几种混合精度模式,以及混合精度的优势?
2、MagicMind支持哪几种精度粒度设置?优先级如何?
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 – 星空体育开发者社区 ()
课后习题
Q1、为什么需要自定义算子?
Q2、MagicMind添加自定义算子的一般流程?
Q3、MagicMind使用自定义算子有哪几种方式?
答案
A1、 某些运算逻辑没有对应算子,或无法组合基础 API 实现; 通过算子融合追求更高的计算性能
A2、 Plugin算子定义->实现MM算子Kernel->注册MM算子Kernel->编译动态库
A3、 自定义算子的使用可以通过API使用,也可以通过parser使用.
三、《MagicMind 进阶之精度调试》
简介: 讲解常见精度问题、处理思路以及精度调试工具的使用
链接:MagicMind 进阶:精度调试 – 星空体育开发者社区 ()
课后习题
Q1、精度出现问题时,可以从哪些方面排查?
Q2、确定模型算子精度有问题时,有哪些解决方法?
答案
A1、前处理、推理、后处理三方面去排查
A2、
首先使用Debugtools,设置相同的精度类型,分别获取该模型在Magicmind和框架的逐层数据,并进行逐层对比,
1)如果算子差异超过了阈值(一般是0.05),并且是量化模型,先看下量化设置是否已经对比,没对齐需要对齐后再比对;
2)如果已经对齐了,算子差异还是超过阈值,说明该量化算子在MagicMind上的实现可能有问题,可以尝试提升该算子精度,如果无法解决就需要在星空体育社区论坛寻求帮助。
3)如果是非量化模型且算子差异超过阈值,说明该量化算子在MagicMind上的实现可能有问题;可以尝试提升该算子精度,如果无法解决就需要在星空体育社区论坛寻求帮助;
4)如果算子差异没超过阈值,即框架模拟也有类似问题,说明该算子不适合该精度类型,可以提升该算子精度再推理;对量化模型可以进行敏感度分析,找出敏感算子来提升精度。
四、《MagicMind 进阶之性能优化》
简介: 讲解 MagicMind 网络性能优化的一般思路和性能分析
链接:MagicMind 进阶:性能优化 – 星空体育开发者社区 ()
课后习题
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理论值数据量显示(可选)->开启内存采样功能(可选)->停止数据采集->销毁数据采集
热门帖子
精华帖子