Description
Context
OP conformance suite is validation tool checks a plugin conditions from operation implementation status perspective.
OP conformance is based on extracted from OMZ model scope operations and graphs by ov_subgraphs_dumper
tool. Extracted graphs are saved as IR (OpenVINO Intermediate representation) and is stored in the public share.
OP conformance suite contains the following test types:
OpImplCheck
validates operation support by plugin. Returntrue
orfalse
.Inference
compare device inference results vs reference over extracted IR as a model. We generate synthetic tensors to get a result. Possible results arepassed
,failed
,hanged
(interrupted by timeout),crashed
andskipped
(just in case-shape_mode
is misaligned with graph inputs).QueryModel
check possibility of graph execution per device. Have the same status asInference
ImportExport
exports compiled model, imports it and check that models are same. Have the same status asInference
Template is a simple plugin run inference using reference implementation. It means if we will run conformance over template, we should compare TEMPLATE
vs TEMPLATE
results. Sometimes we have bugs inside the plugin, reference implementation or test infrastructure leads to negative test result.
What needs to be done?
Description:
We have several Broadcast tests failed in operation conformance over TEMPLATE plugin. Do contributor should fix them:
conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=i64_Shape=dynamic_IR=2058e018d32d8a73b2bf6471186e555c47e2c1a15ceb4131bacc43110bc17d30_Device=TEMPLATE_Config=()
conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=f32_Shape=dynamic_IR=7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689_Device=TEMPLATE_Config=()
How to reproduce:
- Build the OV using -DENABLE_TESTS=ON -DENABLE_FUNCTIONAL_TESTS=ON
- Build
ov_op_conformance_tests
target - Run OP conformance to download conformance IRs and run executable file with args:
python3 /openvino/src/tests/test_utils/functional_test_utils/layer_tests_summary/run_conformance.py -d=TEMPLATE --gtest_filter="conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=f32_Shape=dynamic_IR=7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689_Device=TEMPLATE_Config=()"
NOTE:
run_conformance
log contains all commands to runov_op_conformance_tests
! You can take them to debug!
- Check the logs inside working directory and get the results as an example:
[ RUN ] conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=f32_Shape=dynamic_IR=7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689_Device=TEMPLATE_Config=()
MEM_USAGE=71868KB
[ CONFORMANCE ] Influence coefficient: 6.07468e-06
[ PLUGIN ] `SubgraphBaseTest::compile_model()` is started
[ PLUGIN ] `SubgraphBaseTest::compile_model()` is finished successfully. Duration is 0.0985083s
[ PLUGIN ] `SubgraphBaseTest::get_plugin_outputs()` is started
[ PLUGIN ] `SubgraphBaseTest::get_plugin_outputs()` is finished successfully. Duration is 0.00323319s
[ REFERENCE ] `SubgraphBaseTest::calculate_refs()` is started
[ REFERENCE ] Calculate reference in runtime
[ REFERENCE ] `SubgraphBaseTest::calculate_refs()` is started
[ REFERENCE ] `SubgraphBaseTest::calculate_refs()` is finished successfully. Duration is 0.0101195s
[ REFERENCE ] `SubgraphBaseTest::calculate_refs()` is finished successfully. Duration is 0.0125364s
[ COMPARATION ] `ov_tensor_utils.hpp::compare()` is started
[ COMPARATION ] rel_threshold: 1.79769e+308
[ COMPARATION ] abs_threshold: 0.196875
[ COMPARATION ] `ov_tensor_utils.hpp::compare()` is finished successfully. Duration is 0.0217402s
[ PLUGIN ] `SubgraphBaseTest::get_plugin_outputs()` is started
/home/efode/repo/openvino/src/tests/functional/shared_test_classes/src/base/ov_subgraph.cpp:94: Failure
Exception from src/inference/src/cpp/infer_request.cpp:223:
Check 'arg_shape[i - start_axis].is_dynamic() || target_input_shape[i].is_dynamic() || arg_shape[i - start_axis].compatible(1) || arg_shape[i - start_axis].compatible(target_input_shape[i])' failed at src/core/shape_inference/include/broadcast_shape_inference.hpp:78:
While validating node 'opset3::Broadcast Broadcast-3 (opset1::Parameter Broadcast-3_0[0]:f32[37,15,15], opset1::Constant Broadcast-3_1[0]:i32[3]) -> (f32[37,37,128])' with friendly_name 'Broadcast-3':
Input shape dimension equal 15 cannot be broadcasted (numpy mode) to 37. Allowed input dimension value would be 1 or 37
[ FAILED ] conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=f32_Shape=dynamic_IR=7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689_Device=TEMPLATE_Config=(), where GetParam() = ("/home/efode/repo/openvino/src/tests/test_utils/functional_test_utils/layer_tests_summary/temp/models/2023.3.0-13657-d5b0f4d2d73/operation/dynamic/Broadcast-3/f32/7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689.xml", "") (354 ms)
- To debug the test in C++ Use the following command (just an example, refer to note in third item):
openvino/bin/intel64/Release/ov_op_conformance_tests --device=TEMPLATE --input_folders=openvino/src/tests/test_utils/functional_test_utils/layer_tests_summary/temp/models/conformance_ir_files.lst, --report_unique_name --output_folder="openvino/src/tests/test_utils/functional_test_utils/layer_tests_summary/temp/report/parallel" --gtest_filter="conformance_Broadcast/ReadIRTest.Inference/Op=Broadcast.3_Type=f32_Shape=dynamic_IR=7562536120d473cca837bb2ad1e3969484868111954ac0b168a5c2805264a689_Device=TEMPLATE_Config=()" --config_path="" --shape_mode=
Important NOTE: The issue can be connected with input generation for Gather Operation. We should generate input tensor according OV specification!
Example Pull Requests
As an example of extending input generation per specific layer: #20897
Resources
- Contribution guide - start here!
- Intel DevHub Discord channel - engage in discussions, ask questions and talk to OpenVINO developers
- How to link your Pull Request to an issue
- Conformance readme
- TEMPLATE plugin
- OV CONTRIBUTION GUIDE
Contact points
Ticket
No response
Metadata
Metadata
Assignees
Type
Projects
Status