Skip to content

Sound dual bounds for large conv nets (part 2/3 of #115) - #118

Merged
yuleisui merged 1 commit into
SVF-tools:mainfrom
guanqin-123:part2
Oct 14, 2026
Merged

yuleisui merged 1 commit into
SVF-tools:mainfrom
guanqin-123:part2

Conversation

@guanqin-123

Copy link
Copy Markdown
Contributor

Part 2 of 3 of #115.

  • Forward dual bounds keep linear terms only for the perturbed input dims (DualConfig.forward_lin_max_perturbed, mirrored in backend.yaml); interval-only above the cap.
  • MaxPool linear relaxation; centre–radius conv numerics with lane chunking. Fixes the lb > ub crash on VGG16.

Part 2 of 3 of SVF-tools#115.

- Forward bounds keep explicit linear terms only for the perturbed input
  dimensions (DualConfig.forward_lin_max_perturbed, default 100, mirrored
  in backend.yaml); above the cap the forward pass is interval-only.
- MaxPool gets a linear relaxation; conv bounds use centre-radius numerics
  with lane chunking. Fixes the lb > ub crash on VGG16.
@codecov

codecov Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 75.71429% with 68 lines in your changes missing coverage. Please review.
✅ Project coverage is 76.90%. Comparing base (4aeceaa) to head (c997ae3).

Files with missing lines Patch % Lines
act/back_end/dual_tf/tf_forward.py 81.48% 35 Missing ⚠️
act/back_end/solver/solver_dual.py 27.90% 31 Missing ⚠️
act/back_end/dual_tf/tf_cnn.py 95.45% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #118      +/-   ##
==========================================
- Coverage   76.91%   76.90%   -0.02%     
==========================================
  Files          91       91              
  Lines       22143    22367     +224     
==========================================
+ Hits        17031    17201     +170     
- Misses       5112     5166      +54     
Flag Coverage Δ
bab 49.78% <70.35%> (+0.82%) ⬆️
backend-float32 50.70% <73.21%> (+0.25%) ⬆️
backend-float64 52.36% <73.21%> (+0.23%) ⬆️
frontend 31.39% <8.92%> (-0.22%) ⬇️
pipeline-fuzz 20.65% <8.92%> (-0.11%) ⬇️
pipeline-verify 43.85% <52.14%> (+0.29%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
act/config/config.py 88.86% <100.00%> (+1.33%) ⬆️
act/back_end/dual_tf/tf_cnn.py 87.39% <95.45%> (+1.23%) ⬆️
act/back_end/solver/solver_dual.py 63.09% <27.90%> (-2.00%) ⬇️
act/back_end/dual_tf/tf_forward.py 80.30% <81.48%> (-2.23%) ⬇️

... and 4 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4aeceaa...c997ae3. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@yuleisui
yuleisui merged commit 64ce70a into SVF-tools:main Oct 14, 2026
9 checks passed
guanqin-123 added a commit to guanqin-123/ACT that referenced this pull request Oct 14, 2026
Part 3 of 3 of SVF-tools#115 (parts 1 and 2 merged as SVF-tools#116 and SVF-tools#118).

- CLIMB certificate reuse (opt-in): certified dual certificates are
  replayed as ReLU phase cores and propagated to prune BaB subproblems
  early (bab/climb.py).
- BaB restructuring: split, violation-check and multi-split logic move
  out of bab.py into node.py, violation.py and branching/multi_split.py
  (bab.py 2191 -> 1151 lines, branching.py 1217 -> 1094).
- BaB config: reuse_root_bounds becomes the root_bounds_reuse tri-state;
  CLIMB preset; every backend.yaml option documented; input splits can
  no longer pick a zero-width dimension.
- CI: act-bab.yml grep checks replaced by in-source invariants and
  exit-status checks.
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