资讯 更多 >>
环球视讯!MegEngine 使用小技巧:量化
《海贼王》963话:光月御田真正实力...
中国boy直播间弹幕_中国boy的直播间...
2连板新华文轩:公司近期不存在签订...
美警误杀非裔女性后脱罪还重返警察...
【天天热闻】画图a4纸尺寸是多少像...
【新视野】滨州市公积金中心2022年...
俄罗斯央行3月抛售3.1吨黄金,仍为...
国家航天局与亚太空间合作组织签署...
滑模式摊铺机优缺点(什么是滑模式...
动态更多 >>
武汉市烟花爆竹燃放规定2023_全球速递
大金重工董秘回复:公司截至2023年1...
左江科技01月10日获深股通增持5.12万股
【当前热闻】百勤油服(02178)授出75...
目标规模50亿元!郑州市产业母基金...
郑州至比利时列日货航成功首航 每日焦点
京东金条延迟还款会上征信吗
世界关注:有意思小周刊(2023.01.0...
IPv6板块1月9日跌0.39%,东方通领跌...
中邮钱包网贷逾期51年会影响征信吗
会展 更多 >>
美籍酿酒师在崇礼:中国是第二故乡...
河南项城报告2名疑似新冠肺炎病例 ...
浙江绍兴确诊病例首次零新增 上虞...
广西东兴实行全员居家隔离 启动口...
新疆全方位推进乡村振兴 “富春山...
云南瑞丽市主城区全员核酸检测结果...
内蒙古满洲里累计治愈出院本土确诊...
孙海洋夫妻驱车山东阳谷:还在为孙...
大国工匠追梦“玉米强国”40载:用...
让南海“海洋热带雨林”斑斓多彩
专题报道 
当前位置: 资讯 > >> 正文
 
环球视讯!MegEngine 使用小技巧:量化
来源:博客园     时间:2023-04-25 19:12:04

常见神经网络模型所用的 Tensor 数据类型 一般是 float32 类型, 而工业界出于对特定场景的需求(极少的计算资源,极致的推理速度),需要把模型的权重和或激活值转换为位数更少的数值类型(比 int8, float16) —— 整个过程被称为量化(Quantization)。

通常以浮点模型为起点,经过中间的量化处理后最终变成量化模型,在这个过程中一般会导致模型掉点。

目前业界缓解模型掉点的问题的技术主要有两种,在 MegEngine 中都进行了支持:


(资料图片仅供参考)

  • 训练后量化(Post-Training Quantization, PTQ);

  • 量化感知训练(Quantization-Aware Training, QAT)。

更多量化基本流程:量化基本流程介绍

整体流程

以量化感知训练为例,一般以一个训练完毕的浮点模型为起点,称为 Float 模型。 包含假量化算子的用浮点操作来模拟量化过程的新模型,我们称之为 Quantized-Float 模型,或者 QFloat 模型。 可以直接在终端设备上运行的模型,称之为 Quantized 模型,简称 Q 模型。

而三者的精度一般是 Float > QFloat > Q ,故而一般量化算法也就分为两步:

  • 拉近 QFloat 和 Q,这样训练阶段的精度可以作为最终 Q 精度的代理指标,这一阶段偏工程;

  • 拔高 QFloat 逼近 Float,这样就可以将量化模型性能尽可能恢复到 Float 的精度,这一阶段偏算法。

典型的三种模型在三个阶段的精度变化如下:

对应到具体的 MegEngine 接口中,三阶段如下:

  1. 基于 Module 搭建网络模型,并按照正常的浮点模型方式进行训练;
  2. 使用 quantize_qat 将浮点模型转换为 QFloat 模型, 其中可被量化的关键 Module 会被转换为 QATModule , 并基于量化配置 QConfig 设置好假量化算子和数值统计方式;
  3. 使用 quantize 将 QFloat 模型转换为 Q 模型, 对应的 QATModule 则会被转换为 QuantizedModule , 此时网络无法再进行训练,网络中的算子都会转换为低比特计算方式,即可用于部署了。

此处为标准量化流程,实际使用时也可有灵活的变化。

ResNet 实例讲解下面我们以 ResNet18 为例来讲解量化的完整流程。主要分为以下几步:

  1. 修改网络结构,使用已经融合好的 ConvBn2d、ConvBnRelu2d、ElementWise 代替原先的 Module. 在正常模式下预训练模型,并在每轮迭代保存网络检查点;
  2. 调用 quantize_qat 转换模型,并进行量化感知训练微调(或校准,取决于 QConfig);
  3. 调用 quantize 转换为量化模型,导出模型用于后续模型部署。

详细操作指南文档见:ResNet 实例讲解

附:

「MegEngine 使用小技巧」系列文章,重点输出 MegEngine 及周边工具的使用技巧,如有催更或投稿,欢迎联系我们哦~

技术交流 QQ 群:1029741705;Bot 微信:megengine-bot

更多 MegEngine 信息获取,您可以:查看文档和 GitHub 项目。欢迎参与 MegEngine 社区贡献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

关键词:

热门推荐
猜你喜欢