Toybrick

RV1126 NPU计算精度

ozgaga

注册会员

积分
63
发表于 2022-5-31 22:12:11    查看: 296|回复: 1 | [复制链接]    打印 | 显示全部楼层
本帖最后由 ozgaga 于 2022-5-31 22:13 编辑

阅读Rockchip_User_Guide_RKNN_API_V1.7.0_CN这个文档(里面有介绍NPU的相关内容)后
我发现RKNN模型有个量化的过程,量化后的选择有以下三种:float32分别转“uint8”、“int8”和“int16”;不量化则是“float16”,共四种,NPU则按照这四种精度之一进行计算
意思是原始数据需要是float32数据类型,同时,NPU处理的最高精度是float16,是这样吗?
那pytorch模型中一般都是double64数据类型,rknn工具在模型转化的时候应该是会考虑到NPU精度的问题吧,不用修改pytorch模型中的计算精度吧
最后一个问题就是:NPU这样降低精度的计算,能保证和原来本地GPU上pytorch模型一样的结果吗,计算精度的下降会对结果产生影响吧
回复

使用道具 举报

jefferyzhang

论坛元老

积分
10458
发表于 2022-6-1 08:51:43 | 显示全部楼层
本帖最后由 jefferyzhang 于 2022-6-1 08:57 编辑

1. RKNN量化默认INT8精度,INT16和F16都会影响性能
2. 你站的角度是实验室,RK要考虑的是客户工程化落地问题,F32固然无脑迁移模型,但功耗、价格和芯片面积就直线上升
3. 就连Tensorflow、pytorch也考虑工程化问题,都支持训练量化,只要你用TF训练量化的模型转RKNN,精度是完全一样的。
4. 如果你的项目对功耗和价格或者芯片面积不敏感,那这颗芯片其实并不合适你的项目使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表