openppl-public / ppq

PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool.
Apache License 2.0
1.44k stars 223 forks source link

BatchNormalization量化出错 #542

Open 18liumin opened 3 months ago

18liumin commented 3 months ago

[Warning] Isolated BatchNormalization(/encoder/fea_attention_layers.0/fea_attention_layers.0.0/bn/BatchNormalization) was detected, PPQ will replace it to 11 Convolution(2D). Traceback (most recent call last): File "/home/l00576713/data/megaton-LM/package/temp/profile/test2.py", line 24, in ir = quantize_torch_model( File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/core/defs.py", line 54, in _wrapper return func(args, *kwargs) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/api/interface.py", line 343, in quantize_torch_model return quantize_onnx_model(onnx_import_file=onnx_export_file, File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/core/defs.py", line 54, in _wrapper return func(args, **kwargs) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/api/interface.py", line 251, in quantize_onnx_model ppq_ir = load_onnx_graph(onnx_import_file=onnx_import_file) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/api/interface.py", line 50, in load_onnx_graph return format_graph(graph=ppq_ir) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/api/interface.py", line 627, in format_graph formatter(GraphCommand(GraphCommandType.REPLACE_BATCHNORM_TO_CONV)) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/IR/processer.py", line 130, in call return self.process(command) File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/IR/morph.py", line 28, in process return self.replace_batchnorm_to_conv() File "/home/l00576713/software/anaconda3/envs/megaton/lib/python3.8/site-packages/ppq/IR/morph.py", line 89, in replace_batchnorm_to_conv assert len(op.parameters) == 4, "BatchNorm should have 4 parameters, namely alpha, beta, mean, var" AssertionError: BatchNorm should have 4 parameters, namely alpha, beta, mean, var

18liumin commented 3 months ago

模型的输入维度是[1, 30, 43]

Donaldkidd commented 3 months ago

建议你把单独的bn换成1*1卷积试试