Skip to content

Intel® NNCF Compression detect ONNX external data#2384

Open
Anirudh-Swaminathan wants to merge 2 commits intomicrosoft:mainfrom
Anirudh-Swaminathan:user/anirudh/nncf_compression_fix
Open

Intel® NNCF Compression detect ONNX external data#2384
Anirudh-Swaminathan wants to merge 2 commits intomicrosoft:mainfrom
Anirudh-Swaminathan:user/anirudh/nncf_compression_fix

Conversation

@Anirudh-Swaminathan
Copy link
Copy Markdown
Contributor

@Anirudh-Swaminathan Anirudh-Swaminathan commented Apr 6, 2026

Add change to auto-detect ONNX external data files in NNCF compression pass.


Describe your changes

If an ONNX model is locally sourced, the ONNXModelHandler points to just the .onnx file. This means that the EXTERNAL_DATA_DIR isn't set in AdvancedCompressionParameters, leading to NNCF failing to find the model weights.
This commit fixes that and allows auto-detecting the presence of an external data file, and will pass this path to NNCF AdvancedCompressionParameters if not already set manually with local sourcing or if chained with another pass that produces an ONNX model with external data

Checklist before requesting a review

  • Add unit tests for this change.
  • Make sure all tests can pass.
  • Update documents if necessary.
  • Lint and apply fixes to your code by running lintrunner -a
  • Is this a user-facing change? If yes, give a description of this change to be included in the release notes.

(Optional) Issue link

Add change to auto-detect ONNX external data files in NNCF compression
pass.
If an ONNX model is locally sourced, the ONNXModelHandler points to just
the .onnx file. This means that the EXTERNAL_DATA_DIR isn't set in
AdvancedCompressionParameters, leading to NNCF failing to find the model
weights.
This commit fixes that and allows auto-detecting the presence of an
external data file, and will pass this path to NNCF
AdvancedCompressionParameters if not already set manually with local
sourcing or if chained with another pass that produces an ONNX model
with external data

- [x] Add unit tests for this change.
- [x] Make sure all tests can pass.
- [ ] Update documents if necessary.
- [x] Lint and apply fixes to your code by running `lintrunner -a`
- [ ] Is this a user-facing change? If yes, give a description of this
change to be included in the release notes.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 6, 2026 18:21
Copy link
Copy Markdown
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 updates the OpenVINO NNCF weight-compression flow for ONNX models to automatically detect when the input ONNX graph uses external data (e.g., model.onnx.data) and to pass the source model directory to NNCF so it can resolve external weight files correctly.

Changes:

  • Add a utility to detect ONNX external-data usage by scanning initializers (and subgraphs) for external-data markers.
  • In the ONNX compression path, auto-compute the source model directory when external data is detected and forward it into the shared compression routine.
  • Add a unit test that generates an ONNX model with external data and runs the compression pass.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
olive/passes/openvino/ov_utils.py Adds model_graph_uses_external_data to detect external-data usage in ONNX graphs (including nested subgraphs).
olive/passes/openvino/compression.py Detects external data for ONNX inputs and sets NNCF EXTERNAL_DATA_DIR via a new model_source_dir parameter.
test/passes/openvino/test_openvino_compression.py Adds a unit test that builds an ONNX-with-external-data model and validates compression output behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants