A working notebook, not a blog

Large language models on hardware you own and can touch.

Field notes from building, breaking, and fixing local LLM setups: quantization, inference tuning, hardware that actually matters, and the honest benchmarks behind each claim. Written slow, tested twice, updated when something stops working. If you would rather have it set up than read about it, book a free 30-minute call.

lived
11 months
hardware
gpu Γ—8 Β· apple silicon Γ—2
entries
70 field notes
hype
off

Latest entries

All 70 posts β†’
  1. The Tag Was 128 Tokens Back: An Open Bug, and a Test Too Sharp to Trust

    Our engine's copy of a model cannot finish its own tool-call tags; another engine running the same prompt can. Here is everything we ruled out, the one test that 'failed' by 10% without finding anything, and the suspect our reference cannot see. Still open.

  2. We Sent a V4 Model a V3.1 Tool Prompt

    Our renderer wrote the previous generation's tool-call format for a model trained on a different one. The model copied the placeholder words from the instructions, or ended its turn with one token. The fix was to port the vendor's encoder step for step and test it byte for byte.

  3. Our Model Conversion Ran Five Times at Once

    A conversion driver without an `if __name__ == "__main__"` guard, a worker pool that starts with spawn, and every worker re-ran the whole conversion. Three more converter bugs from the same day, none of which the test fixture could reach.

  4. We Published a 36% Speedup and Withdrew It the Next Day

    A profile said a quarter of every decode pass was un-overlapped host work. An unprofiled control arm, which costs ninety seconds, said it was 1.6%. The 26% was the profiler's own synchronization.

  5. Every Sub-4-Bit Number We Had Was Uncalibrated

    Our calibrated quantizer had never once run on a mixture-of-experts model, because the dispatch guard looked at layer 0 and layer 0 is dense. The tell was a calibrated arm that tied its baseline to four decimal places.

  6. Your Headline tok/s Is a Short-Prompt Number

    118 tok/s at a 30-token prompt, 35.7 at 86,000. Decode halves for every 4Γ— of context and prefill halves past 20k β€” and on this engine there is no configuration lever for it, because every cache compressor drops you off the fast path.