Skip to content

openinfer

A from-scratch LLM inference engine in pure Rust + CUDA. OpenAI-compatible. Serves Qwen3 to Kimi-K2.

  • No Python at runtime — no PyTorch, no ONNX, no framework in the serving path.
  • Five model lines, one engine each — Qwen3 through Kimi-K2.
  • Up to 8-GPU expert parallelism for large MoE deployments.
  • OpenAI-compatible API — point any SDK at http://localhost:8000/v1.

See the getting started guide or the GitHub repository.

git clone https://github.com/openinfer-project/openinfer
cd openinfer
cargo run --release -- --model-path models/Qwen3-4B

Then send a request:

curl -s http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{"prompt": "The capital of France is", "max_tokens": 32}'

No PyTorch, no JIT, no runtime compilation. The whole stack — weight loading, paged KV cache, schedulers, kernels — is Rust + CUDA from scratch. Resident memory stays a fraction of vLLM’s at the same load.

Process RSS: openinfer vs vLLM

Process RSS · openinfer vs vLLM · Qwen3-4B BF16

3s warm start vs vLLM’s 32.7s — about 11×. No runtime compilation, no JIT warmup: once it’s built, what ships is stable and predictable.

Cold start: openinfer vs vLLM

Warm start · openinfer 3.0s vs vLLM 32.7s

Same vLLM bench-serve client, same Poisson arrivals, same seed on RTX 5090. At the saturation point openinfer pushes 6% higher throughput than vLLM 0.22.1.

Serving sweep vs vLLM on RTX 5090

Serving sweep · RTX 5090 · vs vLLM 0.22.1

Decode is captured as a CUDA graph with pre-allocated buffers, keeping per-token overhead low and decode latency flat across context lengths.

Warm prefix-cache-hit TTFT sweep

Warm prefix-cache TTFT · by input length

ModelArchitecture
Qwen3-4B / 8B / 32BFull attention, tensor parallel
Qwen3.5-4BHybrid: 24 linear + 8 full attention layers
DeepSeek-V4MoE + compressor + indexer, 8-GPU
DeepSeek-V2-LiteMoE + expert parallelism, 2-GPU
Kimi-K2MLA + MoE + Marlin INT4, 8-GPU expert parallelism