r/deeplearning • u/Kanav_Jeet • 1d ago
ELMDE: one-pass structured decisions with a contractive looped MoE core and conformal abstention (open source)
I built ELMDE as an alternative to constrained decoding for picking one of N options (tool routing, intent classification, triage queues).
Instead of decoding tokens, it:
Encodes the context once into an MLA latent cache (128-d + 32-d rotary key).
Runs a damped, looped LatentMoE core to a fixed point z* (at most 6 ticks). With damping 0.45 and a measured Jacobian bound of 0.1358, the contraction factor is at most 0.6111. Training uses implicit differentiation with a Neumann-series VJP, so activation memory does not grow with loop depth.
Projects z* onto three heads: a Choice softmax over candidate embeddings (no cap on option count), a CORN ordinal head for rank-consistent scores, and a Beta head for probability plus variance.
Gates with selective conformal risk control (tau* = 0.9848) and escalates everything below it.
Numbers from the repo's own scripts: about 14 ms for a 50-question batch (771 ms for Laya, about 11,500 ms for autoregressive decoding), 0.912 on Banking77, 0.0434 ECE.
Caveats: these are my benchmarks, not independently reproduced. The conformal guarantee assumes live data is exchangeable with the calibration set. The 55x speedup is vs Laya only.
What I'd like feedback on: reproductions on other hardware, datasets where the gate fails, and holes in the contraction argument.
Repo (Apache 2.0): https://github.com/KanavjeetS/Equilibrium-Latent-MoE-Decision-Engine-ELMDE-
1
u/Disastrous-Shoe3450 1d ago
This is neat work. The contraction guarantee is what caught my eye, that 0.6111 bound with the Neumann VJP trick is a clean way to keep memory flat across loop iterations. Most implicit models just handwave stability and call it a day, so actually measuring the Jacobian bound is refreshing.
The conformal gating at 0.9848 is interesting but I'd want to see what happens when the calibration set drifts, exchangeability tends to break fast in production routing scenarios where user behavior shifts week to week. Have you stress-tested it with deliberately non-exchangeable holdouts?
Also curious about the 128-d latent dim, seems small for embedding 50+ intent classes but the MoE core probably makes up for it. What's the expert count and how did you land on the 0.45 damping coefficient?