8 posts

Field notes.

Notes on solutions architecture, LLM agent systems, and offensive security. Written in the open, mostly while the details are still fresh.

Articles

August 18, 2026· 5 min read

The DSpark Draft Model Is a Model Choice, Not a Switch

Swapping one DSpark drafter for another on the same target — same algorithm, same block size, every server flag held constant — took decode from 158.9 to 176.8 tok/s and grew the KV pool by 61%. The 4-bit drafter accepted more tokens than the 16-bit one, not fewer.

llm inferencespeculative decodingquantizationbenchmarkingsglang
August 17, 2026· 8 min read

The Model Card's Recommended Config Was 1.9x Slower Than No Config

NVIDIA's quick-start recipe for Nemotron 3.5 Lightning on a DGX Spark enables speculative decoding. On this box it costs half the throughput — 41 tok/s against 77.5 — because turning it on silently drops the engine off a fully-captured CUDA graph. The draft acceptance rate looked fine throughout.

llm inferencebenchmarkingvllmspeculative decodingmixture of expertsdgx spark
August 14, 2026· 16 min read

Qwen3.8-27B on a DGX Spark and an RTX 5090: Capacity Gets You In, Bandwidth Decides Everything Else

A DGX Spark ran Qwen3.8-27B at full precision and 4.6 tok/s. An RTX 5090 couldn't hold it above 4-bit and ran it at 54.6 tok/s — then at 159.1 once I found the three things my software stack was costing me. Includes a correction to my own analysis.

llm inferencequantizationbenchmarkingsglangspeculative decoding
August 8, 2026· 8 min read

Escha W2 on an RTX 5060 Ti: The Benchmarks Reproduced, The Tuning Advice Didn't

A 2-bit quantised 35B MoE runs at 126 tok/s on a 16 GB consumer GPU, within 1.5% of the published figure. The tuning recipe shipped alongside those numbers was worth 3% instead of 20%, and two of its knobs couldn't be set at all.

llm inferencequantizationbenchmarkingsglang
June 18, 2026· 5 min read

First Experiments With Serverless GPUs and the 128k Context I Was Advertising Was Really 16k Each

My first time serving a model on a rented per-second GPU instead of my own card. vLLM wouldn't load the GGUF file, the CUDA build had to link against stub libraries because image builds get no GPU attached, and the context flag I thought I understood was dividing my window across concurrent request slots.

llm inferencellama.cppgpuserverlessdeployment
June 12, 2026· 6 min read

MTP Doubled Local Throughput and Quietly Cost Me 64K of Context

Turning on multi-token prediction in llama.cpp took a 27B model from 58 to 136 tokens per second. The same upgrade that enabled it also broke my existing config by using more VRAM — the win and the regression shipped together.

llm inferencellama.cppbenchmarking
April 17, 2026· 9 min read

Vector RAG and Graph RAG Retrieved Almost Nothing in Common

Two retrieval pipelines over the same corpus, answered by the same model with the same prompt, overlapped on 1.8 of 12 retrieved documents — and failed in opposite, predictable ways.

llm agent systemsretrievalevaluation
March 5, 2026· 2 min read

Why This Blog Exists

Fifteen years of notes that lived in Slack DMs, call recaps, and scratch files — collected somewhere they can actually be found.

metasolutions architecture