Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GroundingDINO的onnx转mlir报错: Assertion `op->use_empty() && "expected 'op' to have no uses"' failed. #143

Open
fabro66 opened this issue Nov 9, 2023 · 2 comments

Comments

@fabro66
Copy link

fabro66 commented Nov 9, 2023

以下是GroundingDINO的onnx模型转mlir的日志:

root@26d73eb7a565:/workspace/project/GroundingDINO# model_transform.py --model_name groundingdino --model_def onnx/GroundingDINOExport_16_Tokens.onnx --input_shapes [[1,3,544,960],[1,1,1,16],[1,1,1,16],[1,1,1,16],[1,1,1,16],[1,1,16,16]] --mlir mlir/groundingdino.mlir --test_input ./input/input_data.npz --test_result grounding_dino_output_data.npz 
SOPHGO Toolchain v1.5.beta.0-20231107
2023/11/08 20:14:17 - INFO : 
	 _____________________________________________________ 
	| preprocess:                                           |
	|   (x - mean) * scale                                  |
	'-------------------------------------------------------'
  config Preprocess args : 
	resize_dims           : same to net input dims
	keep_aspect_ratio     : False
	keep_ratio_mode       : letterbox
	pad_value             : 0
	pad_type              : center
	--------------------------
	mean                  : [0.0, 0.0, 0.0]
	scale                 : [1.0, 1.0, 1.0]
	--------------------------
	pixel_format          : bgr
	channel_format        : nchw

Input_shape assigned
ConstantFolding finished
skip_fuse_bn: False
Onnxsim opt finished
ConstantFolding finished
Save mlir file: mlir/groundingdino_origin.mlir
[Running]: tpuc-opt mlir/groundingdino_origin.mlir --shape-infer --canonicalize --extra-optimize -o mlir/groundingdino.mlir 
tpuc-opt: /llvm-project/mlir/lib/IR/PatternMatch.cpp:305: virtual void mlir::RewriterBase::eraseOp(mlir::Operation *): Assertion `op->use_empty() && "expected 'op' to have no uses"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: tpuc-opt mlir/groundingdino_origin.mlir --init --shape-infer --canonicalize --extra-optimize --deinit --mlir-print-debuginfo -o mlir/groundingdino.mlir
 #0 0x000055e5ccf37157 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/workspace/install/bin/tpuc-opt+0x5f7157)
 #1 0x000055e5ccf34e7e llvm::sys::RunSignalHandlers() (/workspace/install/bin/tpuc-opt+0x5f4e7e)
 #2 0x000055e5ccf37ada SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fac0cffb520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fac0d04f9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007fac0cffb476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007fac0cfe17f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007fac0cfe171b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007fac0cff2e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000055e5cde82c31 (/workspace/install/bin/tpuc-opt+0x1542c31)
#10 0x000055e5cdb20484 PermuteFuse::matchAndRewrite(tpu_mlir::top::PermuteOp, mlir::PatternRewriter&) const (/workspace/install/bin/tpuc-opt+0x11e0484)
#11 0x000055e5cdc726b7 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_2>(long) PatternApplicator.cpp:0:0
#12 0x000055e5cdc6efcf mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/workspace/install/bin/tpuc-opt+0x132efcf)
#13 0x000055e5cdc3876c (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#14 0x000055e5cdc355bc mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/workspace/install/bin/tpuc-opt+0x12f55bc)
#15 0x000055e5cdc14bcb (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0
#16 0x000055e5cdc9b9a4 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/workspace/install/bin/tpuc-opt+0x135b9a4)
#17 0x000055e5cdc9bfd1 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/workspace/install/bin/tpuc-opt+0x135bfd1)
#18 0x000055e5cdc9e478 mlir::PassManager::run(mlir::Operation*) (/workspace/install/bin/tpuc-opt+0x135e478)
#19 0x000055e5ccf2899b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000055e5ccf27d64 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_2>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#21 0x000055e5cdea2118 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/workspace/install/bin/tpuc-opt+0x1562118)
#22 0x000055e5ccf2206a mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/workspace/install/bin/tpuc-opt+0x5e206a)
#23 0x000055e5ccf22534 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/workspace/install/bin/tpuc-opt+0x5e2534)
#24 0x000055e5ccf212b9 main (/workspace/install/bin/tpuc-opt+0x5e12b9)
#25 0x00007fac0cfe2d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#26 0x00007fac0cfe2e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#27 0x000055e5ccf20f15 _start (/workspace/install/bin/tpuc-opt+0x5e0f15)
Aborted (core dumped)
Traceback (most recent call last):
  File "/workspace/python/tools/model_transform.py", line 273, in <module>
    tool.model_transform(args.mlir, args.add_postprocess)
  File "/workspace/python/tools/model_transform.py", line 51, in model_transform
    mlir_opt_for_top(mlir_origin, self.mlir_file, add_postprocess)
  File "/workspace/python/utils/mlir_shell.py", line 60, in mlir_opt_for_top
    _os_system(cmd)
  File "/workspace/python/utils/mlir_shell.py", line 50, in _os_system
    raise RuntimeError("[!Error]: {}".format(cmd_str))
RuntimeError: [!Error]: tpuc-opt mlir/groundingdino_origin.mlir --shape-infer --canonicalize --extra-optimize -o mlir/groundingdino.mlir 

请问这是什么原因造成的呢?​如果我提前采用onnxsim对模型简化,就不会在这个阶段报错,但在下一步对比mlir和onnx相似度的euclidean_similarity指标过不了。如果不考虑euclidean_similarity误差,直接转bm1684x的fp32模型,推理出来的结果也不对。

@yanzongs
Copy link

yanzongs commented Apr 7, 2024

我也遇到了同样的问题,无法解决

@yanzongs
Copy link

yanzongs commented Apr 7, 2024

请问提前用onnxsim对模型简化这一步具体是怎么操作呢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants