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)
- Object Detection运行run脚本的时候报错 HOT 6
- 华为Atlas300I(3010,昇腾310)安装Paddle-Lite运行例程出错 HOT 4
- Paddle-Lite通过X2Paddle转化出的nb模型出错 HOT 2
- [BUG] sort_cpuid_by_max_freq()中的bubble sort代码逻辑错误 HOT 4
- 基于Paddle Lite框架下的编译问题 HOT 3
- Android端推理LightGlue模型crash了 HOT 1
- ubuntu 22.04 x64 编译paddle-lite x86出错 lite/CMakeFiles/publish_inference.dir/rule HOT 2
- .pdmodel转换.nb失败,报错Check failed: it != outputs_.end(): HOT 18
- 3399 编译with_opencl后运行示例mobilenetv1_light_api显示不支持opencl HOT 1
- 使用华为NPU推理pp-yoloe-r模型报错,提示cann版本不匹配 HOT 15
- could not create a descriptor for a pooling forward propagation primitive HOT 1
- "树莓派5 编译错误"- v2.13 编译报错、环境信息: (Linux raspberrypi 6.6.28+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.28-1+rpt1 (2024-04-22) aarch64 GNU/Linux) HOT 21
- 预编译库的V2,12下载的压缩包里没有找到python,我要怎么继续下一步得到python--->install--->dist--->paddlelite-*.whl HOT 1
- "树莓派5 编译错误"- v2.13 编译报错 cd09a8e01、环境信息:(Debian arm64 ----armv8 ) ,经检查“cd09a8e01”是git describe --always 值 HOT 3
- 编译无法生成inference_lite_lib.armlinux.armv8.opencl包 HOT 5
- Linux x86平台推理Paddle-OCRv4出错 HOT 4
- Excel file returning empty with no error [URGENT] HOT 1
- 调用nb格式模型时候报错:Segmentation fault (core dumped) HOT 1
- 新人求助,能提供bert,pythonAPI推理部署示例嘛,我该如何做前处理和后处理。 HOT 2
- paddle推理模型转为nb失败 HOT 4
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.