Skip to content

Commit 90acd14

Browse files
authored
[ONNX] Translate ONNX metadata with delegate (#32675)
### Details: - *Translate ONNX metadata with delegate* ### Tickets: - *ticket-id* Signed-off-by: Maxim Vafin <[email protected]>
1 parent 1a1eff7 commit 90acd14

File tree

7 files changed

+41
-0
lines changed

7 files changed

+41
-0
lines changed

src/frontends/onnx/frontend/include/openvino/frontend/onnx/graph_iterator.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ class ONNX_FRONTEND_API GraphIterator : ::ov::RuntimeAttribute {
4747
/// If there are no domain found returns -1
4848
virtual int64_t get_opset_version(const std::string& domain) const = 0;
4949

50+
/// \brief Retrieves metadata associated with the graph.
51+
virtual std::map<std::string, std::string> get_metadata() const = 0;
52+
5053
/// \brief Destructor
5154
virtual ~GraphIterator();
5255
};

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,20 @@ std::int64_t GraphIteratorProto::get_opset_version(const std::string& domain) co
502502
return -1;
503503
}
504504

505+
std::map<std::string, std::string> GraphIteratorProto::get_metadata() const {
506+
std::map<std::string, std::string> metadata;
507+
508+
if (!m_model) {
509+
return metadata;
510+
}
511+
512+
const auto& model_metadata = m_model->metadata_props();
513+
for (const auto& prop : model_metadata) {
514+
metadata.emplace(prop.key(), prop.value());
515+
}
516+
return metadata;
517+
}
518+
505519
namespace detail {
506520
namespace {
507521
enum Field {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ class GraphIteratorProto : public ov::frontend::onnx::GraphIterator {
119119

120120
std::int64_t get_opset_version(const std::string& domain) const override;
121121

122+
std::map<std::string, std::string> get_metadata() const override;
123+
122124
std::string get_model_dir() const {
123125
return *m_model_dir;
124126
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,10 @@ class InputModel::InputModelONNXImpl {
604604
void extract_subgraph(const std::vector<ov::frontend::Place::Ptr>& inputs,
605605
const std::vector<ov::frontend::Place::Ptr>& outputs);
606606

607+
std::map<std::string, std::string> get_metadata() const {
608+
return m_metadata;
609+
}
610+
607611
std::shared_ptr<TelemetryExtension> get_telemetry_extension() const {
608612
return m_telemetry;
609613
}
@@ -633,6 +637,7 @@ class InputModel::InputModelONNXImpl {
633637
std::shared_ptr<GraphIterator> m_graph_iterator;
634638
const ov::frontend::InputModel& m_input_model;
635639
std::vector<std::shared_ptr<ov::frontend::onnx::unify::InputModel>> m_subgraphs;
640+
std::map<std::string, std::string> m_metadata;
636641
std::shared_ptr<TelemetryExtension> m_telemetry;
637642
bool m_enable_mmap;
638643

@@ -753,6 +758,8 @@ void InputModel::InputModelONNXImpl::load_model() {
753758
m_telemetry->send_event("op_count", "onnx_" + op.first, static_cast<int>(op.second));
754759
}
755760
}
761+
762+
m_metadata = m_graph_iterator->get_metadata();
756763
}
757764

758765
InputModel::InputModelONNXImpl::InputModelONNXImpl(const GraphIterator::Ptr& graph_iterator,
@@ -947,6 +954,10 @@ void InputModel::extract_subgraph(const std::vector<ov::frontend::Place::Ptr>& i
947954
_impl->extract_subgraph(inputs, outputs);
948955
}
949956

957+
std::map<std::string, std::string> InputModel::get_metadata() const {
958+
return _impl->get_metadata();
959+
}
960+
950961
std::shared_ptr<TelemetryExtension> InputModel::get_telemetry_extension() {
951962
return _impl->get_telemetry_extension();
952963
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ class InputModel : public ov::frontend::InputModel {
146146
void extract_subgraph(const std::vector<ov::frontend::Place::Ptr>& inputs,
147147
const std::vector<ov::frontend::Place::Ptr>& outputs) override;
148148

149+
std::map<std::string, std::string> get_metadata() const;
149150
std::shared_ptr<TelemetryExtension> get_telemetry_extension();
150151

151152
bool is_enabled_mmap() const;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,10 @@ void TranslateSession::translate_graph(const ov::frontend::InputModel::Ptr& inpu
217217

218218
auto model_name = "onnx_Frontend_IR";
219219
ov_model = std::make_shared<ov::Model>(results, m_parameters, model_name);
220+
221+
const auto& metadata = model_onnx->get_metadata();
222+
const std::string framework_section = "framework";
223+
for (const auto& pair : metadata) {
224+
ov_model->set_rt_info(pair.second, framework_section, pair.first);
225+
}
220226
}

src/frontends/onnx/tests/graph_iterator.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ TEST_P(FrontEndLoadFromTest, testLoadUsingSimpleGraphIterator) {
3838
return 1;
3939
}
4040

41+
std::map<std::string, std::string> get_metadata() const override {
42+
return {};
43+
}
44+
4145
~SimpleIterator() override {};
4246
};
4347

0 commit comments

Comments
 (0)