Skip to content

Conversation

@naomiOvad
Copy link

@naomiOvad naomiOvad commented Nov 19, 2025

Description

This PR adds full and spec-compliant broadcasting support to both LayerNormalization and RMSNormalization.

Previously, onnxruntime supported only a partial set of broadcasting cases (based on the logic introduced in this PR #23297 ).
That implementation handled several cases but did not cover all valid broadcasting scenarios.

This PR introduces a complete generic broadcasting path, following the ONNX specification rules.
The previous implementation is preserved as a fast-path and is still used whenever the Scale/Bias shapes match directly.

Main changes:

  • Extended broadcasting logic in:
    layer_norm_helper.h
    layer_norm_impl.cc

  • Added full support for all valid broadcasting configurations of Scale and Bias.

  • Preserved previous partial logic as a fast-path for exact-match cases.

  • Added comprehensive tests to:
    layer_norm_op_test.cc
    rms_norm_op_test.cc

Motivation and Context

Before this fix, some valid ONNX broadcasting shapes were rejected in LayerNormalization and RMSNormalization.
This PR brings the operators into full alignment with the ONNX specification and fixes models that previously failed due to incomplete broadcasting support.

Fixes #26432
Fixes #18184

@naomiOvad naomiOvad marked this pull request as ready for review November 19, 2025 19:01
@naomiOvad
Copy link
Author

cc @justinchuby, @amarin16, @tianleiwu Could you please review my PR?
Thanks!

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

Labels

None yet

Projects

None yet

1 participant