Comments (6)
看起来是需要通过 android_nnapi 部署量化模型?从错误日志看,应该不是一个全量化模型,导致子图中仍存在 calib 算子,原因可能是部分算子的量化信息缺失,之前有跑通过 https://www.paddlepaddle.org.cn/lite/v2.12/demo_guides/android_nnapi.html 文档提供的模型吗?
from paddle-lite.
和上面提问的是同一个人
推理程序跑过mobilenet_v1_int8_224_per_layer,可以正常推理
模型转换是用的 onnx ----x2paddle---> paddle ----paddleslim-----> paddle(quant) -----paddleliteopt----> paddlelite 路线
量化使用的是PostTrainingQuantization,具体参数如下
PostTrainingQuantization(
executor=exe,
model_dir=os.path.join(model_path, "inference_model"),
model_filename='model.pdmodel',
params_filename='model.pdiparams',
data_loader=loader,
algo='hist',
round_type='round',
hist_percent=0.9999,
weight_bits=8,
activation_bits=8,
is_full_quantize=True,
activation_quantize_type='range_abs_max',
weight_quantize_type='channel_wise_abs_max',
quantizable_op_type=[
"conv2d", "depthwise_conv2d", "conv2d_transpose", "elementwise_add",
"mul", "matmul", "matmul_v2"
],
optimize_model=False,
onnx_format=True,
batch_nums=calib_num)
同样的转换和推理代码转另一个模型可以正常推理
推理代码是仿照PaddleLite-generic-demo.tar.gz 里面的例子做的,用了libandroid_nnapi.so,libnnadapter.so,libpaddle_full_api_shared.so,libc++_shared.so, 从这个demo压缩包里提供的
模型转换环境使用 pip安装,具体如下
paddle-bfloat 0.1.7
paddlelite 2.12
paddlepaddle-gpu 2.4.2.post112
paddleslim 2.4.0
x2paddle 1.4.1
有几个疑问:
- paddle里 全量化模型 和 非全量化模型 区别在哪里,如何区分是不是全量化模型
- 调用android_nnapi做推理后端时,如何确认android_nnapi调用的具体实现是哪个(如何判断是否用了推理加速硬件而非cpu原生实现)
- 尝试使用https://www.paddlepaddle.org.cn/lite/v2.12/quick_start/release_lib.html 页面提供的opt工具代替pip安装的paddleliteopt工具进行模型转换,那个能跑通的模型在转换时会报 [F 12/13 15:56: 3.251 ...ptimizer/mir/type_precision_cast_pass.cc:326 AddCastInst] Check failed: is_found: Can't find a 'calib' kernel to trans: Tensor<any,int8_t,NCHW,0>:bilinear_interp_v2_0.tmp_0 -> Tensor<arm,uint8_t,NCHW,0>:arg_max导致转换失败,想确认一下转换工具,推理库之间版本和兼容关系
from paddle-lite.
看起来是需要通过 android_nnapi 部署量化模型?从错误日志看,应该不是一个全量化模型,导致子图中仍存在 calib 算子,原因可能是部分算子的量化信息缺失,之前有跑通过 https://www.paddlepaddle.org.cn/lite/v2.12/demo_guides/android_nnapi.html 文档提供的模型吗?
通过把模型保存为protobuf用netron打开确实发现子图里有calib算子,子图结构大概是这样的
paddle好像会把conv的weight和bias分开变成 无bias的Conv + ElementwiseAdd,这个calib算子出现在每个output之前一个conv层被切开的地方,模型一共18个output,所以日志里不支持DEQUANTIZE算子出现了18次
想问一下为什么这个地方会有calib算子,有什么解决办法吗
from paddle-lite.
看起来是需要通过 android_nnapi 部署量化模型?从错误日志看,应该不是一个全量化模型,导致子图中仍存在 calib 算子,原因可能是部分算子的量化信息缺失,之前有跑通过 https://www.paddlepaddle.org.cn/lite/v2.12/demo_guides/android_nnapi.html 文档提供的模型吗?
通过把模型保存为protobuf用netron打开确实发现子图里有calib算子,子图结构大概是这样的 paddle好像会把conv的weight和bias分开变成 无bias的Conv + ElementwiseAdd,这个calib算子出现在每个output之前一个conv层被切开的地方,模型一共18个output,所以日志里不支持DEQUANTIZE算子出现了18次 想问一下为什么这个地方会有calib算子,有什么解决办法吗
嗯,不应该在 conv2d+add 之间插入 calib 算子的,你把 PaddleSlim 产出的 Paddle 模型上传一下,我看看。
from paddle-lite.
看起来是需要通过 android_nnapi 部署量化模型?从错误日志看,应该不是一个全量化模型,导致子图中仍存在 calib 算子,原因可能是部分算子的量化信息缺失,之前有跑通过 https://www.paddlepaddle.org.cn/lite/v2.12/demo_guides/android_nnapi.html 文档提供的模型吗?
通过把模型保存为protobuf用netron打开确实发现子图里有calib算子,子图结构大概是这样的 paddle好像会把conv的weight和bias分开变成 无bias的Conv + ElementwiseAdd,这个calib算子出现在每个output之前一个conv层被切开的地方,模型一共18个output,所以日志里不支持DEQUANTIZE算子出现了18次 想问一下为什么这个地方会有calib算子,有什么解决办法吗
嗯,不应该在 conv2d+add 之间插入 calib 算子的,你把 PaddleSlim 产出的 Paddle 模型上传一下,我看看。
已经解决了,问题出在PostTrainingQuantization里设置了onnx_format=True, 改成False就好了
from paddle-lite.
看起来是需要通过 android_nnapi 部署量化模型?从错误日志看,应该不是一个全量化模型,导致子图中仍存在 calib 算子,原因可能是部分算子的量化信息缺失,之前有跑通过 https://www.paddlepaddle.org.cn/lite/v2.12/demo_guides/android_nnapi.html 文档提供的模型吗?
通过把模型保存为protobuf用netron打开确实发现子图里有calib算子,子图结构大概是这样的 paddle好像会把conv的weight和bias分开变成 无bias的Conv + ElementwiseAdd,这个calib算子出现在每个output之前一个conv层被切开的地方,模型一共18个output,所以日志里不支持DEQUANTIZE算子出现了18次 想问一下为什么这个地方会有calib算子,有什么解决办法吗
嗯,不应该在 conv2d+add 之间插入 calib 算子的,你把 PaddleSlim 产出的 Paddle 模型上传一下,我看看。
已经解决了,问题出在PostTrainingQuantization里设置了onnx_format=True, 改成False就好了
赞赞,那这个 issue 关了,有问题再建新的 issue 哈~
from paddle-lite.
Related Issues (20)
- 虚拟机中构建寒武纪镜像失败 HOT 1
- 什么时候会支持麒麟9000s芯片 HOT 1
- android,将ch_PP-OCRv4模型转为nb后,运行报错 HOT 7
- PPOCRv4模型的opencl部署支持 HOT 9
- OPENCL_MEMORY_CONFIG_FILE环境变量如何使用?按照文档中的配置conv2d在device:cpu上不生效 HOT 11
- ppshutuv2 使用paddle lite转换为.nb部署在image_classification_demo上时运行报 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 16089 (Predictor Worke), pid 15982 (_classification) HOT 3
- lib/arm64/libpaddle_light_api_shared.so出错~ HOT 3
- arm和opencl兼容性 HOT 2
- loongarch 平台下,跑 PaddleLite-generic-demo.tar.gz ,显示feed无法找到 HOT 11
- paddlevideo的3d模型部署 HOT 1
- paddle静态图推理正常,转nb格式后输出不稳定 HOT 4
- paddle什么时候支持rv1106的芯片 HOT 4
- PaddleLite在华为Ascend系列芯片上推理支持INT8或FP16推理吗,该怎么配置 HOT 1
- 模型转换报错 elementwise_add_bias_dims not equal to 1, fusion failed HOT 10
- 华为Acend310芯片使用pplite进行推理cpu解码慢,预处理慢,能借助dvpp硬解码和Aipp进行预处理吗 HOT 2
- Ubuntu编译错误 file STRINGS file /.tailored_kernels_source_list" cannot be read. HOT 2
- PaddleLite V2.10 编译鸿蒙报错 HOT 5
- YOLOV5 模型转换后运行错误 HOT 2
- libmklml_intel.so 报错 HOT 1
- Android端reload分类模型后预测改变且多个测试图片汇聚在同一类 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from paddle-lite.