Open source · Rust host · CUDA kernels · speaks vLLM's API

Inference at the speed of the silicon.

FastLLM is an LLM serving engine with a compiled, memory-safe Rust host and GPU kernels generated for your model and your accelerator. Point your vLLM clients at it and get more tokens per second, a lower time to first token and no Python in the hot path.

race · equal time Qwen3-0.6B · batch 1 · A100
vLLM
1.00×
fastllm
1.36×
each block = one tokenlonger bar = faster →
Both engines decode for the same length of time. vLLM spends each step on many small kernel launches, each with its own ramp-up and gap. FastLLM runs one fused kernel tuned for this GPU, so it decodes 1.36× as many tokens. Step times measured with Nsight Systems on both engines.
2×+
faster on the CPU
5.3× less host CPU per decode step: 0.8 ms against vLLM's 4.21 ms · Qwen3-1.7B, c256, H100
1.5×
served throughput
1.53× vLLM · Qwen3-1.7B, 128 in / 128 out, concurrency 128, H100 NVL
1.36×
faster GPU decode step
fused decode kernel vs vLLM · Qwen3-0.6B, batch 1, A100 · nsys against nsys
1000×
cheaper per-request host work
1.2 µs per request per step, against 2.1 ms + 17 µs in vLLM's Python scheduler

01 Built from the metal up

Secure by construction

The scheduler, KV-cache pool, request I/O and step loop are compiled Rust. That rules out whole classes of bugs (buffer overflows, use-after-free, data races) by construction, and it means no interpreter or pickle loading in the serving path. One static binary with a small attack surface.

Kernels made for your chip

Generic kernels leave performance on the table. FastLLM searches kernel configurations for the exact model shapes and accelerator you run, gates every candidate on correctness and installs the winners as a kernel table that the engine loads at startup.

Drop-in for vLLM

FastLLM speaks vLLM's wire protocol, so the OpenAI-compatible clients, routers and benchmarks you already run keep working. Change one URL and compare the two engines on your own traffic.

No CPU wall

The host does about a thousand times less work per request than a Python scheduler, so the GPU never waits for it. The gap widens on the fastest GPUs: on H100 and B200 a Python host becomes the bottleneck first.

02 Automatic kernel creation

Every model × accelerator pair gets its own kernels.

Most engines ship one set of kernels and hope it fits. FastLLM treats tuning as a search problem. Give it a model and a GPU, and the optimizer explores tile shapes, split strategies, thread counts and fusion boundaries, discards any candidate that disagrees with the reference output, measures the survivors under the profiler and writes the fastest into the engine's kernel table.

  1. Describemodel shapes, dtype, KV layout, target device
  2. Searcha space of kernel templates and knobs
  3. Gatebit-for-bit and tolerance checks against a reference
  4. Measureprofiler timings, not wall-clock guesses
  5. Installa per-device kernel table, loaded at startup

Next: a learned model of the accelerator that predicts which kernel wins before it is measured, and then writes new kernels outright.

fast_optimizer · tune

  

03 Fast on the workloads that matter

interactive

Chat

Users feel time to first token and the gap between tokens. A host that schedules in microseconds and a decode step with fewer launches show up directly as a snappier stream at every concurrency.

agentic

Agents & tools

Agents resend long, shared prefixes and fire many short calls in a loop. Prefix caching reuses the shared KV-cache blocks across those calls, and the cheap host keeps hundreds of concurrent tool loops moving without stalling the GPU.

throughput

Batch, evals & RL rollouts

Offline generation for evaluation, data pipelines and the rollout phase of RL training runs at high concurrency, which is exactly where the step loop and kernel tuning pay off most.

04 Measured, with the regime attached

Every number below says which model, shape, concurrency and device it came from. Kernel times are Nsight Systems on both engines. Ratios are vLLM time ÷ FastLLM time, so higher is better.

Served throughput · Qwen3-1.7B · c128 · H100 NVL
1.53×
Served throughput · Qwen3-1.7B · c256 · H100 NVL
1.38×
Decode step · Qwen3-0.6B · batch 1 · A100
1.36×
Decode step, FP8 weights · Qwen3-1.7B · batch 1 · A100
1.28×
Decode step · Qwen3-1.7B · batch 1 · 128 tokens · A100
1.21×
Decode step · Qwen3-4B · batch 1 · A100
1.11×
vLLM (same GPU, same client)
1.00×

The H100 NVL served-throughput runs were on a confidential-computing host, which makes device-to-host copies blocking and magnifies host overhead for both engines. At long context (16k–32k tokens) both engines stream the KV cache at 85–90% of peak bandwidth, and the decode step is at parity. Full methodology and raw data live in the repository.

Swap one URL.
Keep the speed.

Run FastLLM next to your vLLM deployment, send it the same traffic and compare the results.