Research

I study what makes open models cheaper and faster to run and easier to adapt: architecture retrofits, fine-tuning, KV cache placement, speculative decoding, quantization and MoE pruning. Each study states its question, protocol, results, failed arms and limits.

Updated

What "working paper" means hereThe question and protocol are stable enough to inspect. It does not mean peer review or a venue.

Running now

Two studies at tiyuvta. Negative-eigenvalue gates is running and its numbers will move. Layby is released.

Running Since 4B and 9B record 27B plan 27B run log

Negative-eigenvalue gates for hybrid models

Qwen3.5 and Qwen3.8 are hybrids: the 27B has 48 Gated DeltaNet layers and 16 attention layers. A Gated DeltaNet update scales the state along the key direction by 1 − β, and with β limited to (0, 1) that factor can shrink a direction but never flip it. State tracking such as parity needs the flip. Widening β to (0, 2) allows negative eigenvalues. The retrofit adds that range to a pretrained model through a zero-initialized gate, so at step zero the model is bit-identical to the original, and trains it with a LoRA.

4B, tier-1 state tracking at 4x length, over LoRA alone (3 seeds)
+48.3 pt
9B, same tasks (3 seeds)
+43 pt
Qwen3.8-27B, mostly parity (1 seed)
+16.1 pt
on-call agent probe, LoRA arm, thinking off
65.7→83.1%

At 4B the confidence interval is 38.4 to 54.1 points on the tier-1 tasks (parity, swap, codeswap). On the 27B the first stage showed the mechanism but no workload gain: the two arms scored 93.2 and 93.6 on the session benchmark, both up from 69.8 for the untouched model, so the second stage did not run.

The LoRA carried forward. On the on-call agent probe it lifted accuracy from 65.7% to 83.1% with thinking off, at 3.9k tokens a task. With thinking on it matched the untouched model with 27.7k fewer reasoning tokens a task. The current run trains both arms on thinking-on data at 27B and measures accuracy and reasoning tokens per task.

The 27B tier-1 number is one seed. Whether the gate pays on real agent work at 27B is the open question this run answers.

Released Since Code and benchmark Model

Layby: where an idle session's KV cache should wait

When an agent or chat session goes idle, the engine has to decide where its KV cache waits: GPU memory, CPU memory, disk, or nowhere, to be recomputed later. Layby makes that call per session. Layby-Dwell, a 421M-parameter encoder fine-tuned from Laya, reads what the server saw at the end of a response and returns a calibrated curve of the time to the next request. A cost rule turns the curve into one of four placements. Every term is a probability from the curve times a cost the engine measures on itself while it runs. There are no fitted constants.

p95 time to first token on resumed turns, against an LRU CPU tier, Qwen3-8B, slow disk
0.59x
p95 against the better of two LMCache settings, same runs
0.49x
p95 against an LRU CPU tier, GLM 5.3 Flash, heavy load, p99 held at the baseline
0.79x

Measured on vLLM 0.31 on Nebius RTX PRO 6000 nodes with a network disk read without the page cache, three repeats for Qwen3-8B (median latency unchanged at 1.01x) and two 4-GPU engines on one 8-GPU node for GLM 5.3 Flash at heavy load (at half load it ties the LRU tier). On that disk, writing every session to disk is worse than no disk at all: 1.61x and 1.35x at p95. A simulator registered its prediction for a shared disk before the disk arms ran; the first node's GLM ratios landed within 0.13 of it. On ReturnBench, an open benchmark of 33 settings built from public traces, Layby is at 0.66x of the LRU tier (geometric mean) and never worse than 1.04x in any setting.

