Technical Report · Neural Architecture · v0.1

System 3: A Fast System 1 Router that Steers a System 2 Transformer

A small, event-driven latent state that stays put until something surprising happens — and quietly changes how the model thinks.

Independent research · github.com/tdizhere/System3

Abstract

Most language models think the same way about every token — a period and a punchline get the same treatment — and they keep no lasting sense of “what am I doing right now?”. System 3 adds that missing ingredient: a small, persistent mental state that stays the same for long stretches and only updates when the model is genuinely surprised by what it just saw. That state then gently reshapes how every layer of the network attends and transforms its input.

Technically, we embed a System 1 module — a JEPA-style predictive-coding, state-routing router — inside a conventional autoregressive System 2 transformer. We train a 53.0M-parameter model on TinyStories + TinyGSM8k to 2.004 nats held-out (perplexity 7.4), and — through a driver-vs-passenger audit — show the state is actually used: removing or scrambling it makes the model measurably worse. Every mechanism is an independent on/off switch.

2.004
Best val · nats
perplexity 7.4
53.0
Parameters · M
d_model 512 · 8 layers
24
State anchors
6 intents × 4 depths
5.7
Switch rate · %
target 8% · event-driven
+0.0042
State-removed Δ · nats
the state matters

1 The idea, in plain words

You already run on two speeds. Catch a ball, recognise a face, finish a familiar sentence — that is the fast, instinctive mode. It is cheap, it never stops running, and you barely notice it. Then there is the slow mode: doing long division, planning a trip, checking your own work. Deliberate, expensive, one careful step at a time.

Modern language models are almost entirely the slow kind. For every single word they re-run the same big, careful computation, and they carry no lasting sense of where they are in the task. Ask one to summarise a story and then to solve a maths problem, and internally there is no switch that says “we have changed activity now”. Everything is recomputed from scratch, word by word.

Our idea is to give it that missing sense. Alongside the fast word-by-word engine, we add a small, slow “state” — a handful of numbers that describe the model’s current frame of mind, like planning, explaining, or checking my answer. Crucially, that state does not change every word. It sits still, and it changes only when the model is genuinely surprised by what just happened — exactly like how you keep reading calmly until something unexpected makes you stop and re-read.

When the state does change, it doesn’t just pick a different internal setting. It reaches into every layer of the network and steers it — nudging attention and the feed-forward parts so the model thinks differently while that state is active. Fast engine, slow guide. That combination is what we call System 3.

Concretely, System 3 couples a System 1 module — a JEPA-style predictive-coding, state-routing router — with a standard autoregressive System 2 transformer. The router maintains a latent macro-state st, opens a calibrated, semi-Markov switch gate only when the predictive-coding residual — the model’s surprise — spikes, scores discrete and continuous state proposals with a System 1 bilinear-plus-value metric, and steers every transformer layer through AdaRMSNorm modulation, a state-routed LoRA-SwiGLU, and a per-head attention temperature.

Why bother — and why it should be testable

A model that could hold a frame of mind would, in principle, spend its effort where it belongs: a single “explain this simply” state could shape a whole paragraph without the model re-deciding its stance at every token. But a claim like that is easy to make and easy to fake — you can draw a beautiful internal state that the rest of the network secretly ignores. So we built the second half of the idea in from day one: a test that deletes or scrambles the state and checks whether the model gets worse. If it doesn’t get worse, the state was decoration.

Contributions

2 Background

Two families of ideas already live close to ours, and it helps to see how. The first is prediction: our brains (and good compression) work by predicting what comes next and paying attention only to what they got wrong. The second is routing: instead of using one giant network for everything, send each token to the few small experts that suit it.

What neither has, by itself, is a memory of mood. Prediction gives you surprise, but a fresh surprise at every token. Routing picks experts, but forgets its choice immediately. Nobody keeps a single slow state that both lingers and steers. That gap is the one System 3 fills.

System 3 borrows its objective from predictive coding and JEPA, its mechanism from sparse routing and discrete stochastic gates, its interface from conditional normalisation (FiLM / adaLN), and its efficiency from low-rank adaptation and linear-time state updates.

Predictive coding JEPA Sparse MoE / Switch Hard-Concrete L0 Gumbel-Softmax FiLM / adaLN-Zero LoRA Semi-Markov dwell Sinkhorn OT routing Associative scan GQA + RoPE

Predictive coding / JEPA. Rao & Ballard (1999) framed perception as prediction-error minimisation; LeCun (2022) and Assran et al. (2023) turned it into the Joint-Embedding Predictive Architecture, predicting representations rather than raw inputs. System 3 uses the predictive residual not as a training objective alone but as the control signal that decides when to switch.

Sparse routing. Shazeer et al. (2017) and Fedus et al. (2022) route tokens to experts; the routing is per-token and time-independent. System 3’s routing is temporally persistent: the assignment is a latent state with a dwell time, and its balance objective is an optimal-transport (Sinkhorn) assignment rather than a top-1 gate.

Conditioning & steering. FiLM (Pérez et al., 2018) and adaLN-Zero (Peebles & Xie, 2023) modulate features from a conditioning vector; LoRA (Hu et al., 2022) injects low-rank updates. System 3 does both, but the conditioning vector is a learned, recurrent latent state, composed with a state-routed low-rank path and a per-head attention temperature.

State & time. Semi-Markov and hidden-Markov models (Rabiner, 1989) let a chain hold its state for a random duration; selective state-space models (Gu & Dao, 2024) run linear recurrence efficiently. System 3 adopts the dwell idea for switch timing and computes its inter-layer state refinement with an exact O(log T) Kogge–Stone associative scan.

3 Architecture

Think of System 3 as two workers with different rhythms. The first is the ordinary language model — fast, reading token by token. The second is a small supervisor that watches the fast worker but thinks slowly: it holds one “state” for a long time and only changes it when the fast worker seems surprised. When it does change, it leans over and adjusts the fast worker’s attention and thinking for a while.

That’s the whole shape of it. Everything below — the gates, the state space, the steering details — is engineering in service of those two roles.

The System 2 stream is a standard autoregressive transformer: embeddings, a state-free perceptual stem, a stack of steered blocks, a final RMSNorm and a tied LM head. The System 1 stream reads the stem’s context and emits, per position, a latent state st, a binary switch trace gt, and a dwell counter τt. The backbone perceives downward into the router; the router steers upward into the backbone.

System 3 — two coupled streams Input tokens x₁ … x_T Perceptual stem Layer 0 · state-free Steered blocks × (L−1) layers · state-coupled AdaRMSNorm · LoRA-SwiGLU · head-τ Final RMSNorm + tied LM head Logits next token System 1 · cognitive router predict → surprise → gate → proposals → S₁ score latent macro-state s_t (d_state = 128) · 24 anchors = 6 intents × 4 depth modes the state changes only when surprise opens the gate (semi-Markov) perceive: context h_t steer: s_t, g_t, τ_t recurrence over t — s_t becomes s_(t−1) at the next step System 2 backbone — fast, serial, per-token System 1 router — slow, event-driven state state-coupled computation (steering) coupling & recurrence
Figure 1 System 3 overview — the two coupled streams. The System 2 backbone (top, slate) processes tokens serially: stem → steered blocks (amber) → tied LM head. The System 1 router (bottom, teal) reads the stem context and maintains a persistent latent state st with switch trace gt and dwell τt, then steers every steered block. Because the state updates only on a switch, its cadence is semi-Markov — long holds, punctuated by surprise-driven jumps.

4 Method

At every word, the supervisor runs one short checklist. It guesses what should come next; it measures how wrong that guess was; it decides whether the wrongness is big enough to change its state; if so, it picks a new state from a small menu; and then it uses that state to adjust the main model. Five quick steps, repeated word by word — but the state only actually moves when step three says yes.

Each position t executes five stages — predict, surprise, gate, propose, score — then writes the new state. The loop is fully differentiable, so gradients from the language-modelling loss reach the gate and the codebooks.

One router step — executed once per position t ① Predictor ĥ_t = f_θ([ h_(t−1) ; s_(t−1) ]) JEPA-style forward model ② Surprise r_t = ‖u(e_t) − u(ĥ_t)‖² ∈ [0,4] · unit-RMS ③ Switch gate g_t ~ Hard-Concrete τ_t = (1−g_t)(τ_(t−1)+1) ④ Proposals c_k = anchor_k + ν · û_k top-k over the manifold ⑤ S₁ score bilinear + value − λ‖Δ‖² → s_t (gumbel-argmax) closed loop — the chosen state becomes s_(t−1) at the next step, feeding the predictor and proposals if the gate stays shut, the state is held and the dwell timer ticks surprise is zero-centred and unit-variance via a running EMA; the gate temperature cancels in P(open) = σ(logit). training draws stochastic gates (Hard-Concrete / Gumbel); evaluation takes the deterministic mode.
Figure 2 The router step, executed once per position. A closed-loop predictor (①) produces a representation for the next token whose violation becomes the surprise signal (②); the calibrated gate (③) decides whether to switch; candidate states are drawn from a compositional manifold plus continuous nuance (④) and ranked by a bilinear-plus-value System 1 score with an explicit jump cost (⑤). The dashed feedback is what makes the loop closed — and it is itself an ablatable switch.

4.1 The switch: when to stop and rethink

The heart of System 3 is a very simple question: “did something unexpected just happen?” The supervisor makes a guess about the next word, compares it to what actually arrived, and produces a number — surprise. Low surprise means “carry on, keep the same state”; high surprise means “prick up your ears and update”. To avoid twitching at every tiny blip, we give the state a kind of inertia: it takes more than one surprise to move it, and it tracks how long it has held still.

Raw error is neither dimension- nor scale-invariant, so we project both the target and the prediction onto the unit-RMS sphere before taking a mean squared error. The result provably lies in [0, 4] regardless of d_model, and equals 2 · (1 − cos similarity) — surprise is a genuine geometric disagreement.

ĥt = fθ([ ht−1 ; st−1 ])  ·  rt = ‖ u(et) − u(ĥt) ‖² ∈ [0, 4]

The target is the next-token embedding, not the post-attention context: consecutive context vectors correlate at only cos ≈ 0.33 and the predictor plateaus, which would leave surprise nearly constant and the gate with no usable input. Because the embedding is reused by the tied LM head, this also ties the router’s objective to the model’s own output space. Raw surprise is standardised against a running EMA of its mean and variance, so the gate always sees a zero-centred, unit-variance signal.

Switching is a Hard-Concrete (stretched-L0) gate — a genuinely discrete open/closed decision that stays differentiable through a reparameterised relaxation. Its open probability is exactly σ(logit) (the temperature cancels), so the reported open rate is the true one. While the gate stays closed the state is held and the dwell counter ticks:

st = gt·scand + (1 − gt)·st−1  ·  τt = (1 − gt)(τt−1 + 1)

The dwell counter τt is fed back through Fourier features, so the gate can learn a rate of switching rather than a point condition. A rate_target loss pulls the expected switch rate toward a small target (8%); an l0_penalty mode is available for true sparsity.

4.2 The menu: a small space of “frames of mind”

When the state does change, what does it change to? We keep a small, fixed menu of “moves”, built from two knobs: what kind of thing am I doing (planning, explaining, checking…) and how hard am I thinking (a quick pass, a careful one). Mixing the two gives a grid of possibilities. We let the model also add a small personal twist to whichever option it picks — a bit of nuance — so it is never stuck with a rigid label.

A learned macro codebook (intent) and depth codebook (how much computation) combine multiplicatively into a compositional anchor:

mc = normalize( m1i + m2j + Wfuse( m1i ⊙ m2j ) )

giving 6 × 4 = 24 unit-norm anchors. Each position builds a joint query ut from the context projection and — in the closed-loop variant — the previous state, fetches the top-k anchors, and generates k continuous “nuance” vectors. Each proposal is a local deviation around a discrete intent:

ut = RMSNorm( SiLU( hp + Wfb st−1 ) )  ·  ck = ak + ν · normalize( ûk )

4.3 Choosing a state — with a bias toward staying put

Among the menu options, the supervisor picks the one that fits best. But it also has a mild reluctance to jump, like inertia. A new frame of mind has to be clearly better than the current one before the model will switch to it, which keeps behaviour stable and stops the state from flapping around.

Candidates are ranked by an interpretable System 1 metric: a bilinear compatibility term, a learned scalar value, the anchor’s routing logit, minus an explicit quadratic jump cost that penalises moving far from the current state.

scorek = ( q⊤ck ) / √d + v(ck) + anchork − λsmooth ‖ ck − st−1 ‖²

The winner is selected with a straight-through Gumbel-softmax during training (argmax at eval), then mixed with the previous state by the gate. A Sinkhorn optimal-transport balance loss spreads traffic across the 24 anchors, an orthogonality or DPP diversity loss keeps proposals from collapsing, and a JEPA loss trains the predictor itself.

4.4 Steering: how a state changes the thinking

A state is only useful if it actually changes behaviour. So each state reaches into every layer through three small, independent levers: it retunes the layer’s normalisation, it subtly reshapes the attention (making some heads sharper or softer), and it adds a small, state-specific correction to the layer’s feed-forward maths. All three start switched off, so an untrained System 3 is exactly an ordinary transformer until it learns to use them.

  • AdaRMSNorm modulation. The refined state yields per-channel gain and bias, (1+g) ⊙ RMSNorm(h) + b. Zero-initialised, so the block begins as vanilla.
  • State-routed LoRA-SwiGLU. A low-rank perturbation of the feed-forward path, gated per-rank by SiLU(Wr s) — the state chooses how much of which low-rank direction to add. Also zero-initialised.
  • Per-head temperature & value gating. Each head’s query is scaled by softplus(τhead(s)) and the output gated by σ(Wv s).

Between layers the state is refined by an exact associative scan over the sequence (Kogge–Stone, O(log T)): a learned forget gate writes a small impulse into the state and the prefix scan accumulates it — a gated linear recurrence computed in parallel. The switch trace zeroes the gate at switch positions, so the scan respects the event boundaries the router found.

Inside one state-coupled block h_t hidden s_t state Inter-layer associative scan Kogge–Stone prefix scan · O(log T) a = σ(W_f[h;s])·(1−g_t)·valid b = (1−a)·SiLU(W_i h) s' = RMSNorm( s + 0.2 · scan(a,b) ) → refined state s' passed to layer ℓ+1 AdaRMSNorm modulation (1 + g_i) ⊙ RMSNorm(h) + b_i (g_i, b_i) = chunk( W_s · s' ) State-steered attention (GQA) q ← q · softplus( τ_head(s') ) out ← out · σ( W_v · s' ) State-routed LoRA-SwiGLU SwiGLU(x) + LoRA(x) ⊙ σ( W_r · s' ) rank 16 · zero-init (identity at step 0) h' residual h s'
Figure 3 Inside one coupled block. The refined state s' (from the associative scan) drives three steering mechanisms: AdaRMSNorm modulation of the normalised hidden state, a per-head attention temperature and value gate, and a state-routed low-rank feed-forward perturbation. All three are zero-initialised, so training begins from an exact vanilla transformer and opts in to steering.

4.5 What training is asked to do

The model is trained on two goals at once. The obvious one: predict the next word well. The subtle ones: keep the states balanced (don’t put everything in one bucket), keep the candidate proposals varied, train the predictor to be a good predictor, and switch neither too often nor too rarely. Each goal is a separate, weighted term — and each can be turned off.

L = LNTP + wbalLsinkhorn + wdivLdpp + wjepaLjepa + wdwellLdwell

The JEPA term uses the same unit-RMS MSE as the gate (so the predictor is trained on exactly the quantity the gate acts on), the balance term is a Sinkhorn optimal-transport assignment over switched positions, the diversity term is a log-determinant (DPP) volume objective on the proposal Gram matrix, and the dwell term pulls the expected open rate toward the target switch rate.

5 Experimental setup

This is intentionally a small, honest test. We trained a modest 53-million parameter model from scratch on two small, well-understood datasets: short children’s stories (which tests fluent language) and grade-school maths word problems (which tests multi-step thinking). Small enough to run on limited hardware, real enough to see whether the idea helps at all.

Both datasets — TinyStories and TinyGSM8k — are tokenised into a single flat uint16 stream; the tail 1% is held out for validation. The full configuration of the reported run is below.

Table 1. Model and optimisation configuration of the reported run.
ComponentValue
Parameters53.0 M (tied embedding / LM head)
Breadth & depthd_model=512, n_layers=8 (1 stem + 7 steered)
Attentionn_heads=8, n_kv_heads=2 (GQA), RoPE θ=10⁴
Stated_state=128, 6 intents × 4 depth modes, k=4 proposals
SteeringLoRA rank 16 · AdaRMSNorm · per-head temperature
Sequence / batch256 × 192 = 49,152 tokens/step
OptimiserAdamW, lr 6e-4, β=(0.9, 0.95), weight-decay 0.1, grad-clip 1.0
Schedule200-step linear warmup → cosine decay
Precisionbf16 autocast (CUDA), TF32 matmuls
Checkpointingauto-resume · best-val restore · early-stop patience 5
A small but consequential detail

nn.Embedding initialises at N(0,1) and the LM head is tied to it, so an untrained model starts at ~100 nats of loss and wastes warmup. We rescale the shared embedding to the config’s initializer_range so training begins near ln(vocab) ≈ 10.8 nats — the random-guessing line in Figure 4.

6 Results

Two questions matter. Did it learn, and is the state really doing anything? The first is easy to show with a learning curve. The second is the interesting one: a state can look meaningful in a picture while the rest of the model quietly ignores it. So we ran a direct test — delete or scramble the state, and see whether the model gets worse.

6.1 Did it learn?

Training and validation loss curves
Figure 4 Held-out convergence on TinyStories + TinyGSM8k. Best validation loss 2.004 nats (perplexity 7.4) at step 450, from a random-guessing baseline of 10.82 nats (perplexity 50,257). The red validation curve is still descending — this run is compute-limited, not capacity-saturated, the honest reading of a small-scale result.

6.2 Is the state a driver, or just decoration?

This is the test that keeps us honest. We take the trained model and run it three extra ways without any retraining: normally; with the state wiped to zero; and with the state shuffled so it no longer matches the text. If the state is doing real work, wiping or shuffling it should make predictions worse. It does — on both counts.

The counterfactual runs below intervene only on the forward pass. “Scrambled” permutes the state across batch and time, which preserves its statistics but destroys its correspondence to the input — a strict test of specificity.

Table 2. Counterfactual intervention on the latent state (step 450, 15 validation batches).
ConditionHeld-out loss (nats)Δ vs. normalReading
Normal eval (deterministic gate)2.0072—reference
Calibrated stochastic gate2.0082+0.0010gate acts on a real distribution
Scrambled state (permuted b × t)2.0102+0.0030state is specific, not noise
Zeroed state (st = 0)2.0114+0.0042state is load-bearing
Counterfactual and mechanistic audit
Figure 5 Driver-vs-passenger counterfactual audit at step 450 (eval loss 2.0072 nats, switch rate 5.7%). Left: zeroing the state costs +0.0042 nats and permuting it costs +0.0030 nats — ablating the state hurts. Centre: the AdaRMSNorm modulation magnitude jumps ~14× at the second steered layer and rises with depth, while the LoRA-to-base feed-forward ratio stays small (~1.1%). Right: Sinkhorn balancing keeps 4.6 of 6 intents effectively active.

6.3 What the state space looks like

A quick look inside the menu. The 24 possible states are not all equally spaced — some are naturally closer to each other, and we can see that with a similarity map. We can also see which states the model actually reaches for while reading real text.

