Learn AI by Building

From your first dataset to production agents โ€” deep-dive series, hands-on notebooks, and experiments you can rerun yourself.

Paper of the Week

All Issues โ†’
Issue #3 ยท WeeklySep 9, 2026

Paper of the Week #3 โ€” Half the FLOPs Is Not Half the Time

One integer halves a fine-grained MoE's expert compute (arXiv 2609.04575) and its Table 5 replicates on one A100 to within a point. The paper never reports time, so I measured it: nothing in HF transformers, nothing at batch 1 in the vLLM you run today, 1.35x at batch 8. Plus the OLMoE control and the iso-cost harness control promised in issue #2.

Premium Series

Our Products

Courses and starter kits built from what we measure here

Starter Kits

View All โ†’

Practice notebooks, interview questions, and project solutions โ€” ready to download.

Browse Starter Kits

Latest Posts

View All โ†’
Jev in 10 Minutes: What a Fast Decision Model Is, and When It Is Worth Using

Jev in 10 Minutes: What a Fast Decision Model Is, and When It Is Worth Using

Jev answers a question with a probability for each option instead of writing text. What that is for, how open projects do the same thing, and what three rounds of measurement showed: with a handful of options a 421M model reached 86.6% in 23 ms, with 77 a small trained classifier on a CPU still led at 90%.

- Models & Algorithms
Read More
Open-Source Jev Alternatives, Measured: laya, openjev and NanoJev on Three Public Datasets

Open-Source Jev Alternatives, Measured: laya, openjev and NanoJev on Three Public Datasets

I ran laya, openjev and NanoJev on BANKING77 (77 intents), TREC (6 question types) and AG News on one A100. With six options, laya's 421M encoder reached 86.6% on TREC in 23 ms. With 77, the DiffusionGemma-based openjev led at 66.9%, and a logistic regression on a CPU beat everything at 90%.

- Models & Algorithms
Read More
DiffusionGemma on vLLM's Example Server: One Sentence of Context Took It From 54.5% to 31.8%

DiffusionGemma on vLLM's Example Server: One Sentence of Context Took It From 54.5% to 31.8%

I ran the example server from the merged vLLM pull request that turns DiffusionGemma into a decision model on 154 BANKING77 messages. It caps a question at 26 options, so I split the 77 intents into nine groups and read twice: 54.5% at 119 ms with one noise draw, 51.3% with the default draws. My transformers version of the same two-stage read scored 68.2%, and one added sentence describing the input dropped the server from 54.5% to 31.8%.

- Models & Algorithms
Read More
Qwen-Image-2.1 on One A100: What I Could Count, and What the OCR Got Wrong

Qwen-Image-2.1 on One A100: What I Could Count, and What the OCR Got Wrong

8.2 seconds for a 1024x1024 image at 20 steps, 56.5 GiB peak at 2048x2048, and thirty sign images I checked myself all carried the text I asked for โ€” while Tesseract found it in twelve. Editing is the weak half: four of eight mask-free instructions were followed, and the median image changed 84% of its pixels.

- Models & Algorithms
Read More
Same Model, Five Ways to Build the Input: Only Retrieval Moved It Significantly

Same Model, Five Ways to Build the Input: Only Retrieval Moved It Significantly

On BANKING77 with GPT-5.6 Terra held fixed, reordering labels, grouping them and changing reasoning effort each moved one or two items in both directions against the baseline, with no significant paired difference. Attaching five retrieved training examples scored 146 of 154, fixing 19 items and breaking none (exact McNemar p about 3.8e-6).

- Models & Algorithms
Read More
llama.cpp -ctk and -ctv: The Default CUDA Build Supports Four Values

llama.cpp -ctk and -ctv: The Default CUDA Build Supports Four Values

llama-bench accepts eight KV cache types and llama-server accepts nine, but the default CUDA build compiles FlashAttention kernels for only f16, bf16, q8_0 and q4_0, and only when K and V match. Every other setting has no kernel and prefills at 83-284 tokens per second against about 4,600. Measured on llama.cpp 69320fe on an A100.

- Models & Algorithms
Read More