What did not work: on A100 boxes whose disk tier was really the page cache, writing everything was as good or better with the first adapter (0.57x against Layby's 0.69x on the private agent replay; 0.15x against 0.16x on the public one). With the fixed adapter, on two of three boxes Layby tied writing everything (0.89x of it at p95, 0.64x of the LRU tier); on a slower box with a 0.54 GB/s disk it lost (13.5 s against 4.5 s at p95). The cause is not identified yet. The rule chose about the same mix as on the fast boxes (no disk copy for 613 to 616 of 653 turns on every box), and CPU memory still held 0.99 of idle KV at 300 s, so eviction does not explain the loss. It will be rerun with full telemetry on a host of the same class. A pre-emptive return-time guard, write-back on eviction and a forward-looking wait cap all failed their bar and are reported as negative results. Several engine-integration bugs made a correct rule lose until fixed; each fix ships with a test that fails before it.

Paper on arXiv to follow. The fixed-adapter A100 rerun is one run per arm on each of three boxes. A full re-evaluation on stable hosts has started, beginning with checks that need no GPU.

Working papers

Each paper carries its version and status. A concluded paper keeps its failed arms visible.

Working paper 1ConcludedQwen3.5-9B and Qwen3.6-27B

Small-vocabulary MTP heads for memory-bound speculative decoding

Trim the draft head's vocabulary to the model's own 32k most used tokens, quantize it to NVFP4, and keep full-vocabulary verification. No training, and the output distribution stays exact. Pruned, low-rank and distilled heads lost 10 to 19 acceptance points on shifted text; precision cuts lost at most 1.9.

end-to-end speedup over plain decoding
1.8x–2.7x
draft head at 9B, no training
212 MB
acceptance lost by function cuts under shift
10–19 pt

Working paper 2Artifact publishedQwen3-30B-A3B and Hy3

Prune, heal, quantize: composing expert pruning with low-bit MoE deployment

Rank experts by router-weighted activation, remove half, heal the surviving function, then quantize. On Qwen3-30B-A3B the result finished 0.012 ARC below the unpruned baseline, with better perplexity. On Hy3, a public community mask failed the screening gate.

routed experts after pruning
128→64
ARC after NVFP4, against 0.522 baseline
0.510
Hy3 retention at a 100 GB cap
83.5%

Results

Every claim I tested in the concluded work, with its verdict, the number behind it and a link to the evidence.

  1. Supported
    Placing idle KV cache by a predicted return time and measured costs beats an LRU CPU tier and write-everything on a slow disk.

    Qwen3-8B in vLLM 0.31 on Nebius RTX PRO 6000 VMs, network disk without page cache, public replay of 916 turns, three repeats.

    0.59x p95
  2. Supported
    A trimmed NVFP4 draft head speeds up decoding without training.

    Qwen3.5-9B and Qwen3.6-27B in memra on one RTX PRO 6000; 80-prompt and 20-prompt suites, greedy and three sampled seeds.

    1.8x to 2.7x
  3. Refuted
    A distilled compact head holds up off-distribution as well as the trimmed one.

    Function cuts keep 97% on calibration-style text and lose 10 to 19 retention points under real shift. Precision cuts lose at most 1.9.

    10 to 19 pt lost
  4. Refuted
    A public REAP50 mask is a usable starting point for Hy3.

    The community mask collapsed at the screening gate. Layer-balanced pruning with private calibration held 83.5% retention at the 100 GB cap.

    0.239 vs 0.727
  5. Supported
    A smaller MTP head can learn useful drafting at a fraction of the compute.

    Chain-distilled StudentSV reached 85.5% of the teacher's chain acceptance at about an eighth of the draft compute. Slots 1 to 3 beat the teacher.

    0.507 vs 0.593
  6. Supported
    Draft heads should train on the model's own generations.

    Own-output training reached 0.548 held-out acceptance against 0.376 for a generic corpus, at a third of the steps.

    0.548 vs 0.376
  7. Refuted
    NVFP4 compression alone degrades the co-trained MTP head.

    Forced replay, generation-distribution replay and seeded sampled runs: two clean quantization arms showed no acceptance loss against BF16.

    no loss vs BF16
  8. Supported
    Imatrix-aware scale search recovers NVFP4 quality.

    6.0% lower perplexity on Qwen3.5-9B, held on a 26B MoE and two corpora. Hadamard rotation made every tensor worse.

    −6.0% perplexity
  9. Open
    Surviving experts should get different precision budgets.

    Per-projection damage is measured across seven formats and feeds one allocator for precision and pruning. The generative evaluation decides.

    15,168 rows
  10. Refuted
    Block-routed SwiGLU improves composition at equal parameters.

    The Triton kernel costs under 1% block latency on H100. The capability test failed across five seeds.

    63.4% vs 66.1%
  11. Supported
    Looped, scaled layers beat a FLOPs-matched transformer when data is the limit.

    Layer-loop weight sharing with residual scaling, d=768, about 20 epochs over fixed tokens, 34% fewer parameters.

    3 of 3 seeds
  12. Mixed
    A memory layer grafted onto a 4B model keeps its published forgetting advantage.

    The graft is free at lr/10. The advantage over LoRA never cleared a confidence interval, and n=3 could not have resolved it.

    0 of 12 intervals

Result notes

Smaller studies, each with its evidence, decision and caveat.

Supported 3 of 3 seeds, recipe-lab on GitHub

Layer-loop weight sharing needs residual scaling, and then beats vanilla when data is the limit.

I combined two results that had not met: layer-loop weight sharing, shown with unscaled residuals, and looped-residual scaling theory, analyzed on model-level reuse. The correlated-accumulation problem is real and does not depend on the mixer. I showed it numerically and then in from-scratch pretraining: the gain from the ε=λ/(N√L) fix follows 0.0122·(N−1) with R²=0.993, and it pins the best learning rate at its N=1 value. Under fixed unique tokens (about 20 epochs) at d=768, the looped and scaled model beat the FLOPs-matched vanilla model on best validation loss on 3 of 3 seeds (−0.039±0.003) with 34% fewer parameters. It held in all three mixer families, seven paired runs with no sign flips, and the hybrid rounds isolated a rule: loop the state mixer, never the retriever.

4.63 val loss 4.65 4.67 4.69 vanilla, 123.7M looped, 81.2M seed 7: 4.6831 seed 13: 4.6837 seed 29: 4.6775 4.678 to 4.684 seed 7: 4.6438 seed 13: 4.6481 seed 29: 4.6352 4.635 to 4.648 filled: looped and scaled hollow: vanilla, FLOPs-matched
Best validation loss at d=768, data-constrained (about 20 epochs over fixed unique tokens), three seeds per arm. The looped model wins every seed pairing with 34% fewer parameters, and the seed spreads never overlap.

Evidence

Eleven pre-registered GPU rounds and five CPU numerical proofs. A no-single-seed rule forced one retraction of the campaign's own headline. The fresh-data crossover claim was refuted at every N in both mixer families.

Decision

The recipe holds where data, not compute, is the limit. The d≥1024 rung and the remaining hybrid seeds decide whether the gain grows with scale.

An MQAR probe bounded the mechanism: loops multiply what recurrent state holds. They do not replace attention recall.

Mixed Concluded mem-retrofit on GitHub

The memory-layer retrofit is free. Its forgetting advantage never reached significance.

I grafted a product-key memory layer onto a stock dense Qwen3-4B and ran five sequential update rounds against LoRA, a regime the published 0.5B single-shot retrofits never tested. The capability cost of the retrofit turned out to be the routing warmup's step size. At lr/10 the graft costs nothing on arithmetic and format, comes out slightly ahead on code and trivia, and still reaches full acquisition by round three. The forgetting advantage failed to appear in 12 of 12 probe-arm confidence intervals, including a reference-faithful reproduction of Meta's parameterization.

0% cost 15% 30% arithmetic code format triviaqa warmup at lr 1e-2: +3.1% warmup at lr/10: 0.0% +3.1% warmup at lr 1e-2: +13.2% warmup at lr/10: −1.9% +13.2% warmup at lr 1e-2: +6.7% warmup at lr/10: 0.0% +6.7% warmup at lr 1e-2: +34.0% warmup at lr/10: −8.3% +34.0% filled: warmup at lr/10 hollow: warmup at lr 1e-2
Capability cost of the routing warmup, by probe, mean of 3 seeds. The whole retrofit tax was the warmup's step size: at lr/10 every probe sits at or below zero cost, and acquisition still reaches 1.000 by round three.

Evidence

Three configurations, three seeds each, four retention probes, per-arm learning-rate calibration and acquisition gating. Four of my own earlier verdicts were overturned along the way (context copying, a dense update in sparse clothing, an unseeded RNG). The superseded runs stay in the repo.

Decision

Power analysis says n=3 could never resolve the claim: the required n runs from 2 to 621 per probe. A run with about 30 seeds per arm, and the 3x lower code variance under the reference configuration, can change the status.

One model, one graft layer, synthetic facts. The five-round regime showed nearly the full effect by round one.

Refuted Closed block-routed-swiglu on GitHub

Block-routed SwiGLU: the kernel is nearly free, the capability is not there.

I prototyped input-dependent re-pairing of gate and up channels inside a standard SwiGLU MLP, adding routing without touching the two large matrix multiplications. The Triton kernel passed its cost check on H100: 0.73 to 0.83% more block latency, safe under CUDA graphs, no extra peak memory. Seeing that took interleaved measurement, because the naive benchmark inflated the overhead 5 to 10x. The equal-parameter capability test then refuted the idea: 63.4% against the baseline's 66.1% on held-out factor compositions across five seeds.

Evidence

Correctness matched the PyTorch reference. Both arms sat at chance on the random-rule control, so the test measured composition, not memorization.

Decision

Cheap routing machinery is real. This routing rule did not earn a language-model run. The kernel and the negative result are both public.

Refuted Closed Lab note on tiyuvta.ai

NVFP4 compression alone did not degrade the co-trained MTP head.

The hypothesis predicted hidden-state shift: quantize the trunk, keep the co-trained MTP head more precise, and draft agreement should fall, especially deeper into the context. After removing the confounds, it did not.

Evidence

Forced replay to 64k tokens, generation-distribution replay, and seeded sampled live runs across two clean safetensors quantization recipes.

Decision

Close the compression-only healing premise. Keep live-chain drift as a separate question. Move the project to compact heads and harsher quantization.

The first result looked like damage and was a measurement trap. The lab note walks through it.

Other studies with public code

Each has a written protocol and receipts in its repository.

  • fixed-compute-frontier

    A pre-registered kill ledger: about 84 theory lanes hunting a 20% or better capability-per-cost win, each behind a frozen falsification test and an independent audit before any GPU spend. Nearly all closed as negative results with receipts. Two bounded positives: a raw-evidence oracle put a 43-point ceiling on compiled context records, and an analytic active-acquisition result cut probe cost 7.6x.

    MethodLedger and audits

  • gemma-expert-atlas

    Traced 3,840 experts of a 26B MoE across 55 routing calibrations on my own agent workload, then ran a staged probe ladder. Globally dead experts were zero-masked at exactly zero quality change, a 46-expert eviction mask gained 0.048 with reasoning off, and per-category checks rejected broad trims that aggregate scores would have passed.

    MoE surgeryGemma 4 26B

  • moe-lab

    How should experts form during training so they can be pruned later? Three router-balancing regimes (Switch-style auxiliary loss, DeepSeek-V3 auxiliary-free, auxiliary loss plus output decorrelation) on from-scratch models, with REAP-style saliency against a random-prune control. Kill criteria were written before the runs.

    Training dynamicsPre-registered

  • sxc

    Retrieval over a personal corpus with a trained judge. ColBERTv2 tied the SPLADE and ColBERT hybrid at 22x lower latency and became the default. A 9B LoRA judge reached 0.937 balanced accuracy against the prompted 27B teacher's 0.823. Question-style synthetic training data beat seed-style at every scale tested.

    RetrievalColBERTv2, LoRA judge

  • assumption-excavator

    A loop that makes an LLM agent attack a hard problem by classifying every barrier as physical law or shared assumption, with verdicts held back until the end. Three trials named two failure modes: mode collapse inside a novelty loop, and fabrication laundered through Python. The third trial caught and corrected its own fabrications mid-run. Full transcripts ship with it.

    Agent methodTranscripts included

What every study discloses

A result is easier to trust when it is obvious what could still overturn it.

  1. Question

    A falsifiable claim, a target regime, and the reason the answer changes what gets built.

  2. Protocol

    Matched models, prompts, seeds, context lengths, baselines, noise floor and success criteria, written before the headline.

  3. Artifact

    Code, configs, model provenance, logs, and the exact path from checkpoint to reported number.

  4. Decision

    Supported, refuted or still open, plus the failed arms and the next experiment that could change the status.

More measurements from the lab, with data tables, are on tiyuvta.ai/research.