Productize NMOptimizer: differentiable noise learning for TN decoder#526
Merged
vedika-saravanan merged 5 commits intoMay 26, 2026
Merged
Conversation
3de75d9 to
ff6216b
Compare
18ae339 to
a7db5df
Compare
54a2f60 to
e151f1e
Compare
c3d7dfc to
e42a920
Compare
Collaborator
Author
|
Additional validation: https://github.com/NVIDIA/cudaqx/actions/runs/25920741190 |
e42a920 to
c1b07be
Compare
Collaborator
Author
New validation test added: https://github.com/NVIDIA/cudaqx/actions/runs/26041007234 |
Collaborator
Author
|
converted it to draft PR to remove the docs update to a separate follow-up PR. |
d91fb1b to
0a9891c
Compare
2 tasks
bmhowe23
approved these changes
May 22, 2026
bmhowe23
left a comment
Collaborator
There was a problem hiding this comment.
Looks good to me. Thank you, @vedika-saravanan and @npancotti!
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
…n PR Restore API/introduction/decoders RST to main so documentation can ship in a follow-up PR; keep docs/sphinx/examples/qec/python/noise_learning.py here. Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
06df127 to
359ea62
Compare
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Productizes Nico's
NMOptimizerinto the TN decoder. Fits per-error noiseprobabilities by backpropagating through a torch-backed tensor-network
contraction.
What's in it
NMOptimizer+make_compiled_step, exposed top-level viafrom cudaq_qec import NMOptimizercodegen/unrolled/opt_einsum); optionaltorch.compile; prior auto-clamping(cpu, cuda)× execute modes, plustest_forward_parity_with_tn_decoderagainst the base TN decodertn_noise_learning.py) runs in CI as the end-to-end LER gateTest plan
pytest libs/qec/python/tests/test_nm_optimizer.py -vpytest libs/qec/python/tests/test_tensor_network_decoder.py -vpython3 docs/sphinx/examples/qec/python/tn_noise_learning.pyFollow-ups
larger code distances (d=5+ surface codes)
NVBug for new deps: https://nvbugspro.nvidia.com/bug/6177164