Skip to main content
← AI Engine

Performance benchmarks

Frame-time impact, tokens per second, image generation speed and memory usage. Methodology and reproducible scripts included.

GPU Sharing Impact

This is the benchmark no other inference tool can show, because no other inference tool shares the GPU with a game renderer. The measurements below come from the Atelico Compute Graphics Scheduler (CGS), which schedules inference and rendering on a single shared hardware context instead of letting the OS context-switch between them. The chart compares two scenes (Sponza and San Miguel at 4K) rendered five ways: game alone, the three CGS scheduling modes (PrioritizeGraphics, Balance, PrioritizeCompute), and an Other baseline where our engine runs in a separate process and contends with the game for the GPU, simulating what any other inference solution looks like without CGS.

Game FPS in five modes (game only, three CGS scheduling modes, and a no-CGS separate-context baseline) measured on RTX 5080 across Sponza and San Miguel.

About the scenes. Both are canonical computer-graphics test scenes from Morgan McGuire's archive: Sponza is the ~280K-triangle Renaissance atrium that's been the standard GPU benchmark since the early 2000s, light enough to render at hundreds of FPS so any inference-induced frame-time impact is easy to spot. San Miguel is a much heavier ~10M-triangle Mexican courtyard restaurant scene (Guillermo M. Leal Llaguno) that runs at ~120 FPS on an RTX 5080, stressing the GPU enough that any extra scheduling overhead shows up immediately.

Scene Game onlyAtelico CGSPrioritizeGraphicsAtelico CGSBalanceAtelico CGSPrioritizeComputeOtherseparate context
Sponza 4K
RTX 5080
6211 fps
1% low 1984
5952 fps
1% low 1894
6061 fps
1% low 1946
4854 fps
1% low 1667
531 fps
1% low 365
San Miguel 4K
RTX 5080
123 fps
1% low 108
122 fps
1% low 108
121 fps
1% low 108
115 fps
1% low 59
3 fps
1% low 2

Same hardware (RTX 5080), same scenes, same Llama 3.2 3B inference workload during render. Atelico's three CGS scheduling modes (PrioritizeGraphics, Balance, PrioritizeCompute) keep the game at 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 scene.

LLM Decode Throughput vs Other Inference Engines

Methodology. Decode tokens per second on the same hardware and prompt, using the industry-standard pure-decode protocol so every column on the table measures the same quantity.

LLaMA 3.x

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama060120180240300tokens / second (decode, higher is better)LLaMA 3.2 1B258194167LLaMA 3.2 3B1187778LLaMA 3.1 8B623030
Model Atelico AI Engine llama.cpp Ollama
LLaMA 3.2 1B 258 tok/s194 tok/s167 tok/s
LLaMA 3.2 3B 118 tok/s77 tok/s78 tok/s
LLaMA 3.1 8B 62 tok/s30 tok/s30 tok/s
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM0140280420560700tokens / second (decode, higher is better)LLaMA 3.2 1B614539603182LLaMA 3.2 3B281252267102LLaMA 3.1 8B16013914751
Model Atelico AI Engine llama.cpp Ollama vLLM
LLaMA 3.2 1B 614 tok/s539 tok/s603 tok/s182 tok/s
LLaMA 3.2 3B 281 tok/s252 tok/s267 tok/s102 tok/s
LLaMA 3.1 8B 160 tok/s139 tok/s147 tok/s51 tok/s

Qwen 3 / 3.5

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama060120180240300tokens / second (decode, higher is better)Qwen3 0.6B (Q8_K_M)253151192Qwen3.5 0.8B16715471Qwen3.5 2B1199869Qwen3.5 4B654231Qwen3.5 9B482724
Model Atelico AI Engine llama.cpp Ollama
Qwen3 0.6B (Q8_K_M) 253 tok/s151 tok/s192 tok/s
Qwen3.5 0.8B 167 tok/s154 tok/s71 tok/s
Qwen3.5 2B 119 tok/s98 tok/s69 tok/s
Qwen3.5 4B 65 tok/s42 tok/s31 tok/s
Qwen3.5 9B 48 tok/s27 tok/s24 tok/s
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM0115230345460575tokens / second (decode, higher is better)Qwen3 0.6B (Q8_K_M)497435434Qwen3.5 0.8B435393308Qwen3.5 2B323298223Qwen3.5 4B187166140Qwen3.5 9B124117100
Model Atelico AI Engine llama.cpp Ollama vLLM
Qwen3 0.6B (Q8_K_M) 497 tok/s435 tok/s434 tok/sn/a
Qwen3.5 0.8B 435 tok/s393 tok/s308 tok/sn/a
Qwen3.5 2B 323 tok/s298 tok/s223 tok/sn/a
Qwen3.5 4B 187 tok/s166 tok/s140 tok/sn/a
Qwen3.5 9B 124 tok/s117 tok/s100 tok/sn/a

