proxima-fusion/coilstellaration
Viewer • Updated • 1.32M • 2.96k • 6
Single-file self-contained CPU ONNX submission (model.onnx, 36.34 MiB <= 50 MiB, opset 17, CPUExecutionProvider, no external .data sidecars) for Proxima Fusion's CoilStellaration benchmark (bench_version=1.0, dataset revision f505cc890ff2f5cf24a6d68f4b5156d0a3fecb5c, arXiv:2611.12689).
Loop = 0 in the exported ONNX graph) for fixed_shape (NFP = 3, N_c = 5).PhysResNetBackbone with 3 differentiable CorrectorStage blocks, followed by a 36x36x144 Dual-Init comparison (x_net vs. a plasma-conforming filament template x_tmpl) and 6 straight-line unrolled Rank-6 centered-GEMM Gauss-Newton steps (K = 8, 22x22x96 LM grid, cg_iters = 24, col_eps = 1e-2, reg_to_zero = True for k >= 5).val_holdout_suite.pkl (N = 360 boundaries sampled from split="train"). Zero split="eval" data touched training or hyperparameter tuning.split="eval" Results (bench_version=1.0, overall_score=0.7158)
| Track / Stratum | N | Mean Score | Median | p10 | Feas >= 0.9 | Strict Feas |
|---|---|---|---|---|---|---|
fixed_shape |
2,771 | 0.7158 | 0.8987 | 0.1561 | 49.95% | 44.14% |
fixed_shape/loose |
1,026 | 0.9541 | 1.0000 | 0.9103 | 90.06% | 87.43% |
fixed_shape/medium |
861 | 0.6709 | 0.7793 | 0.1682 | 37.17% | 27.87% |
fixed_shape/tight |
884 | 0.4830 | 0.4598 | 0.0376 | 15.84% | 9.73% |
CPUExecutionProvider, intra_op=8, N = 200)
Measured on an idle 8-vCPU allocation (single model per run, separate from the 384-worker Slurm scoring array):
fixed_shape: mean = 572.9 ms, median = 549.7 ms, p90 = 612.7 ms, max = 1167.3 mssplit="train", N = 360)
| Track | N | Mean Score | p10 | Feas >= 0.9 | Strict Feas |
|---|---|---|---|---|---|
fixed_shape |
360 | 0.7165 | 0.1369 | 48.33% | 41.94% |
onnxruntime)
import numpy as np
import onnxruntime as ort
from huggingface_hub import hf_hub_download
path = hf_hub_download("Oursdesvosges/coilstellaration-phys-resnet-loopfree-fixed", "model.onnx")
sess = ort.InferenceSession(path, providers=["CPUExecutionProvider"])
r_cos = np.zeros((5, 9), dtype=np.float32)
z_sin = np.zeros((5, 9), dtype=np.float32)
r_cos[0, 4], r_cos[1, 4], z_sin[1, 4] = 1.0, 0.15, 0.15
coil_x_n, coil_y_n, coil_z_n, currents = sess.run(
["coil_x_n", "coil_y_n", "coil_z_n", "currents"],
{
"boundary_r_cos": r_cos,
"boundary_z_sin": z_sin,
"requirement_metrics": np.array([0.4, 0.8, 3.0, 0.05], dtype=np.float32),
"n_field_periods": np.asarray(3, dtype=np.int64),
"n_coils_per_half_period": np.asarray(5, dtype=np.int64),
},
)