Skip to content

Commit 92e7f5e

Browse files
authored
[ONNX] Fix tests in case of using delegate (#32513)
### Details: - *item1* - *...* ### Tickets: - *CVS-175187* --------- Signed-off-by: Maxim Vafin <[email protected]>
1 parent 0d4a14e commit 92e7f5e

File tree

7 files changed

+49
-37
lines changed

7 files changed

+49
-37
lines changed

src/frontends/onnx/frontend/src/core/graph_iterator_proto.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ bool extract_tensor_external_data(ov::frontend::onnx::TensorMetaInfo& tensor_met
9494
const auto full_path =
9595
ov::util::get_absolute_file_path(ov::util::path_join({graph_iterator->get_model_dir(), ext_location}).string());
9696
const int64_t file_size = ov::util::file_size(full_path);
97-
if (file_size <= 0 || ext_data_offset + ext_data_length > static_cast<uint64_t>(file_size)) {
97+
if ((file_size <= 0 && ext_data_length > 0) ||
98+
ext_data_offset + ext_data_length > static_cast<uint64_t>(file_size)) {
9899
// not_existed_file.data, offset: 4096, data_length: 16)
99100
std::stringstream ss;
100101
ss << "Invalid usage of method for externally stored data in file (" << ext_location;
@@ -213,12 +214,8 @@ ov::frontend::onnx::TensorMetaInfo extract_tensor_meta_info(const TensorProto* t
213214
}
214215
if (tensor_info != nullptr) {
215216
tensor_meta_info.m_tensor_name = tensor_info->has_name() ? &tensor_info->name() : &empty_name;
216-
std::vector<int64_t> dims(tensor_info->dims().begin(), tensor_info->dims().end());
217-
if (dims.size() == 0 || (dims.size() == 1 && dims[0] == 0)) {
218-
tensor_meta_info.m_partial_shape = ov::PartialShape{};
219-
} else {
220-
tensor_meta_info.m_partial_shape = ov::PartialShape{dims};
221-
}
217+
std::vector<int64_t> dims_vec{tensor_info->dims().begin(), tensor_info->dims().end()};
218+
tensor_meta_info.m_partial_shape = ov::PartialShape(dims_vec);
222219
tensor_meta_info.m_element_type =
223220
tensor_info->has_data_type() ? get_ov_element_type(tensor_info->data_type()) : ov::element::dynamic;
224221
if (tensor_info->has_data_location() &&
@@ -287,6 +284,9 @@ ov::frontend::onnx::TensorMetaInfo extract_tensor_meta_info(const TensorProto* t
287284
if (tensor_meta_info.m_tensor_name == nullptr) {
288285
tensor_meta_info.m_tensor_name = &empty_name;
289286
}
287+
if (tensor_meta_info.m_partial_shape == ov::Shape{0} && tensor_meta_info.m_tensor_data_size == 1) {
288+
tensor_meta_info.m_partial_shape = ov::Shape{};
289+
}
290290
return tensor_meta_info;
291291
}
292292

@@ -316,7 +316,7 @@ void GraphIteratorProto::initialize(const std::string& path) {
316316
m_model_dir = std::make_shared<std::string>(ov::util::get_directory(path).string());
317317
try {
318318
std::ifstream model_file(path, std::ios::binary | std::ios::in);
319-
FRONT_END_GENERAL_CHECK(model_file && model_file.is_open(), "Could not open the file: ", path);
319+
FRONT_END_GENERAL_CHECK(model_file && model_file.is_open(), "Could not open the file: \"", path, "\"");
320320

321321
m_model = std::make_shared<ModelProto>();
322322
FRONT_END_GENERAL_CHECK(m_model->ParseFromIstream(&model_file), "Model can't be parsed");

src/frontends/onnx/frontend/src/core/node.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -946,12 +946,16 @@ std::shared_ptr<ov::Model> Node::get_attribute_value(const std::string& name) co
946946
return m_pimpl->template get_attribute_value<std::shared_ptr<ov::Model>>(name);
947947
} else if (m_decoder != nullptr) {
948948
auto graph_iterator = m_decoder->get_attribute(name).as<const ov::frontend::onnx::GraphIterator::Ptr>();
949+
FRONT_END_GENERAL_CHECK(graph_iterator != nullptr,
950+
"GraphIterator attribute is missing or of wrong type for attribute: " + name);
949951
graph_iterator->reset();
950-
auto input_model =
951-
std::make_shared<onnx::unify::InputModel>(graph_iterator, m_translate_session->get_input_model().get());
952+
auto parent_model = std::dynamic_pointer_cast<onnx::unify::InputModel>(m_translate_session->get_input_model());
953+
FRONT_END_GENERAL_CHECK(parent_model != nullptr, "Parent model is expected to be of onnx InputModel type.");
954+
auto input_model = std::make_shared<onnx::unify::InputModel>(graph_iterator, parent_model);
952955
TranslateSession translate_session(input_model, m_translate_session, get_name());
953956
std::shared_ptr<ov::Model> ov_model(nullptr);
954957
translate_session.translate_graph(input_model, ov_model);
958+
FRONT_END_GENERAL_CHECK(ov_model != nullptr, "Failed to translate ONNX model to OpenVINO model.");
955959
return ov_model;
956960
}
957961
FRONT_END_NOT_IMPLEMENTED(get_attribute_value);

src/frontends/onnx/frontend/src/frontend.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ ov::frontend::InputModel::Ptr FrontEnd::load_impl(const std::vector<ov::Any>& va
101101
std::make_shared<GraphIteratorProto>(enable_mmap ? Internal_MMAP : Internal_Stream);
102102
graph_iterator->initialize(path);
103103
graph_iterator->reset();
104-
return std::make_shared<unify::InputModel>(graph_iterator, enable_mmap);
104+
return std::make_shared<unify::InputModel>(graph_iterator, enable_mmap, m_extensions.telemetry);
105105
}
106106
#if defined(OPENVINO_ENABLE_UNICODE_PATH_SUPPORT) && defined(_WIN32)
107107
if (variants[0].is<std::wstring>()) {
@@ -114,7 +114,7 @@ ov::frontend::InputModel::Ptr FrontEnd::load_impl(const std::vector<ov::Any>& va
114114
std::make_shared<GraphIteratorProto>(enable_mmap ? Internal_MMAP : Internal_Stream);
115115
graph_iterator->initialize(path);
116116
graph_iterator->reset();
117-
return std::make_shared<unify::InputModel>(graph_iterator, enable_mmap);
117+
return std::make_shared<unify::InputModel>(graph_iterator, enable_mmap, m_extensions.telemetry);
118118
}
119119
#endif
120120
if (variants[0].is<std::istream*>()) {
@@ -144,10 +144,8 @@ ov::frontend::InputModel::Ptr FrontEnd::load_impl(const std::vector<ov::Any>& va
144144
// !!! End of Experimental feature
145145
if (variants[0].is<GraphIterator::Ptr>()) {
146146
auto graph_iterator = variants[0].as<GraphIterator::Ptr>();
147-
return std::make_shared<unify::InputModel>(
148-
graph_iterator,
149-
enable_mmap); // enable_mmap is a hint for a fallback in case external GraphIterator cannot work with
150-
// external data
147+
// enable_mmap is a hint for a fallback in case external GraphIterator cannot work with external data
148+
return std::make_shared<unify::InputModel>(graph_iterator, enable_mmap, m_extensions.telemetry);
151149
}
152150
return nullptr;
153151
}
@@ -375,8 +373,8 @@ void FrontEnd::translate_graph(const InputModel::Ptr& input_model,
375373
translate_session.set_fail_fast(fail_fast);
376374
try {
377375
ov_model = translate_session.get_converted_model();
378-
} catch (const std::exception& e) {
379-
throw e;
376+
} catch (const std::exception&) {
377+
throw;
380378
}
381379
return;
382380
}

src/frontends/onnx/frontend/src/input_model.cpp

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -566,16 +566,13 @@ namespace unify {
566566

567567
class InputModel::InputModelONNXImpl {
568568
public:
569-
InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
570-
const ov::frontend::InputModel& input_model,
571-
const bool enable_mmap);
572569
InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
573570
const ov::frontend::InputModel& input_model,
574571
const std::shared_ptr<TelemetryExtension>& telemetry,
575572
const bool enable_mmap);
576573
InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
577574
const ov::frontend::InputModel& input_model,
578-
unify::InputModel* parent_model);
575+
unify::InputModel::Ptr parent_model);
579576

580577
std::vector<ov::frontend::Place::Ptr> get_inputs() const;
581578
std::vector<ov::frontend::Place::Ptr> get_outputs() const;
@@ -706,7 +703,11 @@ void InputModel::InputModelONNXImpl::load_model() {
706703
m_op_places.push_back(std::make_shared<OpPlace>(m_input_model, decoder));
707704

708705
if (m_telemetry) {
709-
op_statistics[decoder->get_op_type()]++;
706+
if (auto op_decoder = std::dynamic_pointer_cast<DecoderBaseOperation>(decoder)) {
707+
std::string op_name = decoder->get_op_type() + "-" +
708+
std::to_string(m_graph_iterator->get_opset_version(op_decoder->get_domain()));
709+
op_statistics[op_name]++;
710+
}
710711
}
711712

712713
auto operation_decoder = std::dynamic_pointer_cast<DecoderBaseOperation>(decoder);
@@ -756,9 +757,11 @@ void InputModel::InputModelONNXImpl::load_model() {
756757

757758
InputModel::InputModelONNXImpl::InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
758759
const ov::frontend::InputModel& input_model,
760+
const std::shared_ptr<TelemetryExtension>& telemetry,
759761
const bool enable_mmap)
760762
: m_graph_iterator(graph_iterator),
761763
m_input_model(input_model),
764+
m_telemetry(telemetry),
762765
m_enable_mmap(enable_mmap) {
763766
FRONT_END_GENERAL_CHECK(m_graph_iterator, "Null pointer specified for GraphIterator");
764767
if (m_enable_mmap) {
@@ -773,18 +776,10 @@ InputModel::InputModelONNXImpl::InputModelONNXImpl(const GraphIterator::Ptr& gra
773776

774777
InputModel::InputModelONNXImpl::InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
775778
const ov::frontend::InputModel& input_model,
776-
const std::shared_ptr<TelemetryExtension>& telemetry,
777-
const bool enable_mmap)
778-
: InputModelONNXImpl(graph_iterator, input_model, enable_mmap) {
779-
m_telemetry = telemetry;
780-
}
781-
782-
InputModel::InputModelONNXImpl::InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
783-
const ov::frontend::InputModel& input_model,
784-
unify::InputModel* parent_model)
779+
unify::InputModel::Ptr parent_model)
785780
: m_graph_iterator(graph_iterator),
786781
m_input_model(input_model),
787-
m_telemetry(parent_model->_impl->get_telemetry_extension()),
782+
m_telemetry(parent_model->get_telemetry_extension()),
788783
m_enable_mmap(parent_model->is_enabled_mmap()),
789784
m_mmap_cache(parent_model->_impl->m_mmap_cache),
790785
m_stream_cache(parent_model->_impl->m_stream_cache) {
@@ -879,7 +874,8 @@ InputModel::InputModel(const GraphIterator::Ptr& graph_iterator,
879874
const std::shared_ptr<TelemetryExtension>& telemetry)
880875
: _impl{std::make_shared<InputModelONNXImpl>(graph_iterator, *this, telemetry, enable_mmap)} {}
881876

882-
InputModel::InputModel(const GraphIterator::Ptr& graph_iterator, InputModel* parent_model)
877+
InputModel::InputModel(const GraphIterator::Ptr& graph_iterator,
878+
ov::frontend::onnx::unify::InputModel::Ptr parent_model)
883879
: _impl{std::make_shared<InputModelONNXImpl>(graph_iterator, *this, parent_model)} {}
884880

885881
std::vector<std::shared_ptr<ov::frontend::onnx::OpPlace>> InputModel::get_op_places() const {

src/frontends/onnx/frontend/src/input_model.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,13 @@ class InputModel : public ov::frontend::InputModel {
114114
std::map<std::string, std::shared_ptr<ov::frontend::onnx::TensorONNXPlace>>& get_tensor_places() const;
115115

116116
public:
117+
using Ptr = std::shared_ptr<unify::InputModel>;
118+
117119
explicit InputModel(const ov::frontend::onnx::GraphIterator::Ptr& graph_iterator,
118120
const bool enable_mmap,
119121
const std::shared_ptr<TelemetryExtension>& telemetry = {});
120-
explicit InputModel(const ov::frontend::onnx::GraphIterator::Ptr& graph_iterator, InputModel* parent_model);
122+
explicit InputModel(const ov::frontend::onnx::GraphIterator::Ptr& graph_iterator,
123+
unify::InputModel::Ptr parent_model);
121124

122125
///// Searching for places /////
123126
std::vector<ov::frontend::Place::Ptr> get_inputs() const override;

src/frontends/onnx/tests/onnx_import_org_openvino.in.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,9 @@ OPENVINO_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_generate_propos
420420
}
421421

422422
OPENVINO_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_group_norm) {
423+
if (std::getenv("ONNX_ITERATOR")) {
424+
GTEST_SKIP() << "Experimental ops are not supported when using GraphIterator.";
425+
}
423426
auto model = convert_model("org.openvinotoolkit/experimental_detectron/group_norm.onnx");
424427

425428
auto test_case = ov::test::TestCase(model, s_device);
@@ -536,6 +539,9 @@ OPENVINO_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_topk_rios) {
536539
}
537540

538541
OPENVINO_TEST(${BACKEND_NAME}, onnx_model_deformable_conv_2d) {
542+
if (std::getenv("ONNX_ITERATOR")) {
543+
GTEST_SKIP() << "Experimental ops are not supported when using GraphIterator.";
544+
}
539545
auto model = convert_model("org.openvinotoolkit/deformable_conv_2d.onnx");
540546

541547
auto test_case = ov::test::TestCase(model, s_device);
@@ -566,6 +572,9 @@ OPENVINO_TEST(${BACKEND_NAME}, onnx_model_deformable_conv_2d) {
566572
}
567573

568574
OPENVINO_TEST(${BACKEND_NAME}, onnx_model_deformable_conv_2d_with_mask) {
575+
if (std::getenv("ONNX_ITERATOR")) {
576+
GTEST_SKIP() << "Experimental ops are not supported when using GraphIterator.";
577+
}
569578
auto model = convert_model("org.openvinotoolkit/deformable_conv_2d_with_mask.onnx");
570579

571580
auto test_case = ov::test::TestCase(model, s_device);

src/frontends/tests/frontend/shared/src/telemetry.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ TEST_P(FrontEndTelemetryTest, TestTelemetryMock) {
7171
break;
7272
}
7373
}
74-
EXPECT_TRUE(is_found) << "Unexpected set of operations received from telemetry.";
74+
EXPECT_TRUE(is_found) << "Unexpected set of operations received from telemetry: received "
75+
<< m_test_telemetry.m_event_cnt;
7576
EXPECT_EQ(m_test_telemetry.m_trace_cnt, 0);
7677
EXPECT_EQ(m_test_telemetry.m_error_cnt, 0);
7778

@@ -88,7 +89,8 @@ TEST_P(FrontEndTelemetryTest, TestTelemetryMock) {
8889
break;
8990
}
9091
}
91-
EXPECT_TRUE(is_found) << "Unexpected set of operations received from telemetry.";
92+
EXPECT_TRUE(is_found) << "Unexpected set of operations received from telemetry: received "
93+
<< m_test_telemetry.m_event_cnt;
9294
EXPECT_EQ(m_test_telemetry.m_trace_cnt, 0);
9395
EXPECT_EQ(m_test_telemetry.m_error_cnt, 0);
9496
}

0 commit comments

Comments
 (0)