Compositional state geometry and utilisation heatmap
Figure 6 The state space is well-spread but not orthogonal. Left: the 24×24 pairwise cosine similarity of the anchors has mean |cos| = 0.30 with a clear block structure — anchors sharing an intent cluster together, exactly the intended geometry of a compositional codebook. Right: routing share by (intent × depth); the model concentrates on a few high-traffic cells (Plan×Medium at 23.4%) rather than spreading uniformly, with Sinkhorn balance preventing full collapse.

6.4 Watching the state during generation

The clearest picture of the idea is a timeline. As the model writes, its surprise jiggles on nearly every word — it is always sensing. But its actual frame of mind barely moves: it stays in the same state for long stretches and changes only a handful of times. Fast sensing, slow deciding.

Router state and surprise trace during generation
Figure 7 A state and surprise trace over 70 generated tokens. The macro state holds (a single Plan span) while the surprise signal fluctuates; dashed verticals mark the four Hard-Concrete switch events. The point is the contrast in cadence: surprise moves every token, but the state changes only four times in seventy steps — the separation of timescales the architecture is built around.
Table 3. Headline numbers of the reported run (step 450).
MetricValueNotes
Best validation loss2.004 natsperplexity 7.4
Random-guessing baseline10.82 natsperplexity 50,257
Eval loss (audit pass)2.0072 natsdeterministic routing
Switch rate5.7 %8 % target, event-driven
Effective macro states4.6 / 6entropy-based
State-removed penalty+0.0042 natszeroed state

7 Ablations — one switch at a time

An idea with many parts is hard to evaluate all at once. So every mechanism in System 3 is a separate on/off switch. You can start from a bare-bones version that has none of the fancy parts, then turn on exactly one thing and see what it changes. That turns “is System 3 good?” into a series of small, answerable questions.

The rung-0 baseline uses open-loop routing, flat states, a plain softmax gate, Switch-MoE balancing, pairwise orthogonality, and FiLM-only steering. Each switch below is a validated field in a frozen config dataclass, so changing one cannot silently change another.

Table 4. Ablation switches in System3Config and what each controls.
SwitchOptionsMechanism
state_modediscrete · continuous · hybridanchor-only, nuance-only, or anchor+nuance proposals
closed_loop_proposalstrue · falsecondition proposals on st−1 or not
use_surprise_gatetrue · falsegate sees (surprise, dwell) or only (ht, st−1)
gate_typehard_concrete · softmaxstretched-L0 gate vs. 2-way Gumbel-softmax
balance_modenone · switch · sinkhornanchor traffic balancing (OT assignment vs. Switch-MoE)
diversity_modenone · orthogonality · dppproposal de-collapse objective
dwell_modenone · rate_target · l0_penaltyswitch-rate regularisation vs. true L0 sparsity
use_state_scantrue · falseinter-layer parallel associative state refinement
use_lora_swiglutrue · falsedynamic rank-r state-routed FFN perturbation
use_head_temp_steeringtrue · falsestate-modulated per-head attention temperature
surprise_targetembedding · hiddenpredictive-coding target for the switch gate
Reproducible by construction

minimal_baseline() returns the rung-0 config and with_ablation(**changes) is a pure, immutable toggle — so an experiment is a one-line diff, not a code rewrite.

8 Discussion & limitations

We would rather undersell than overclaim. This is an early, small-scale result. The idea works in the sense that the state is genuinely used, but at this size the benefit is modest and there is a lot of room to scale.

What we believe generalises is the shape of the idea: a persistent, event-driven latent state that steers rather than merely selects, with a built-in falsification test. Natural next steps: scale width and tokens until the driver delta is unmistakable; probe the codebook with causal, per-anchor interventions; and give the router a predictive-coding objective trained at a longer horizon than one token.

Honest verdict of the built-in audit

At this checkpoint the model is a genuine driver, but an early one: the steering pathways are awake and rising with depth, yet the LoRA path contributes only ~1% of the feed-forward signal. The substrate works; the amplitude is a matter of scale.

9 Conclusion

System 3 shows that a System 1 predictive-coding router can be embedded inside an ordinary autoregressive transformer, trained end-to-end with it, and — most importantly — that its contribution can be measured and falsified rather than asserted. The architecture is fully switchable, the audit is one command, and the result is a small model whose latent state demonstrably carries information the backbone uses. We release the code, the audit, and this report so the idea can be scaled, ablated, and contested.

10 Reproduce

Everything below runs from the repository root.

# 1. install
pip install -r requirements.txt
pip install -e ".[dev]"

# 2. train (auto-resumes from checkpoints/latest.pt)
python train.py --data tokens.uint16 --steps-per-run 200

# 3. plot the training curves from the saved checkpoint
python plot_history.py --ckpt-dir checkpoints --save curves.png

# 4. run the driver-vs-passenger audit + render Figure 5
python audit.py --data tokens.uint16 --save audit.png

# 5. tests
python -m pytest -q

The token shard is a flat uint16 array produced by your own tokenizer prep step; the tail val_fraction of the stream is held out automatically for validation.

11 Citation

If you build on System 3, please cite the project:

@misc{tdizhere2026system3,
  title  = {System 3: A Fast System 1 Router that Steers a
            Slow System 2 Transformer},
  author = {tdizhere},
  year   = {2026}
}

  References

  1. Kahneman, D. (2011). Thinking, Fast and Slow. Farrar, Straus and Giroux.
  2. Rao, R. P. N. & Ballard, D. H. (1999). Predictive coding in the visual cortex. Nature Neuroscience, 2(1), 79–87.
  3. LeCun, Y. (2022). A Path Towards Autonomous Machine Intelligence. OpenReview.
  4. Assran, M., et al. (2023). Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture (I-JEPA). CVPR.
  5. Shazeer, N., et al. (2017). Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer. ICLR.
  6. Fedus, W., Zoph, B., Shazeer, N. (2022). Switch Transformers. JMLR.
  7. Louizos, C., Welling, M., Kingma, D. P. (2018). Learning Sparse Neural Networks through L0 Regularization. ICLR.
  8. Jang, E., Gu, S., Poole, B. (2017). Categorical Reparameterization with Gumbel-Softmax. ICLR.
  9. Maddison, C. J., Mnih, A., Teh, Y. W. (2017). The Concrete Distribution. ICLR.
  10. Pérez, E., Strub, F., de Vries, H., Dumoulin, V., Courville, A. (2018). FiLM: Visual Reasoning with a General Conditioning Layer. AAAI.
  11. Peebles, W. & Xie, S. (2023). Scalable Diffusion Models with Transformers (adaLN-Zero). ICCV.
  12. Hu, E., et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR.
  13. Gu, A. & Dao, T. (2024). Mamba: Linear-Time Sequence Modeling with Selective State Spaces. COLM.
  14. Rabiner, L. R. (1989). A Tutorial on Hidden Markov Models. Proc. IEEE.
  15. Cuturi, M. (2013). Sinkhorn Distances: Lightspeed Computation of Optimal Transport. NeurIPS.
  16. Kulesza, A. & Taskar, B. (2012). Determinantal Point Processes for Machine Learning. Foundations and Trends in ML.
  17. Blelloch, G. E. (1990). Prefix Sums and Their Applications. CMU Technical Report.
  18. Ainslie, J., et al. (2023). GQA: Training Generalized Multi-Query Transformer Models. EMNLP.
  19. Su, J., et al. (2021). RoFormer: Enhanced Transformer with Rotary Position Embedding. arXiv:2104.09864.
  20. Shazeer, N. (2020). GLU Variants Improve Transformer. arXiv:2002.05202.
  21. Zhang, B. & Sennrich, R. (2019). Root Mean Square Layer Normalization. NeurIPS.
  22. Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.
  23. Eldan, R. & Li, Y. (2023). TinyStories. arXiv:2305.07759.
  24. Cobbe, K., et al. (2021). Training Verifiers to Solve Math Word Problems (GSM8K). arXiv:2110.14168.