Skip to content

Unify unconverted ops reporting in frontends#33710

Merged
mvafin merged 1 commit intoopenvinotoolkit:masterfrom
mvafin:mvafin/ops_report
Feb 2, 2026
Merged

Unify unconverted ops reporting in frontends#33710
mvafin merged 1 commit intoopenvinotoolkit:masterfrom
mvafin:mvafin/ops_report

Conversation

@mvafin
Copy link
Contributor

@mvafin mvafin commented Jan 20, 2026

Details:

  • Each frontend build its own error reporting, make it unified

Tickets:

  • 180764

@mvafin mvafin requested a review from Copilot January 20, 2026 17:39
@mvafin mvafin requested review from a team as code owners January 20, 2026 17:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR unifies unconverted operations reporting across all frontends by introducing a common error reporting infrastructure. Previously, each frontend (TensorFlow, TensorFlow Lite, PyTorch, ONNX, JAX, and Paddle) implemented its own error collection and reporting logic with inconsistent formats and behaviors.

Changes:

  • Introduced a centralized unconverted ops reporting mechanism in openvino/frontend/unconverted_ops_report.hpp
  • Refactored all frontends to use the unified reporting API
  • Removed duplicated error reporting code from individual frontends

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/frontends/common/include/openvino/frontend/unconverted_ops_report.hpp New header defining the unified API for unconverted ops reporting
src/frontends/common/src/unconverted_ops_report.cpp Implementation of the unified reporting infrastructure
src/frontends/tensorflow_lite/src/frontend.cpp Migrated to use unified reporting API
src/frontends/tensorflow/src/frontend.cpp Refactored to use unified reporting with custom TensorFlow-specific hints
src/frontends/pytorch/src/frontend.cpp Replaced custom error collection with unified API
src/frontends/paddle/src/frontend.cpp Updated to use unified reporting mechanism
src/frontends/onnx/frontend/src/frontend.cpp Migrated from custom collect_translation_exceptions to unified API
src/frontends/onnx/frontend/src/utils/common.hpp Removed old collect_translation_exceptions declaration
src/frontends/onnx/frontend/src/utils/common.cpp Removed old collect_translation_exceptions implementation
src/frontends/jax/src/frontend.cpp Replaced custom error reporting with unified API

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions github-actions bot added category: Core OpenVINO Core (aka ngraph) category: ONNX FE OpenVINO ONNX FrontEnd category: PDPD FE OpenVINO PaddlePaddle FrontEnd category: TF FE OpenVINO TensorFlow FrontEnd category: CPP API OpenVINO CPP API bindings category: PyTorch FE OpenVINO PyTorch Frontend category: TFL FE OpenVINO TensorFlow Lite FrontEnd category: JAX FE OpenVINO JAX FrontEnd labels Jan 20, 2026
@mvafin mvafin added this to the 2026.1 milestone Jan 23, 2026
@mvafin mvafin requested review from a team as code owners January 26, 2026 16:52
@github-actions github-actions bot added category: OVC OVC tool and removed category: TF FE OpenVINO TensorFlow FrontEnd labels Jan 26, 2026
@mvafin mvafin force-pushed the mvafin/ops_report branch from 0c37a49 to 46b9e3b Compare January 26, 2026 17:26
@github-actions github-actions bot added the category: TF FE OpenVINO TensorFlow FrontEnd label Jan 27, 2026
@mvafin mvafin force-pushed the mvafin/ops_report branch 3 times, most recently from c5a3d51 to 3b47a65 Compare January 30, 2026 18:33
@github-actions github-actions bot removed category: Core OpenVINO Core (aka ngraph) category: PDPD FE OpenVINO PaddlePaddle FrontEnd labels Jan 30, 2026
@github-actions github-actions bot removed category: CPP API OpenVINO CPP API bindings category: TFL FE OpenVINO TensorFlow Lite FrontEnd category: OVC OVC tool labels Jan 30, 2026
@mvafin mvafin force-pushed the mvafin/ops_report branch from 3b47a65 to 2c1b35f Compare January 30, 2026 18:35
@github-actions github-actions bot added category: Core OpenVINO Core (aka ngraph) category: CPP API OpenVINO CPP API bindings labels Jan 30, 2026
@mvafin mvafin force-pushed the mvafin/ops_report branch from 2c1b35f to 5d3b9bd Compare January 30, 2026 19:20
@mvafin mvafin requested a review from a team as a code owner January 30, 2026 19:20
@mvafin mvafin requested review from mlukasze and removed request for a team January 30, 2026 19:20
@github-actions github-actions bot added no-match-files category: OVC OVC tool and removed category: Core OpenVINO Core (aka ngraph) category: CPP API OpenVINO CPP API bindings labels Jan 30, 2026
@mvafin mvafin requested a review from Copilot January 30, 2026 20:40
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

/// Map of operation types with no conversion rule (op_type -> empty string)
/// or operations that failed during conversion (op_type -> error message)
struct UnconvertedOpsReport {
std::map<std::string, std::string> unconverted_ops;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
std::map<std::string, std::string> unconverted_ops;
std::unordered_map<std::string, std::string> unconverted_ops;


for (const auto& node : model->get_ordered_ops()) {
// Try framework-specific extractor first
if (auto result = extractor(node)) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (auto result = extractor(node)) {
if (const auto& result = extractor(node)) {

Comment on lines +64 to +67
error_msg << "Model wasn't fully converted.";
unconverted_ops_msg << "-- No conversion rule found for operations: ";
failed_ops_msg << " Failed operations detailed log:";
failed_ops_short << "-- Conversion is failed for: ";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we impact telemetry mechanism that collect fails and separate into FEs by [FW_NAME]?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, that message is not processed by telemetry. The telemetry logic is preserved


bool has_unsupported = false;
bool has_failed = false;
std::set<std::string> unsupported_ops_set;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
std::set<std::string> unsupported_ops_set;
std::unordered_set<std::string> unsupported_ops_set;

@mvafin mvafin added this pull request to the merge queue Feb 2, 2026
Merged via the queue into openvinotoolkit:master with commit acffc4a Feb 2, 2026
253 of 256 checks passed
@mvafin mvafin deleted the mvafin/ops_report branch February 2, 2026 13:55
Naseer-010 pushed a commit to Naseer-010/openvino that referenced this pull request Feb 18, 2026
### Details:
 - *Each frontend build its own error reporting, make it unified*

### Tickets:
 - *ticket-id*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: JAX FE OpenVINO JAX FrontEnd category: ONNX FE OpenVINO ONNX FrontEnd category: OVC OVC tool category: PyTorch FE OpenVINO PyTorch Frontend category: TF FE OpenVINO TensorFlow FrontEnd no-match-files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants