Skip to content

Productize NMOptimizer: differentiable noise learning for TN decoder#526

Merged
vedika-saravanan merged 5 commits into
NVIDIA:mainfrom
vedika-saravanan:NoiseLearning-Integration
May 26, 2026
Merged

Productize NMOptimizer: differentiable noise learning for TN decoder#526
vedika-saravanan merged 5 commits into
NVIDIA:mainfrom
vedika-saravanan:NoiseLearning-Integration

Conversation

@vedika-saravanan

@vedika-saravanan vedika-saravanan commented Apr 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Productizes Nico's NMOptimizer into the TN decoder. Fits per-error noise
probabilities by backpropagating through a torch-backed tensor-network
contraction.

oe_torch / oe_torch_compiled contractors aren't included, unused by NMOptimizer.

What's in it

  • NMOptimizer + make_compiled_step, exposed top-level via from cudaq_qec import NMOptimizer
  • Three execute modes (codegen / unrolled / opt_einsum); optional torch.compile; prior auto-clamping
  • Unit tests parameterised over (cpu, cuda) × execute modes, plus test_forward_parity_with_tn_decoder against the base TN decoder
  • Example (tn_noise_learning.py) runs in CI as the end-to-end LER gate

Test plan

  • pytest libs/qec/python/tests/test_nm_optimizer.py -v
  • pytest libs/qec/python/tests/test_tensor_network_decoder.py -v
  • python3 docs/sphinx/examples/qec/python/tn_noise_learning.py

Follow-ups

  • cuTensorNet backend (currently forced to torch for autograd), unlocks
    larger code distances (d=5+ surface codes)
  • KPI on real partner noise data
  • Decoder-agnostic mixin (QLDPC)
  • Docs: #554

NVBug for new deps: https://nvbugspro.nvidia.com/bug/6177164

@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch 7 times, most recently from 3de75d9 to ff6216b Compare May 5, 2026 21:40
@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch 5 times, most recently from 18ae339 to a7db5df Compare May 15, 2026 00:40
@vedika-saravanan vedika-saravanan changed the title NL integration wip Noise Learning Decoder May 15, 2026
@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch 4 times, most recently from 54a2f60 to e151f1e Compare May 15, 2026 04:29
@vedika-saravanan vedika-saravanan changed the title Noise Learning Decoder Productize NMOptimizer: differentiable noise learning for TN decoder May 15, 2026
@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch 3 times, most recently from c3d7dfc to e42a920 Compare May 15, 2026 07:37
@vedika-saravanan

Copy link
Copy Markdown
Collaborator Author

Additional validation: https://github.com/NVIDIA/cudaqx/actions/runs/25920741190

@vedika-saravanan vedika-saravanan marked this pull request as ready for review May 15, 2026 15:04
@vedika-saravanan vedika-saravanan self-assigned this May 15, 2026
@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch from e42a920 to c1b07be Compare May 18, 2026 14:29
@vedika-saravanan

vedika-saravanan commented May 18, 2026

Copy link
Copy Markdown
Collaborator Author

@vedika-saravanan vedika-saravanan marked this pull request as draft May 19, 2026 20:46
@vedika-saravanan

Copy link
Copy Markdown
Collaborator Author

converted it to draft PR to remove the docs update to a separate follow-up PR.

@copy-pr-bot

copy-pr-bot Bot commented May 19, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch from d91fb1b to 0a9891c Compare May 19, 2026 21:10
@vedika-saravanan vedika-saravanan marked this pull request as ready for review May 19, 2026 22:13

@bmhowe23 bmhowe23 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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>
@vedika-saravanan vedika-saravanan force-pushed the NoiseLearning-Integration branch from 06df127 to 359ea62 Compare May 26, 2026 12:44
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
@vedika-saravanan vedika-saravanan enabled auto-merge (squash) May 26, 2026 13:23
@vedika-saravanan vedika-saravanan merged commit 7cab46d into NVIDIA:main May 26, 2026
23 checks passed
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.

2 participants