Gemma 4

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama0255075100125tokens / second (decode, higher is better)Gemma4 E2B908367Gemma4 26B-A4B504843
Model Atelico AI Engine llama.cpp Ollama
Gemma4 E2B 90 tok/s83 tok/s67 tok/s
Gemma4 26B-A4B 50 tok/s48 tok/s43 tok/s
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM060120180240300tokens / second (decode, higher is better)Gemma4 E2B2631864Gemma4 26B-A4B132130111
Model Atelico AI Engine llama.cpp Ollama vLLM
Gemma4 E2B 263 tok/s186 tok/s4 tok/sn/a
Gemma4 26B-A4B 132 tok/s130 tok/s111 tok/sn/a

Nemotron

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama020406080100tokens / second (decode, higher is better)Nemotron-H 4B794548Nemotron-3 Elastic 12B59
Model Atelico AI Engine llama.cpp Ollama
Nemotron-H 4B 79 tok/s45 tok/s48 tok/s
Nemotron-3 Elastic 12B 59 tok/sn/an/a
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM055110165220275tokens / second (decode, higher is better)Nemotron-H 4B225200210Nemotron-3 Elastic 12B220
Model Atelico AI Engine llama.cpp Ollama vLLM
Nemotron-H 4B 225 tok/s200 tok/s210 tok/sn/a
Nemotron-3 Elastic 12B 220 tok/sn/an/an/a

SmolLM 3

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama0255075100125tokens / second (decode, higher is better)SmolLM3 3B987692
Model Atelico AI Engine llama.cpp Ollama
SmolLM3 3B 98 tok/s76 tok/s92 tok/s
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM060120180240300tokens / second (decode, higher is better)SmolLM3 3B26624225654
Model Atelico AI Engine llama.cpp Ollama vLLM
SmolLM3 3B 266 tok/s242 tok/s256 tok/s54 tok/s

Bonsai (1-bit)

Apple Silicon · M1 Max
Atelico AI Enginellama.cppOllama065130195260325tokens / second (decode, higher is better)Bonsai 1.7B (1-bit MLX)283Bonsai 8B (1-bit MLX)114
Model Atelico AI Engine llama.cpp Ollama
Bonsai 1.7B (1-bit MLX) 283 tok/sn/an/a
Bonsai 8B (1-bit MLX) 114 tok/sn/an/a
NVIDIA · RTX 3090
Atelico AI Enginellama.cppOllamavLLM050100150200250tokens / second (decode, higher is better)Bonsai 1.7B (1-bit MLX)202Bonsai 8B (1-bit MLX)61
Model Atelico AI Engine llama.cpp Ollama vLLM
Bonsai 1.7B (1-bit MLX) 202 tok/sn/an/an/a
Bonsai 8B (1-bit MLX) 61 tok/sn/an/an/a

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 turns time-to-first-token from a function of the full conversation length into a function of just the new user message: when the beginning of the prompt is byte-identical to a previous request, the engine replays the cached KV state for that prefix instead of recomputing it.

Cold vs warm prefix-cache time-to-first-token at three prefix sizes (short, medium, long) on Metal M1 Max and CUDA RTX 3090.

Methodology. Mean time-to-first-token across 5 turns of a character-dialogue RAG pipeline (Qwen 3 0.6B Q8_K_M) at three prefix sizes (~100, ~1,000, ~2,000 tokens). Cold = no cache, the engine re-prefills the persona every turn. Warm = the persona is reused from the previous turn, so only the changing tail is prefilled.

How this scales. The win grows with the cached prefix length: marginal at ~100 tokens (constant per-request overhead from sampling, schema compilation and JSON-mode setup dominates both bars), multi-x from ~1,000 tokens onward, and saturates as the changing tail becomes a smaller and smaller fraction of total prefill time. NVIDIA ratios are smaller than Apple Silicon's at the same size because the RTX 3090 prefills so quickly in absolute terms that the constant per-request overhead is a bigger fraction of warm TTFT.

Text-to-Speech

Two engines: Kokoro (high-quality neural, 54 voices) and Atelico TTS (lightweight, instant voice cloning). Both run entirely on device. Realtime factor: how much faster than wall-clock the audio is synthesized; 18× means one second of speech in ~56 ms, comfortably under a single 60 FPS frame.

TTS realtime factor for Kokoro and Atelico TTS on Metal M1 Max and CUDA RTX 3090.

Speech-to-Text (Whisper)

Realtime factor (higher is better) across the small English-only variants (tiny.en / base.en / small.en) and the three full multilingual top-of-line models (distil-large-v3, large-v3-turbo, large-v3). Pick the size that fits your accuracy and latency budget; every size runs locally with no cloud hop.

What this means for a player. Realtime factor is the inverse of how long the engine takes to transcribe one second of audio, so the rough latency between the player finishing an utterance and the transcribed text being available in the game is ~1,000 / RTF ms per second of speech. A 1-second voice command transcribed at 30× resolves in ~33 ms (under one frame at 30 FPS); the same command at 100× resolves in ~10 ms. The big multilingual models still run locally in real time on consumer hardware: even Whisper large-v3 on M1 Max comes in under half a second per second of audio.

Whisper realtime factor per model size on Metal M1 Max and CUDA RTX 3090, with one bar per Whisper size grouped by backend.

Audio-to-Face

From a usage perspective: Audio-to-Face turns each chunk of spoken audio (TTS output, recorded VO, or live mic) into the 52 ARKit blendshape weights that drive a character's face. The cold first-frame latency is the delay from the first audio sample arriving to the first set of blendshape weights leaving the engine on a fresh load. Warm first-frame latency is the same delay after the model is hot in memory (what the player actually experiences for every line beyond the first). The steady-state per-frame cost is what the rest of the dialogue then pays per frame for as long as the character keeps talking.

Audio-to-Face per-stage latency (cold first frame, warm first frame, steady-state per frame) in milliseconds, grouped by backend (Metal M1 Max and CUDA RTX 3090).

Image Generation

Atelico IG generates a 512×512 image in about a second on an M1 Max and well under half a second on an RTX 3090, at output quality close to FLUX.2 [pro]. It is small enough to fit in the unified memory budget of every consumer device we ship to, including phones; the cloud-served FLUX.2 [pro] is a 32B-parameter model that does not.

For context, the chart also shows two cloud baselines from Replicate measured end-to-end (queue + inference + network): FLUX schnell at ~0.8 s and FLUX.2 [pro] at ~10.8 s, both at 1024×1024.

Atelico IG wall-time per image on M1 Max, M4, RTX 2080 Ti / 3090 / 5080, with FLUX schnell and FLUX.2 [pro] cloud baselines for context.

Model Sizes

Different sizes hit different deployment targets. Mobile devices (iOS / Android) typically have 4–8 GB of usable RAM after the OS and the rest of the game; current-generation consoles share ~12 GB across game and AI; PCs span the full range from 8 GB integrated to 24 GB+ discrete VRAM. Pick a model that leaves room for everything else your game is doing. All sizes are GGUF Q4_K_M unless a different format is noted next to the model name (e.g. Bonsai 1.7B (1-bit MLX)). Memory consumption below is an estimate for greedy decode at the default 4 K-token context; longer contexts grow the KV cache roughly linearly.

Model Parameters Size on disk Memory consumption (est.)
Bonsai 1.7B (1-bit MLX) 1.7B ~250 MB ~400 MB
Qwen3 0.6B 0.6B ~400 MB ~700 MB
Qwen3.5 0.8B 0.8B ~500 MB ~900 MB
LLaMA 3.2 1B 1B ~700 MB ~1.2 GB
Bonsai 8B (1-bit MLX) 8B ~1.15 GB ~1.5 GB
Qwen3.5 2B 2B ~1.2 GB ~1.7 GB
Gemma 4 E2B 2B (effective) ~1.5 GB ~2 GB
SmolLM 3 3B ~1.8 GB ~2.4 GB
LLaMA 3.2 3B 3B ~1.8 GB ~2.5 GB
Nemotron-H 4B 4B ~2.4 GB ~3 GB
Qwen3.5 4B 4B ~2.4 GB ~3 GB
LLaMA 3.1 8B 8B ~4.6 GB ~5.5 GB
Qwen3.5 9B 9B ~5.5 GB ~6.5 GB
Nemotron-3 Elastic 12B 12B ~7.5 GB ~9.6 GB
Gemma 4 26B-A4B 26B (4B active) ~14 GB ~18 GB
Kokoro 82M 82M ~165 MB ~250 MB
Atelico TTS 100M ~220 MB ~350 MB
Whisper tiny 39M ~32 MB ~80 MB
Whisper base 74M ~58 MB ~140 MB
Whisper small 244M ~166 MB ~400 MB
Whisper medium 769M ~514 MB ~1.1 GB
Whisper large-v3 1.55B ~1.05 GB ~2 GB
Whisper large-v3-turbo 809M ~547 MB ~1.1 GB
Atelico Audio2Face ~40M ~150 MB ~250 MB
Atelico IG 0.7B ~1.8 GB ~2.5 GB

Rough deployment guide: the top of the table (under ~2 GB) fits mobile and integrated-graphics laptops; the middle (~2–6 GB) is the sweet spot for current consoles and mainstream PCs; the bottom (~9 GB and up) targets discrete-GPU PCs with 12 GB+ VRAM. The 1-bit Bonsai family is unusually memory-light for its parameter count and is the cheapest way to ship a multi-billion-param LLM in a mobile build.

Related