I like machines close to the metal and results you can measure.

Avi Fenesh smiling at a table, holding a glass

I'm Avi Fenesh. I run tiyuvta, a research lab that helps companies choose, adapt and deploy open models on their own hardware or cloud account.

I also build in-memory data systems at AWS ElastiCache and maintain Valkey GLIDE. My work runs from CUDA kernels and inference engines to fine-tuning and agent tooling, and I publish the experiments that failed next to the ones that worked.

Where I work

From the tools people use down to the kernels underneath. Every item opens the work; dashed ones are running now.

  1. Agents

    Tools for agent-assisted development

  2. Deploy

    Open models on a company's own hardware or cloud

  3. Train

    Fine-tuning, retrofits and training recipes

  4. Compress

    Quantization, pruning and draft heads

  5. Serve

    Engines, KV cache and scheduling

  6. Data

    In-memory data systems and queues

  7. Metal

    GPU kernels and the operating system underneath

Running now

Two studies at the lab: one running, one just released.

Details

Scaling to 27BQwen3.5-4B, 9B and Qwen3.8-27B

Negative-eigenvalue gates for hybrid models

Qwen's hybrid models use Gated DeltaNet layers whose state updates can shrink a direction but never flip it, so they lose state-tracking tasks like parity past the training length. Widening the gate's range fixes that, and it retrofits onto a pretrained model with a zero-initialized gate and a LoRA. It works at 4B and 9B. The 27B run is training with thinking on now.

state tracking at 4x length, 4B, over LoRA alone
+48 pt
same at 9B
+43 pt
27B so far, one seed
+16 pt

ReleasedvLLM, SGLang, Qwen3-8B, GLM 5.3 Flash

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

An idle agent session's KV cache has to wait somewhere: GPU memory, CPU memory, disk, or nowhere and get recomputed. Layby predicts the time to the session's next request with an open 421M model and places the cache by costs the engine measures on itself, with no fitted constants. Code, model and benchmark are open.

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
0.49x
writing every session to disk, same runs
1.61x

Research

Studies on making large-model inference smaller and faster. Each one states the question, the protocol, the failed arms and the limits.

All research

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.

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

Claims I tested, with the verdict and the number behind it. Refuted claims stay on the list.

All results
  1. 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. Suite aggregates, greedy and three sampled seeds.

    1.8x to 2.7x
  2. 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
  3. 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
  4. 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
  5. Refuted
    A memory layer grafted onto a 4B model keeps its published forgetting advantage.

    The graft itself is free at lr/10. The advantage over LoRA never cleared a confidence interval.

    0 of 12 intervals
  6. 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

Projects

Software I build or maintain. Most of it is open source.

All projects
  • memra

    Inference engine in Rust and CUDA for Blackwell GPUs. The instrument behind my studies.

    AuthorRust, CUDA

  • Valkey GLIDE

    The official multi-language Valkey client, with a Rust core.

    MaintainerRust core, Python, Java, Node.js, Go

  • agnix

    Linter and language server for AI agent configuration: skills, hooks, MCP, memory files.

    AuthorRust

  • glide-mq

    Node.js queue on Valkey Streams, built on Valkey GLIDE. Budgets, streaming and pauses are part of the job model.

    AuthorTypeScript, Lua

  • parlar

    Voice mode for Claude Code and Codex. Speech recognition and synthesis run locally on CPU.

    AuthorRust

  • ferrings

    io_uring TCP transport for Node.js. 2.5x the throughput of Node's http module in the published benchmark.

    AuthorRust, TypeScript

  • FlowFabric

    Durable-execution engine for Valkey, Postgres and SQLite: lease-safe workers, waitpoints, budgets.

    AuthorRust

  • computer-use-linux

    Linux desktop control for agents over MCP: accessibility tree, GNOME Shell and Wayland portals.

    AuthorRust

Writing

Essays here and lab notes on the tiyuvta site.

All writing and talks
  1. I thought NVFP4 broke MTP

    The first result was a measurement trap. The clean comparison found no acceptance loss.

    tiyuvta.ai
  2. Masked MTP drafts

    Acceptance went down and tokens per second went up. Trimming the draft head released compute.

    tiyuvta.ai
  3. How AI workloads changed the queue I was already building

    Streaming, spend limits and human pauses moved into the queue instead of living in side systems.

    Essay
  4. Your AI agent configs are probably broken

    Skills, hooks, memory and MCP files fail silently. Why that layer needs a linter.

    Essay

About

I came to research through implementation: reproduce the baseline, find the assumption nobody checked, run the missing comparison, and let the result change the plan.

Before inference work I spent years on datastores, language clients, queues and developer tools. I still maintain Valkey GLIDE and build agent tooling under agent-sh.

More about me