pytorch模型定点化记录

本文介绍了深度学习模型在端侧迁移的定点化过程,包括模型转ONNX、ONNX量化及PC与芯片端对齐。首先,选择适合芯片计算能力的模型并检查支持的算子和层类型。接着,利用量化API进行模型打包和量化,通过数据生成器确保精度。最后,进行模型输出对齐以验证正确性,为优化和部署做好准备。

定点化的意义

深度学习模型往端侧迁移时通常受限于芯片的计算能力,PC端训练的模型是浮点型,而芯片端是整型计算,此时就需要做模型定点化

定点化流程

第一步:模型转ONNX
第二步:ONNX打包量化
第三步:PC和芯片端对齐

具体如下:

1. 模型转ONNX

通常芯片厂商会有对应的文档指引,主要关注:支持的最大flops,支持的算子,layer类型,量化的API。

1.1 支持的最大flops

根据芯片所支持的flops选择合适的移动端模型,如Mobilenet,shuffleNetv2等。flops即加乘运算数

1.2 支持的算子

选择了合适的模型后,通常有些芯片不支持模型的一些操作,如transpose,此时就需要手动实现这些算子

1.3 layer 类型

NDK文档中会有所支持的层类型,如果选择的模型中有不支持的层,可以选择做一些替换,如pooling可以用1x1卷积,不同的relu类型

1.4 量化API

做完了1,2,3的准备工作后,通常我们需要把模型转onnx,再通过onnx进行模型打包量化,不同框架转onnx可以查阅对应的官网代码

2. ONNX打包量化

2.1 onnx打包

转完onnx后通常芯片厂商为了减小计算量会进行模型的打包,模型打包主要是进行层合并,如果有不支持的层类型,在执行这一步操作的时候也会有对应的报错提示。

2.2 量化

模型打包完之后接下来就是

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值