|
| 1 | +#import "@preview/peace-of-posters:0.5.6" as pop |
| 2 | +#import "@preview/cetz:0.4.1": canvas, draw |
| 3 | +#import "@preview/qec-thrust:0.1.1": * |
| 4 | + |
| 5 | +#show link: set text(blue) |
| 6 | +#set page("a0", margin: 1cm) |
| 7 | +#pop.set-poster-layout(pop.layout-a0) |
| 8 | +#pop.set-theme(pop.uni-fr) |
| 9 | +#set text(size: pop.layout-a0.at("body-size")) |
| 10 | +#let box-spacing = 1.2em |
| 11 | +#set columns(gutter: box-spacing) |
| 12 | +#set block(spacing: box-spacing) |
| 13 | +#pop.update-poster-layout(spacing: box-spacing) |
| 14 | + |
| 15 | +#pop.title-box( |
| 16 | + "BPDecoderPlus: Circuit-Level Quantum Error Correction with Belief Propagation and Tropical Tensor Networks", |
| 17 | + authors: [Si-Yuan Chen$""^*$, Meng-Kun Liu$""^*$, Shen Yang$""^*$ and Jin-Guo Liu$""^*$], |
| 18 | + institutes: text(36pt)[ |
| 19 | + ], |
| 20 | + title-size: 1.3em, |
| 21 | +) |
| 22 | + |
| 23 | +#columns(2,[ |
| 24 | + |
| 25 | + #pop.column-box(heading: "Abstract")[ |
| 26 | +Quantum error correction (QEC) is essential for fault-tolerant quantum computing. We present *BPDecoderPlus*, a Python package implementing two complementary approaches for decoding surface codes under circuit-level noise: |
| 27 | + |
| 28 | +1. *BP+OSD Decoder*: Belief propagation with ordered statistics decoding post-processing, achieving near-optimal performance on quantum LDPC codes. |
| 29 | + |
| 30 | +2. *Tropical Tensor Networks*: Exact Most Probable Explanation (MPE) computation via tropical semiring contraction, providing optimal solutions for moderate-size instances. |
| 31 | + |
| 32 | +Our implementation correctly resolves the circuit-level error threshold at $approx 0.7%$ for rotated surface codes, validating against established literature. The package features GPU acceleration via PyTorch, comprehensive CLI tools, and integration with Google's Stim simulator. |
| 33 | + ] |
| 34 | + |
| 35 | + #pop.column-box(heading: "Rotated Surface Code")[ |
| 36 | +#grid(columns: 2, gutter: 20pt, |
| 37 | +canvas(length: 5cm, { |
| 38 | + import draw: * |
| 39 | + surface-code((0, 0), size: 2.5, 3, 3, name: "sc") |
| 40 | +}), |
| 41 | +box[ |
| 42 | + *Detection events* (not raw syndromes): |
| 43 | + - Measurement errors flip syndrome values |
| 44 | + - Event = XOR of consecutive measurements |
| 45 | + - Localizes errors in space-time |
| 46 | + |
| 47 | + *Detector Error Model* (DEM): |
| 48 | + - Error probabilities per fault |
| 49 | + - Detector-error associations |
| 50 | + - Observable flip annotations |
| 51 | +] |
| 52 | +) |
| 53 | + |
| 54 | +#align(center)[ |
| 55 | + #box(stroke: 2pt, inset: 12pt, radius: 5pt)[ |
| 56 | + Detection Events $arrow.r$ *Decoder* $arrow.r$ Observable Flip Prediction |
| 57 | + ] |
| 58 | +] |
| 59 | + ] |
| 60 | + |
| 61 | + #let hba = pop.uni-fr.heading-box-args |
| 62 | + #hba.insert("stroke", (paint: gradient.linear(blue, purple, red), thickness: 10pt)) |
| 63 | + #let bba = pop.uni-fr.body-box-args |
| 64 | + #bba.insert("inset", 30pt) |
| 65 | + #bba.insert("stroke", (paint: gradient.linear(blue, purple, red), thickness: 10pt)) |
| 66 | + |
| 67 | + #pop.column-box(heading: "BP+OSD Decoder", stretch-to-next: true)[ |
| 68 | +*Belief Propagation* iteratively passes messages on a factor graph to compute marginal probabilities. For QEC, the factor graph is derived from the parity check matrix $H$. |
| 69 | + |
| 70 | +#grid(columns: 2, gutter: 40pt, |
| 71 | +canvas(length: 1.2cm, { |
| 72 | + import draw: * |
| 73 | + // Variable nodes (circles) |
| 74 | + for (i, x) in ((0, -2), (1, 0), (2, 2)) { |
| 75 | + circle((x, 2), radius: 0.4, name: "v" + str(i), stroke: 2pt, fill: rgb("#e3f2fd")) |
| 76 | + content((x, 2), [$e_#i$]) |
| 77 | + } |
| 78 | + // Factor nodes (squares) |
| 79 | + for (i, x) in ((0, -1), (1, 1)) { |
| 80 | + rect((x - 0.4, -0.4), (x + 0.4, 0.4), name: "f" + str(i), stroke: 2pt, fill: rgb("#fff3e0")) |
| 81 | + content((x, 0), [$d_#i$]) |
| 82 | + } |
| 83 | + // Edges |
| 84 | + line("v0", "f0", stroke: 2pt) |
| 85 | + line("v1", "f0", stroke: 2pt) |
| 86 | + line("v1", "f1", stroke: 2pt) |
| 87 | + line("v2", "f1", stroke: 2pt) |
| 88 | + content((0, -1.5), [Factor Graph]) |
| 89 | +}), |
| 90 | +box[ |
| 91 | + *Message passing:* |
| 92 | + $ mu_(v arrow f) = product_(f' in N(v) \\ f) mu_(f' arrow v) $ |
| 93 | + $ mu_(f arrow v) = sum_(bold(x): x_v = 0,1) psi_f (bold(x)) product_(v' in N(f) \\ v) mu_(v' arrow f) $ |
| 94 | +] |
| 95 | +) |
| 96 | + |
| 97 | +*Ordered Statistics Decoding (OSD)* post-processes BP output: |
| 98 | +1. Sort variables by BP reliability |
| 99 | +2. Fix most reliable bits using Gaussian elimination |
| 100 | +3. Exhaustively search remaining bits (OSD-$w$ searches $w$ bits) |
| 101 | + |
| 102 | +#highlight[Key insight: BP provides soft information; OSD provides guaranteed valid codeword.] |
| 103 | + ] |
| 104 | + |
| 105 | +#colbreak() |
| 106 | + |
| 107 | + #pop.column-box(heading: "Tropical Tensor Networks for MPE")[ |
| 108 | +The *Most Probable Explanation* (MPE) problem finds the most likely error pattern given observations. We solve this exactly using tropical tensor networks. |
| 109 | + |
| 110 | +*Tropical Semiring:* $(RR union {-infinity}, max, +)$ |
| 111 | +- Addition $arrow.r$ max operation |
| 112 | +- Multiplication $arrow.r$ standard addition |
| 113 | + |
| 114 | +#grid(columns: 2, gutter: 30pt, |
| 115 | +box[ |
| 116 | + *Standard tensor contraction:* |
| 117 | + $ C_(i k) = sum_j A_(i j) dot B_(j k) $ |
| 118 | +], |
| 119 | +box[ |
| 120 | + *Tropical contraction:* |
| 121 | + $ C_(i k) = max_j (A_(i j) + B_(j k)) $ |
| 122 | +] |
| 123 | +) |
| 124 | + |
| 125 | +For probabilistic graphical models in log-space: |
| 126 | +$ log P(bold(x)) = sum_f log psi_f (bold(x)_f) $ |
| 127 | + |
| 128 | +#highlight[Tropical contraction computes $max_(bold(x)) log P(bold(x))$ exactly!] |
| 129 | + |
| 130 | +*Implementation highlights:* |
| 131 | +- Uses `omeco` for optimal contraction ordering |
| 132 | +- PyTorch backend with GPU support |
| 133 | +- Backtracking recovers the optimal assignment |
| 134 | +- Complexity: $O(2^(text("treewidth")))$ |
| 135 | + ] |
| 136 | + |
| 137 | + #pop.column-box(heading: "Threshold Results")[ |
| 138 | +#align(center)[ |
| 139 | + #image("threshold_comparison.png", width: 95%) |
| 140 | +] |
| 141 | + |
| 142 | +#table( |
| 143 | + columns: 4, |
| 144 | + align: center, |
| 145 | + stroke: 0.5pt, |
| 146 | + table.header([*Noise Model*], [*BP Only*], [*BP+OSD*], [*Optimal*]), |
| 147 | + [Code capacity], [N/A], [$approx 9.9%$], [$10.3%$], |
| 148 | + [Circuit-level], [N/A], [$approx 0.7%$], [$approx 1%$], |
| 149 | +) |
| 150 | + |
| 151 | +#grid(columns: 2, gutter: 20pt, |
| 152 | +box[ |
| 153 | + *Configuration:* |
| 154 | + - BP: 60 iterations, min-sum |
| 155 | + - Damping: 0.2, OSD order: 10 |
| 156 | +], |
| 157 | +box[ |
| 158 | + *Validation:* |
| 159 | + - Matches ldpc library @Higgott2023 |
| 160 | + - Curves cross at threshold |
| 161 | +] |
| 162 | +) |
| 163 | + ] |
| 164 | + |
| 165 | + #pop.column-box(heading: "Software Architecture")[ |
| 166 | +#align(center)[ |
| 167 | +#box(stroke: 1pt, inset: 10pt, radius: 3pt)[ |
| 168 | + Stim Circuit $arrow.r$ DEM $arrow.r$ Factor Graph $arrow.r$ BP/Tropical $arrow.r$ Prediction |
| 169 | +] |
| 170 | +] |
| 171 | + |
| 172 | +*Key features:* |
| 173 | +- *Stim integration*: Generate noisy circuits for rotated surface codes |
| 174 | +- *DEM parsing*: Two-stage processing (separator splitting + hyperedge merging) |
| 175 | +- *PyTorch backend*: GPU-accelerated batch inference |
| 176 | +- *CLI tools*: `generate-noisy-circuits` for dataset creation |
| 177 | +- *Modular design*: BP and Tropical modules are independent |
| 178 | + |
| 179 | +#highlight[Developed with *vibe coding*: human-AI collaboration using Claude Code accelerated development from concept to working threshold plots.] |
| 180 | + |
| 181 | +#link("https://github.com/TensorBFS/BPDecoderPlus")[github.com/TensorBFS/BPDecoderPlus] |
| 182 | + ] |
| 183 | + |
| 184 | + #pop.column-box(heading: "References", stretch-to-next: true)[ |
| 185 | + #bibliography("bibliography.bib", title: none) |
| 186 | + ] |
| 187 | +]) |
| 188 | + |
| 189 | +#pop.bottom-box()[ |
| 190 | + #align(right, [#align(horizon, grid(columns: 5, column-gutter: 30pt, image("github-dark.png", width: 70pt), "TensorBFS/BPDecoderPlus", h(50pt), image("email.png", width: 70pt), "jinguoliu@hkust-gz.edu.cn"))]) |
| 191 | +] |
0 commit comments