This repository holds the two full-scale training attempts ( \(\gamma = 0.10\) and \(\gamma = 0.30\)) that followed the d=384 gamma sweep, together with a complete SCAF causal-leak and numerical-stiffness audit of both. Neither run is a successfully completed model. Both were targeting 100,000 steps; both instead entered a persistent cycle of gradient spikes and watchdog reloads well short of that target, and neither improved further once the cycle began. This repository exists to document why, with checkpoints and audit evidence retained specifically so the failure mode can be studied.
The headline finding, from the SCAF stiffness audit (Phase 7/7b/7c):
The model's own explicit Velocity-Verlet integrator is running past its analytical stability boundary. The anisotropic-Gaussian \(V_\theta\)'s off-diagonal (rank-4 low-rank) curvature pushes the effective per-token stiffness \(\omega \Delta t\) above the Verlet stability bound of 2 at every single audited checkpoint in both runs — while a naive diagonal-only proxy for that same curvature stays under 1 throughout and would have reported no problem at all. This is a structural property of the trained potential, not a training-recipe bug, and it is what motivated replacing Verlet with a CfC + BAOAB propagator (unconditionally stable with respect to this curvature by construction) as this architecture's default integrator going forward.
Separately, both checkpoint sets pass SCAF's Phase-1 causal-leak audit cleanly — the instability documented here is a numerical-integration problem, not a causal-leak regression.
Study a real, reproducible instance of explicit-symplectic-integrator instability in a trained conservative language model, including the exact checkpoints, training logs, and audit artifacts involved.
Reproduce the SCAF stiffness audit methodology (diagonal proxy, Weyl-inequality upper bound, native-trajectory cross-check) against these or similar checkpoints.
Compare the anisotropic-Gaussian \(V_\theta\) family's instability signature across two damping coefficients ( \(\gamma = 0.10\) and \(0.30\) ) trained on identical architecture and data.
Do not use this repository if you want a well-trained OpenWebText language model: both checkpoint sets stalled between 7% and 17% of their 100,000-step target, and neither reflects converged behaviour. For a well-trained checkpoint from an earlier, isotropic- \(V_\theta\) version of this architecture, see semsimula-fock-parflm-depthcond-vtheta-openwebtext (27.23 PPL, 250K steps). The anisotropic- \(V_\theta\) + CfC-BAOAB successor run that this repository's finding motivated is expected to supersede both once it completes.
Architecture
Identical Fock-PARFLM v2.1 scaffold to the d=384 gamma sweep that selected these damping coefficients — same width, depth, \(V_\theta\) family, and Fock register configuration, now run to (attempted) full length instead of a 3,000-step sweep candidate:
Velocity-Verlet (dt=1.0) — see below for why this is the finding
Embeddings
Untied (separate W_out)
Mass model
logfreq (frozen OpenWebText surprisal lookup)
Prefix-causal registers
Yes — both checkpoint sets trained natively leak-free from step 0
Total parameters
77,082,733
About the SCAF Library
Every audit result quoted in this card comes from SCAF (SemSimula Causal Auditing Framework), a standalone, model-agnostic library that resolves onto a checkpoint by structural (duck) typing — no base class or Protocol required — and offers two independent audit families:
Causal audit (on main): detects, sizes, and attributes causal leaks — any path by which a token at position s influences a prediction at an earlier position t < s, which would otherwise report a perplexity the model did not earn. Two probes ask deliberately different questions: future_perturbation (bit-exact — is there a leak at all?) and target_relocation (how many nats of perplexity were unearned?), backed by three controls (determinism, placebo, positive) that a verdict of CLEAN cannot be issued without. A mediation diagnostic then attributes a confirmed leak to the responsible component by knockout, and scaf.LeakMonitor runs the same probes continuously during training, since leak channels are often gated by a scale initialised at zero and open gradually as training proceeds. A build_leak_frame / estimate_leak bridge hands the same intervention to DoWhy/EconML for exact paired-inference ATEs, refutation tests, and CATE-by-distance heterogeneity profiles via a causal forest. This is what certified both this repository's checkpoint sets CLEAN in SCAF Causal-Leak Audit: Clean.
Stiffness audit (scaf.StiffnessProbe, currently on the stiffness_audit branch, scheduled to merge into main alongside SCAF's other active branches): audits a trained model's numerical integration stability rather than its causal structure, via the diagonal-proxy / Weyl-inequality-upper-bound / native-trajectory-cross-check methodology used throughout this card's stiffness audit section. It is trajectory-faithful by construction (it drives the model through InterventableModel.batch_logits_with_trajectory rather than re-deriving a trajectory by hand), reports block-bootstrap 95% CIs on every fraction-unstable statistic, and skips loudly rather than silently if a model does not expose the harmonic_terms()/mass() hooks it needs.
Training Runs: Two Damping Coefficients, Two Stalled Runs
Both runs used identical architecture, data, and optimisation recipe, differing only in \(\gamma_{\text{train}}\), the damping coefficient selected by the gamma sweep ( \(\gamma = 0.10\) was the sweep winner; \(\gamma = 0.30\) was audited as a second candidate on the same architecture to see whether heavier damping alone would suppress the instability). Neither did:
\(\gamma = 0.10\)
\(\gamma = 0.30\)
Target steps
100,000
100,000
Max step actually logged
17,100
11,254
Watchdog reloads
15
5
First reload
step 8,925
step 7,124
Best checkpoint (canonical _best.pt)
step 10,000
step 10,000
Best val PPL
184.11
211.63
PPL at last logged step
worse than best (192.53 at step 15,000)
worse than best (221.35 at step 7,500)
Both runs show the same qualitative signature: PPL improves normally up to the first watchdog reload cluster, then stops improving — every checkpoint saved after the reloads begin is worse than the pre-cluster best, and the run never recovers a new best afterward within the logged window. Heavier damping ( \(\gamma = 0.30\) ) delayed the first reload (step 7,124 vs. 8,925 — comparable, if anything slightly earlier) and reduced the reload count (5 vs. 15) but did not eliminate the pattern, which is consistent with a structural integrator problem rather than an under-damping problem (see below).
SCAF Causal-Leak Audit: Clean
Both checkpoint sets were run through SCAF's Phase-1 causal-leak audit (FockAdapter, future_perturbation and target_relocation probes, plus determinism/placebo/positive controls). Verdict: CLEAN for both, at every audited checkpoint:
Probe / control
\(\gamma=0.10\)
\(\gamma=0.30\)
control_determinism
PASS (0.0 logit)
PASS (0.0 logit)
control_placebo
PASS (0.0 logit)
PASS (0.0 logit)
control_positive
PASS (9.31 logit — probe reaches the model)
PASS (8.80 logit)
future_perturbation
PASS (0.0 logit, bit-exact)
PASS (0.0 logit, bit-exact)
target_relocation
PASS (0.0 nats, PPL inflation 1.0x)
PASS (0.0 nats, PPL inflation 1.0x)
Both checkpoint sets were trained natively with prefix_causal_registers=True from step 0, so this is the expected result, not a new fix — it confirms the instability documented below is purely a numerical-integration problem, with no interaction with the register-leak fix from earlier in this model family. Full audit output: results/gamma_0.10/scaf_analysis_results/phase1_scaf_audit.json and results/gamma_0.30/scaf_analysis_results/phase1_scaf_audit.json.
SCAF Stiffness Audit: The Instability Mechanism
The anisotropic-Gaussian \(V_\theta\)'s force is a sum of Gaussian bumps with non-diagonal curvature:
where \(B_k \in \mathbb{R}^{384 \times 4}\) is the learned low-rank factor giving each well its off-axis curvature. Near a well, this is locally a spring with stiffness matrix \(\sum_k g_k P_k\), and the explicit Velocity-Verlet integrator that this model was trained with is a second-order symplectic method whose stability for a harmonic oscillator with frequency \(\omega\) requires
$$
\omega \Delta t < 2 .
$$
Above this bound the discrete update's amplification factor leaves the unit circle and every subsequent step amplifies the deviation instead of oscillating around it — trading a bounded, physically faithful trajectory for one that diverges geometrically, which is exactly the gradient-spike-then-reload signature seen in both training logs.
SCAF's stiffness audit (Phase 7) samples the trained model's own hidden-state trajectory and computes \(\omega \Delta t\) at each sampled (token, layer) position, in two ways:
Diagonal proxy (k_diag): keeps only the diagonal of \(\sum_k g_k P_k\), the quantity the CfC+BAOAB propagator (see below) can integrate exactly in closed form.
Weyl-inequality upper bound (Phase 7b): applies Weyl's inequality twice — once per well ( \(\lambda_{\max}(P_k) \le \max_i a_k[i] + \sigma_{\max}(B_k)^2\) ) and once across wells — to certify an upper bound on the true, any-direction top eigenvalue of \(\sum_k g_k P_k\), not just its diagonal.
step
val PPL
diag max
diag frac(>2)
Weyl max
Weyl frac(>2)
gamma=0.10, 9,000
194.68
0.6319
0.000e+00
4.2452
5.28e-02
gamma=0.10, 9,500
191.84
0.3423
0.000e+00
2.7128
5.62e-02
gamma=0.10, 10,000
184.11
0.4711
0.000e+00
2.9264
5.93e-02
gamma=0.10, 15,000
192.53
0.4182
0.000e+00
2.6572
6.21e-02
gamma=0.30, 4,500
222.60
0.4131
0.000e+00
2.5318
5.61e-02
gamma=0.30, 5,000
218.08
0.5607
0.000e+00
3.0960
2.68e-02
gamma=0.30, 6,000
215.09
0.4105
0.000e+00
2.8634
2.84e-03
gamma=0.30, 7,500
221.35
0.5914
0.000e+00
3.6095
2.94e-03
gamma=0.30, 10,000
211.63
0.3835
0.000e+00
2.8538
3.76e-03
At every one of the nine audited checkpoints across both runs, Weyl max clears the stability bound of 2 (range 2.53-4.25), while diag max never even approaches 1. Statistically, Weyl frac(>2) — the fraction of all sampled (token, layer) positions where the Weyl bound itself exceeds 2 — is consistently 2.7%-6.2% of positions, not a rare tail event: a non-trivial share of the model's own forward pass is operating past this integrator's stability boundary at every checkpoint examined.
Two curves against training step for gamma=0.10: a flat blue diagonal-proxy line under 1 throughout, and an orange Weyl-bound line that starts at 4.25, dips to about 2.7-2.9, and stays there through step 15000, with a dotted horizontal line at 2 marking the Verlet stability bound that only the orange curve crosses.
Two curves against training step for gamma=0.30: a flat blue diagonal-proxy line under 1 throughout, and an orange Weyl-bound line zig-zagging between about 2.5 and 3.6, with a dotted horizontal line at 2 marking the Verlet stability bound that only the orange curve crosses.
Why the Diagonal Proxy Misses It
A synthetic verification (500 trials of random 8-well anisotropic mixtures at d=16, rank=4, checked against the exact eigendecomposition of the true effective matrix) confirms this is a real property of the inequality, not a fluke of these two checkpoints: k_diag's per-dimension maximum underestimated the true top eigenvalue in all 500/500 trials (mean gap 3.77, on a typical eigenvalue scale of 5-18), while the Weyl bound never once fell below the true value. The rank-4 low-rank correction \(B_k B_k^\top\) can concentrate curvature along a direction that is not axis-aligned, and a purely diagonal statistic is structurally blind to exactly that direction — which is precisely the direction the model's own learned wells are using. Full derivation and the synthetic verification plot: Weyl-inequality upper bound section of the SCAF stiffness-audit design doc.
Trajectory-Fidelity Cross-Check (Phase 7c)
Phase 7 samples the audited trajectory under a forced baoab_cfc integrator regardless of a checkpoint's own native integrator, which could in principle change which curvature the audit samples. Phase 7c closes this caveat by re-running each checkpoint under its own native Verlet trajectory instead, for both runs:
step
Weyl max, forced
Weyl max, native
Weyl frac(>2), forced
Weyl frac(>2), native
gamma=0.10, 9,000
4.2452
3.0195
5.282e-02
5.276e-02
gamma=0.10, 9,500
2.7128
4.0838
5.619e-02
5.621e-02
gamma=0.10, 10,000
2.9264
2.7457
5.932e-02
5.932e-02
gamma=0.10, 15,000
2.6572
3.1421
6.206e-02
6.204e-02
gamma=0.30, 4,500
2.5318
2.4708
5.610e-02
5.608e-02
gamma=0.30, 5,000
3.0960
2.6971
2.683e-02
2.673e-02
gamma=0.30, 6,000
2.8634
2.7393
2.838e-03
2.777e-03
gamma=0.30, 7,500
3.6095
2.8911
2.945e-03
2.914e-03
gamma=0.30, 10,000
2.8538
2.8538
3.761e-03
3.754e-03
Weyl frac(>2) agrees between forced and native trajectories to within 0.02 percentage points at every single checkpoint in both runs, and Weyl max stays clear of the stability bound in both modes at every checkpoint too. The forced-vs-native discrepancy is negligible next to the trend it is being asked to corroborate — the trajectory-substitution caveat is closed for both damping coefficients, by their own checkpoints, without needing extra training.
Two panel chart for gamma=0.30 sharing the training step x axis. Top panel: diagonal-proxy max under forced baoab_cfc (blue) versus native Verlet (green dashed) trajectories, both flat and under 0.6 throughout. Bottom panel: Weyl-bound max under forced (orange) versus native (purple dashed) trajectories, both zig-zagging between about 2.4 and 3.6 with no consistent separation, both clearing the dotted horizontal stability bound at 2 at every point.
What This Motivated: CfC + BAOAB
This evidence — a structural curvature violation of the Verlet stability bound present at every audited checkpoint, in both damping regimes, confirmed independent of the audit's own trajectory choice — is what motivated replacing Velocity-Verlet with a Closed-form Continuous-time (CfC) + BAOAB propagator for this architecture going forward. CfC integrates the harmonic component of the force in closed form (via torch.sinc-based exact-flow update rather than an explicit finite-difference step), which is unconditionally stable with respect to this curvature by construction rather than conditionally stable below \(\omega \Delta t = 2\).
This is not a free lunch: the CfC+BAOAB propagator costs roughly 2.4x Velocity-Verlet's per-step wall-clock time on the same GPU. An early CfC+BAOAB run also hit its own regression — a grad=nan traced to torch.sqrt's infinite derivative at exactly k_diag/m == 0 inside cfc_substep — which was fixed with an _OMEGA_SQ_FLOOR = 1e-12 clamp and confirmed to produce zero NaNs across a full resumed training run. The CfC+BAOAB run is in progress as of this card's creation and will be published as its own model card once complete; see the deep-dive writeup for the full implementation: PyTorch_Implementation_of_CfC_BAOAB_in_Fock-PARFLM.md.
Supporting SCAF causal-estimation phases (ATE, register diagnostics, CATE-by-distance), included for completeness
model_aniso_gaussian_vtheta.py
Anisotropic Gaussian V_theta classes + install_aniso_depth_routing (identical file to the gamma-sweep repo's)
config.json
Full run configuration, per-run summary statistics, and links to the successor CfC+BAOAB work
Training Details
Training Data
OpenWebText, tokenized with GPT-2 BPE (vocab 50257), evaluated on a held-out 2M-token validation slice with no train/val overlap. Both runs targeted 100,000 steps and were early-terminated (in the sense of "checkpoints stopped being retained as _best") by the instability documented above, at step 17,100 (gamma=0.10) and step 11,254 (gamma=0.30).
Training Procedure
Hyperparameter
Value
Optimizer
AdamW (betas 0.9/0.95, weight decay 0.01)
LR schedule
WSD
Peak learning rate
3e-4
Block size
512
Target steps
100,000
Gradient clipping
per-group (global 1.0; V_phi and Fock gates tighter)
Watchdog
reloads last-best checkpoint on gradient-norm-EMA or grad-spike triggers
notebooks/conservative_arch/scaleup/colab_fock_aniso_gaussian_fockreg_openwebtext.ipynb (companion repo). SCAF audit performed with notebooks/conservative_arch/scaleup/debug/scaf_checkpoint_analysis.ipynb (same repo).
Evaluation Results
OpenWebText Validation Perplexity (best retained checkpoint per run)
\(\gamma\)
Best step
PPL
0.10
10,000
184.11
0.30
10,000
211.63
Neither of these is comparable to the fully trained OpenWebText checkpoints elsewhere in this family (e.g. 27.23 PPL after 250K steps for the isotropic flagship) — both runs stalled at 10-17% of their 100,000-step target due to the instability documented above.
SPLM Family Overview
This model is part of the Semantic Simulation SPLM family:
Not a final trained model — this is a diagnostic repository. Both checkpoint sets stalled at 10-17% of their 100,000-step target and were never intended to produce fluent text; use them to study the instability, not for generation or downstream use.
PPL not comparable to converged checkpoints elsewhere in this family. See the caveat under Evaluation Results.
Structural Verlet instability, not a training-recipe bug. The Weyl-bound curvature violation is present at every audited checkpoint across two different damping coefficients and is confirmed independent of the audit's trajectory-substitution choice (Phase 7c); it should be expected to recur in any future Velocity-Verlet-integrated run of this exact \(V_\theta\) family unless the curvature itself is constrained (e.g. by capping the rank-4 factor's spectral norm) or the integrator is replaced, as this repository's finding motivated.
Weyl bound is an upper bound, not the exact top eigenvalue. A synthetic check found a mean overshoot of 3.77 on eigenvalues typically in the 5-18 range — the reported Weyl frac(>2) values (2.7%-6.2%) are a ceiling on how much of each run crosses the stability line via the off-diagonal direction, not an exact measurement. The exact-eigenvalue extension (torch.linalg.eigvalsh on the small rank-4-derived matrix) is a documented follow-up, not yet run against these checkpoints.
No causal-leak issue. Both checkpoint sets were trained natively with prefix_causal_registers=True; see SCAF Causal-Leak Audit: Clean.
OpenWebText only, English only. No instruction tuning, no RLHF/DPO, no safety filtering.
Single-seed runs. Each of the two damping coefficients is one run; no seed-variance estimate is available for either the instability onset step or its severity.
Citation
bibtex
1@misc{Gueorguiev2026SemSim,
2 author = {Gueorguiev, Dimitar P.},
3 title = {Semantic Simulation: A Prescriptive Lagrangian Framework
4 for Efficient Semantic Inference --- A Conservative-by-
5 Construction Language Model and the Shared-Potential
6 Separator, with a Correspondence to Joint Embedding
7 Predictive Architectures},
8 year = {2026},
9 publisher = {Zenodo},
10 doi = {10.5281/zenodo.19712427},
11 url = {https://doi.org/10.5281/zenodo.19712427},
12 note = {Companion code repository:
13 \url{https://github.com/dimitarpg13/semsimula-paper}}
14}
Environmental Impact
Hardware: 1x NVIDIA H100/A100 80GB (Google Colab)
Training: 17,100 + 11,254 = 28,354 total logged training steps across both runs, both terminated by the instability documented here rather than reaching their 100,000-step target
Audit: SCAF Phase 1/7/7b/7c analysis, inference-only, on 9 checkpoints total across both runs
Carbon footprint: small; single-GPU research runs, estimated on the order of a few kg CO2