Sebastian HaasAI Security Engineer

Research

I investigate how AI systems fail and what it takes to make them reliable. Notes on adversarial evaluation, inference correctness, and the engineering behind local AI systems.

The gfx906 inference project

One system. Fourteen investigations.

The main series follows one independent engineering project: a llama.cpp fork and a Rust serving layer for AMD gfx906 GPUs. The investigations connect kernel performance, speculative decoding, state correctness, and concurrent serving. Limits exposed in one experiment often become the question for the next.

The reports cover different models, one- and two-GPU setups, and successive versions of the fork. Later measurements sometimes revise earlier explanations. The three inference papers develop findings from this work; the image-compression whitepaper is a separate project.

Project overview, contributions, and benchmark methods →

Additional measurements include 750 tokens/s aggregate serving and +84% Lightning decode at 32k. A separate Lightning DSpark experiment reached 163 tokens/s on short code. Each measures a different workload; configurations and evidence are listed on the project page.

How to read 55, 100, and 149.8 tokens/s

These headlines describe different experiments. Model, workload, and decoding method change between them.

Reported resultConfigurationWhat it establishes
55.3 tok/sAugust 2026Qwen3.8-27B-Uncensored Q4_0, DFlash2, single-stream code generation on two Radeon Pro VII cards.Up from 32.0 tok/s in that report's baseline. Exclusive remeasurement: median 55.2 over eight runs.
100 tok/s2–3 September 2026Qwen3.6-35B-A3B, Q4_0 / Router257, two Radeon Pro VII cards, decode without a drafter.Campaign DX moved the fork from 72 to 99 tok/s. The report's follow-up records 100 tok/s after campaign DZ the next evening.
149.8 tok/sOverview updated 4 September 2026Qwen3.6-35B-A3B, Q4_0 / Router257, DFlash, selected single-request code peak on two Radeon Pro VII cards.A peak from a gate sweep. The later selected profile reached about 145 tok/s on code; prose and story were slower than its base profile.

The 35B results do not measure the same workload as the 27B result. Single-stream generation, aggregate serving throughput, and kernel microbenchmarks are kept separate throughout the series.

Papers 04

Independent technical reports and a whitepaper. These publications have not been peer reviewed.

Case Studies 14

Fourteen reports from the gfx906 project, grouped by their main question. Dates reflect the investigation period or the report's stated as-of date; month-only dates are retained where no day is given.

Performance 07

Which part of inference is actually limiting throughput, and under which conditions does an optimization help?

Correctness 03

Does the system preserve the model's behavior, and do the tests exercise the state transitions that can fail?

Serving 04

How much of the kernel performance reaches the client, across real requests, model setups, and concurrent users?

Current research