Skip to content

PreconditionNotMetError: The meta data must be valid when call the mutable data function. #73973

@GreenValue

Description

@GreenValue

bug描述 Describe the Bug

paddle2.5.2-gpu-cuda11.7-cudnn8.4-trt8.4 中用ppshitu的c++代码,predict某张图时,抛异常

其他补充信息 Additional Supplementary Information

环境:paddle2.5.2-gpu-cuda11.7-cudnn8.4-trt8.4
利用ppshitu的predict, 部署文档:https://gitee.com/paddlepaddle/PaddleClas/tree/release/2.5/deploy/cpp_shitu
检测附件图的主体时,抛异常。
但若不执行:cv::COLOR_BGR2RGB ,则predict正常。
这怎么解决?

Image

错误详见:
terminate called after throwing an instance of 'phi::enforce::EnforceNotMet'
what():

Compile Traceback (most recent call last):
File "D:\projects\PaddleDetection\tools\export_model.py", line 110, in
main()
File "D:\projects\PaddleDetection\tools\export_model.py", line 106, in main
run(FLAGS, cfg)
File "D:\projects\PaddleDetection\tools\export_model.py", line 73, in run
trainer.export(FLAGS.output_dir)
File "D:\projects\PaddleDetection\ppdet\engine\trainer.py", line 1172, in export
static_model, pruned_input_spec = self._get_infer_cfg_and_input_spec(
File "D:\projects\PaddleDetection\ppdet\engine\trainer.py", line 1132, in _get_infer_cfg_and_input_spec
input_spec, static_model.forward.main_program,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 734, in main_program
concrete_program = self.concrete_program
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 537, in concrete_program
return self.concrete_program_specify_input_spec(input_spec=None)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 577, in concrete_program_specify_input_spec
concrete_program, _ = self.get_concrete_program(
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 485, in get_concrete_program
concrete_program, partial_program_layer = self._program_cache[cache_key]
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 955, in getitem
self._caches[item_id] = self._build_once(item)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 939, in _build_once
concrete_program = ConcreteProgram.from_func_spec(
File "C:\Users\Admin\miniconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 26, in impl
return wrapped_func(*args, **kwargs)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\base.py", line 67, in impl
return func(*args, **kwargs)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 888, in from_func_spec
outputs = static_func(*inputs)
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\meta_arch.py", line 59, in forward
if self.training:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\meta_arch.py", line 69, in forward
for inp in inputs_list:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 106, in convert_while_loop
_run_py_while(cond, body, getter, setter)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 165, in _run_py_while
body()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\meta_arch.py", line 76, in forward
outs.append(self.get_pred())
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 150, in get_pred
return self._forward()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 92, in _forward
if self.training:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 103, in _forward
if self.for_mot:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 115, in _forward
if self.return_idx:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 119, in _forward
elif self.post_process is not None:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\architectures\yolo.py", line 126, in _forward
bbox, bbox_num, nms_keep_idx = self.yolo_head.post_process(
File "D:\projects\PaddleDetection\ppdet\modeling\heads\ppyoloe_head.py", line 518, in post_process
if self.exclude_post_process:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\heads\ppyoloe_head.py", line 529, in post_process
if self.exclude_nms:
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\heads\ppyoloe_head.py", line 533, in post_process
bbox_pred, bbox_num, nms_keep_idx = self.nms(pred_bboxes,
File "D:\projects\PaddleDetection\ppdet\modeling\layers.py", line 553, in call
if self.trt and (int(paddle.version.major) == 0 or
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 323, in convert_ifelse
out = _run_py_ifelse(pred, true_fn, false_fn, get_args, set_args,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 380, in _run_py_ifelse
py_outs = true_fn() if pred else false_fn()
File "D:\projects\PaddleDetection\ppdet\modeling\layers.py", line 560, in call
idx = paddle.nonzero(bbox[..., 0] != -1)
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\layers\math_op_patch.py", line 417, in impl
current_block(self).append_op(type=op_type,
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\framework.py", line 4040, in append_op
op = Operator(
File "C:\Users\Admin\miniconda3\lib\site-packages\paddle\fluid\framework.py", line 2879, in init
for frame in traceback.extract_stack():


C++ Traceback (most recent call last):

0 paddle::AnalysisPredictor::ZeroCopyRun()
1 paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, phi::Place const&)
2 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, phi::Place const&) const
3 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, phi::Place const&, paddle::framework::RuntimeContext*) const
4 void phi::NotEqualRawKernel<float, phi::GPUContext>(phi::GPUContext const&, phi::DenseTensor const&, phi::DenseTensor const&, int, phi::DenseTensor*)
5 bool* phi::DeviceContext::Alloc(phi::TensorBase*, unsigned long, bool) const
6 phi::DeviceContext::Impl::Alloc(phi::TensorBase*, phi::Place const&, phi::DataType, unsigned long, bool, bool) const
7 phi::DenseTensor::AllocateFrom(phi::Allocator*, phi::DataType, unsigned long, bool)
8 phi::enforce::EnforceNotMet::EnforceNotMet(phi::ErrorSummary const&, char const*, int)
9 phi::enforce::GetCurrentTraceBackStringabi:cxx11


Error Message Summary:

PreconditionNotMetError: The meta data must be valid when call the mutable data function.
[Hint: Expected valid() == true, but received valid():0 != true:1.] (at /paddle/paddle/phi/core/dense_tensor.cc:122)
[operator < not_equal > error]
Aborted (core dumped)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions