Skip to main content
Version: 0.11

Benchmarks

This page collects measured performance figures for the Atelico AI Engine across LLM decode, prefix caching, GPU sharing, image generation, speech, and audio-to-face.

note

All figures are point-in-time and hardware-specific. They were measured on the GPUs named in each table, with the engine and model versions current as of late May 2026. Run-to-run variance on Apple Silicon is ±2–3% due to thermals, so deltas under ~5% should be read as ties. Numbers will change as the engine, drivers, and models evolve — treat them as a snapshot, not a guarantee.

Methodology

LLM throughput uses the industry-standard pure-decode protocol so every engine measures the same quantity:

  • Prompt: BOS-only (empty) prompt.
  • Generated tokens: 128.
  • Runs: median of 5 measured runs (3 on some larger models / secondary GPUs), after a warmup run.
  • Sampling: deterministic, greedy (temperature 0).
  • What's timed: decode-loop time only (forward passes plus sampling) — no prefill, no HTTP. Time-to-first-token (TTFT) and prefill rate are reported separately.

This is equivalent to llama-bench -p 0 -n 128 -r 5 and to MLX-LM --max-tokens 128 with an empty prompt. Atelico numbers come from the bench_minimal binary.

Unless a different format is noted next to the model name, all LLM numbers are GGUF Q4_K_M. Exceptions: Qwen3 0.6B is Q8_K_M, and the Bonsai models are 1-bit MLX. For every model, all engines were benchmarked on the same weights for an apples-to-apples comparison.

LLM Decode Throughput

Decode throughput and time-to-first-token for the Atelico AI Engine, measured per model and GPU. TTFT here is the per-request first-token latency reported by bench_minimal; a dash means the metric was not recorded for that run.

Apple Silicon · M1 Max (Metal)

ModelFormatDecode (tok/s)TTFT (ms)
LLaMA 3.2 1BGGUF Q4_K_M252.76.3
LLaMA 3.2 3BGGUF Q4_K_M116.813.4
LLaMA 3.1 8BGGUF Q4_K_M61.727.2
Qwen3 0.6BQ8_K_M249.86.9
Qwen3.5 0.8BGGUF Q4_K_M164.910.3
Qwen3.5 2BGGUF Q4_K_M119.012.8
Qwen3.5 4BGGUF Q4_K_M64.623.4
Qwen3.5 9BGGUF Q4_K_M48.031.3
Gemma4 E2BGGUF Q4_K_M90.416.8
Gemma4 26B-A4BGGUF Q4_K_M49.528.0
Nemotron-H 4BGGUF Q4_K_M79.417.5
Nemotron-3 Elastic 12BGGUF Q4_K_M59.2
SmolLM3 3BGGUF Q4_K_M97.015.2
Bonsai 1.7BMLX 1-bit245.77.0
Bonsai 8BMLX 1-bit86.415.7

NVIDIA · RTX 3090 (CUDA)

ModelFormatDecode (tok/s)TTFT (ms)
LLaMA 3.2 1BGGUF Q4_K_M613.85.8
LLaMA 3.2 3BGGUF Q4_K_M281.312.6
LLaMA 3.1 8BGGUF Q4_K_M160.322.1
Qwen3 0.6BQ8_K_M496.67.9
Qwen3.5 0.8BGGUF Q4_K_M435.09.6
Qwen3.5 2BGGUF Q4_K_M322.611.6
Qwen3.5 4BGGUF Q4_K_M187.219.6
Qwen3.5 9BGGUF Q4_K_M123.727.7
Gemma4 E2BGGUF Q4_K_M263.216.2
Gemma4 26B-A4BGGUF Q4_K_M132.49.9
Nemotron-H 4BGGUF Q4_K_M225.05.1
Nemotron-3 Elastic 12BGGUF Q4_K_M219.7
SmolLM3 3BGGUF Q4_K_M266.213.6
Bonsai 1.7BMLX 1-bit202.215.3
Bonsai 8BMLX 1-bit60.749.3

NVIDIA · RTX 4090 (CUDA)

These rows were measured with a 3-run protocol and do not include TTFT.

ModelFormatDecode (tok/s)
LLaMA 3.2 1BGGUF Q4_K_M391.1
LLaMA 3.2 3BGGUF Q4_K_M192.9
LLaMA 3.1 8BGGUF Q4_K_M119.4
Qwen3 0.6BQ8_K_M358.6
Qwen3.5 0.8BGGUF Q4_K_M250.5
Qwen3.5 2BGGUF Q4_K_M223.8
Qwen3.5 4BGGUF Q4_K_M151.3
Qwen3.5 9BGGUF Q4_K_M111.4
Gemma4 E2BGGUF Q4_K_M259.8
Gemma4 26B-A4BGGUF Q4_K_M100.5
Nemotron-H 4BGGUF Q4_K_M224.1
SmolLM3 3BGGUF Q4_K_M218.6
Bonsai 1.7BMLX 1-bit220.1

NVIDIA · RTX 5080 (CUDA)

These rows were measured with a 3-run protocol and do not include TTFT.

ModelFormatDecode (tok/s)
LLaMA 3.2 1BGGUF Q4_K_M331.7
LLaMA 3.2 3BGGUF Q4_K_M166.7
LLaMA 3.1 8BGGUF Q4_K_M105.4
Qwen3 0.6BQ8_K_M316.7
Qwen3.5 0.8BGGUF Q4_K_M197.1
Qwen3.5 2BGGUF Q4_K_M178.5
Qwen3.5 4BGGUF Q4_K_M135.4
Qwen3.5 9BGGUF Q4_K_M104.8
Gemma4 E2BGGUF Q4_K_M247.8
Nemotron-H 4BGGUF Q4_K_M213.8
Bonsai 1.7BMLX 1-bit178.0

NVIDIA · RTX 2080 Ti (CUDA)

These rows were measured with a 3-run protocol and do not include TTFT.

ModelFormatDecode (tok/s)
LLaMA 3.2 1BGGUF Q4_K_M389.3
LLaMA 3.2 3BGGUF Q4_K_M177.5
LLaMA 3.1 8BGGUF Q4_K_M91.7
Qwen3 0.6BQ8_K_M325.1
Qwen3.5 0.8BGGUF Q4_K_M340.3
Qwen3.5 2BGGUF Q4_K_M236.1
Qwen3.5 4BGGUF Q4_K_M122.8
Qwen3.5 9BGGUF Q4_K_M81.3
Gemma4 E2BGGUF Q4_K_M166.1
Nemotron-H 4BGGUF Q4_K_M153.9
Bonsai 1.7BMLX 1-bit123.8

Vs. Other Inference Engines

Decode throughput (tok/s, higher is better) for the same model, weights, and protocol across serving engines. n/a means the engine cannot run that (model, backend) combination (for example, MLX has no pre-quantized repo for the Qwen 3.5 family, and vLLM does not run on Metal). The fastest value in each row is in bold.

A note on vLLM: it is built for high-throughput batched server deployments. The single-user, batch-1, real-time scenario these tables measure is its weakest mode by design, which is why its numbers are lower here.

Apple Silicon · M1 Max (Metal)

ModelAtelico AI Enginellama.cppOllamaMLX
LLaMA 3.2 1B252.7194.3166.5314.7
LLaMA 3.2 3B116.877.277.6145.5
LLaMA 3.1 8B61.729.830.269.5
Qwen3 0.6B (Q8_K_M)249.8150.6191.8n/a
Qwen3.5 0.8B164.9154.370.9n/a
Qwen3.5 2B119.097.969.1n/a
Qwen3.5 4B64.641.930.7n/a
Qwen3.5 9B48.026.824.3n/a
Gemma 4 E2B90.482.767.0n/a
Gemma 4 26B-A4B49.548.443.2n/a
Nemotron-H 4B79.445.148.3n/a
SmolLM 3 3B97.075.691.8n/a

Bonsai 1.7B (245.7) and Bonsai 8B (86.4) run only on the Atelico AI Engine on this backend; the other engines have no 1-bit MLX path.

NVIDIA · RTX 3090 (CUDA)

ModelAtelico AI Enginellama.cppOllamavLLM
LLaMA 3.2 1B613.8539.3602.7181.6
LLaMA 3.2 3B274.2252.3266.7102.0
LLaMA 3.1 8B145.4139.2147.151.0
Qwen3 0.6B (Q8_K_M)496.6434.5434.3n/a
Qwen3.5 0.8B435.0393.0308.3n/a
Qwen3.5 2B322.6298.3222.8n/a
Qwen3.5 4B187.2165.5139.9n/a
Qwen3.5 9B123.7117.399.6n/a
Gemma 4 E2B263.2185.63.6n/a
Gemma 4 26B-A4B131.1129.6111.1n/a
Nemotron-H 4B225.0199.5209.8n/a
SmolLM 3 3B266.2242.0255.6n/a

Bonsai 1.7B (202.2) and Bonsai 8B (60.7) run only on the Atelico AI Engine on this backend.

Prefix-Cache Speed-up

Multi-turn conversations reuse the prompt prefix from one turn to the next. The engine's automatic token-replay prefix cache replays the cached KV state for a byte-identical prefix instead of recomputing it, turning time-to-first-token from a function of the whole conversation into a function of just the new tail.

These figures are the mean TTFT across 5 turns of a character-dialogue (LotR Q&A) workload using Qwen3 0.6B Q8_0, at three prefix sizes. Cold = no cache (the persona is re-prefilled every turn); Warm = the persona is reused from the previous turn.

Apple Silicon · M1 Max (Metal)

Prefix size~TokensCold TTFT (ms)Warm TTFT (ms)Speed-up
Short11585631.3×
Medium1,060347834.2×
Long1,9816321753.6×

NVIDIA · RTX 3090 (CUDA)

Prefix size~TokensCold TTFT (ms)Warm TTFT (ms)Speed-up
Short11558561.0×
Medium1,060125721.7×
Long1,981195932.1×

The win grows with the cached prefix length and is marginal at ~100 tokens, where constant per-request overhead dominates both bars. The NVIDIA ratios are smaller than Apple Silicon's at the same size because the RTX 3090 prefills so quickly in absolute terms that the fixed per-request overhead is a larger share of warm TTFT.

GPU Sharing / Frame-Time Impact

When inference runs in-process with a game renderer, the Atelico Compute Graphics Scheduler (CGS) schedules inference and rendering on a single shared hardware context instead of letting the OS context-switch between them. The table below renders two canonical test scenes (Sponza and San Miguel, both at 4K) five ways: the game alone, the three CGS scheduling modes, and an "Other" baseline where the engine runs in a separate CUDA context and contends with the game for the GPU.

All measurements are on an RTX 5080, with a LLaMA 3.2 3B inference workload running during render. Values are mean FPS, with the 1% low in parentheses.

SceneGame onlyCGS PrioritizeGraphicsCGS BalanceCGS PrioritizeComputeOther (separate context)
Sponza @ 4K6211 (1984)5952 (1894)6061 (1946)4854 (1667)531 (365)
San Miguel @ 4K123 (108)122 (108)121 (108)115 (59)3 (2)

The three CGS modes keep the game at or near native FPS. Without CGS (right-most column), the WDDM driver context-switches between graphics and inference and the game collapses — to single-digit FPS on the heavy San Miguel scene.

Image Generation

Atelico IG is a small on-device text-to-image model (0.7B). The two FLUX rows are end-to-end wall-clock medians of 5 runs against Replicate's hosted endpoints (they include queue + inference + network round-trip and are not a kernel-for-kernel comparison); they are shown for context only.

ModelBackend / GPUImage sizeStepsSeconds/image
Atelico IGMetal · M1 Max512×51211.0
Atelico IGMetal · M4512×51211.0
Atelico IGMetal · iPhone 13512×51214.0
Atelico IGCUDA · RTX 2080 Ti1024×102410.60
Atelico IGCUDA · RTX 30901024×102410.39
Atelico IGCUDA · RTX 50801024×102410.27
FLUX schnellCloud (Replicate)1024×102440.77
FLUX.2 [pro]Cloud (Replicate)1024×10245010.76

Speech-to-Text (Whisper)

Realtime factor (RTF, higher is better) and word error rate (WER) per Whisper model size. RTF is the inverse of how long the engine takes to transcribe one second of audio, so a value of 30× means ~33 ms of compute per second of speech.

Apple Silicon · M1 Max (Metal)

ModelRTFWER (%)
whisper-tiny.en33.3×3.2
whisper-base.en20.0×1.8
whisper-small.en9.1×3.0
distil-whisper-large-v37.1×3.2
whisper-large-v3-turbo6.3×4.3
whisper-large-v32.2×1.8

NVIDIA · RTX 3090 (CUDA)

ModelRTFWER (%)
whisper-tiny.en100.0×0.7
whisper-base.en100.0×0.7
whisper-small.en33.3×1.8
whisper-large-v3-turbo33.3×1.8
distil-whisper-large-v333.3×0.7
whisper-large-v311.1×0.7

Text-to-Speech

Realtime factor (higher is better) for the two on-device TTS engines: Kokoro (high-quality neural, 54 voices) and Atelico TTS (lightweight, instant voice cloning).

EngineVoiceBackend / GPURTF
Kokoroaf_heartMetal · M1 Max5.5×
Atelico TTSalbaMetal · M1 Max18.6×
Kokoroaf_heartCUDA · RTX 309010.3×
Atelico TTSalbaCUDA · RTX 309013.0×

Audio-to-Face

Audio-to-Face turns each chunk of spoken audio into 52 ARKit blendshape weights to drive a character's face. Cold first-frame is the delay from the first audio sample to the first blendshape output on a fresh load; warm first-frame is the same delay once the model is hot in memory; steady-state per-frame is the recurring cost while the character keeps talking.

StageMetal · M1 Max (ms)CUDA · RTX 3090 (ms)
First-frame latency (cold)121.630.6
First-frame latency (warm)62.515.9
Steady-state per frame2.630.95