# M1 Pro engine microbenchmarks

> Inspect 18 historical llama.cpp timings for three Q4_K_M models on one M1 Pro Mac, with raw repeats, exact artifacts and measurement limits.

Canonical: https://askloci.ai/speed/lab/2026-09-30/
Last updated: 2026-10-30

Three Q4\_K\_M models. Two synthetic workloads. Three repetitions per test on one Apple M1 Pro with 32 GiB of unified memory.

These measurements describe a historical llama.cpp engine session under substantial host load. They do not estimate Loci app speed, phone performance or memory fit.

Measured 2026-09-30 · one machine · 18 timing samples

## Prompt processing · pp512

Processes 512 synthetic token IDs in batches, with no prior context. It measures the engine’s prompt-processing work; it does not include tokenization or a natural-language conversation.

| Model · Q4\_K\_M | Mean ± sample SD (tokens/s) | Observed range (tokens/s) | Repeats |
| --- | --- | --- | --- |
| MiniCPM5-2B | 796.31 ± 3.21 | 792.61–798.27 | 3 |
| Spark-X2.5-1.7B | 1,098.80 ± 6.05 | 1,091.82–1,102.43 | 3 |
| Spark-X2.5-4B | 431.35 ± 0.35 | 430.95–431.59 | 3 |

## Single-token decoding · tg128

Performs 128 synthetic single-token decode steps from empty context, without a preceding prompt. It does not generate a sampled, natural-language answer.

| Model · Q4\_K\_M | Mean ± sample SD (tokens/s) | Observed range (tokens/s) | Repeats |
| --- | --- | --- | --- |
| MiniCPM5-2B | 75.84 ± 0.06 | 75.78–75.90 | 3 |
| Spark-X2.5-1.7B | 98.55 ± 0.19 | 98.34–98.72 | 3 |
| Spark-X2.5-4B | 44.79 ± 0.04 | 44.76–44.83 | 3 |

Each result is the arithmetic mean ± sample standard deviation of three repetition rates. The range and standard deviation describe variation within this session, not a confidence interval or variation across machines.

## Methods

### One recorded configuration

Apple M1 Pro, 10 CPU cores, 16 GPU cores and 32 GiB unified memory. All six tests ran in one session on 30 September 2026. The operating-system version and exact Mac product identifier were not retained.

### Pinned engine and settings

llama.cpp with Metal and BLAS backends, six threads, batch size 512, micro-batch size 128, 99 requested GPU layers, flash attention, and F16 key/value caches. The exact runtime commit and model files are linked below.

### Warmup and context

The default warmup runs one full prompt-processing pass before pp512 and one token step before tg128. Sequence memory is cleared before each timed repetition. Requested context is 512 tokens for pp512 and 128 for tg128; actual allocated context was not recorded.

### Timing and calculation

Each original nanosecond timing covers synthetic decode work and backend synchronization. Model loading is outside the interval. For each repetition, tokens/s = token count × 1,000,000,000 ÷ elapsed nanoseconds. Summaries use all three repetition rates, with sample standard deviation using n − 1.

## Conditions and limits

- These are historical llama.cpp engine microbenchmarks on one recorded hardware configuration. They do not measure Loci app performance or customer usage.
- The host was under substantial concurrent load: the recorded one-minute load averages before the three commands were approximately 31 to 33 on a 10-core CPU. Background work, thermal state and power mode were not controlled in the retained evidence.
- Each test has three sequential repetitions from one session on 30 September 2026. Variation across those repetitions does not describe variation across machines, people or future runs.
- The benchmark feeds synthetic token IDs. The generation test performs 128 single-token decode steps without a preceding prompt; it is not a 128-token natural-language answer or a quality test.
- Requested context was 512 tokens for prompt processing and 128 tokens for generation. Actual allocated context, OS version, exact Mac product identifier and peak process memory were not retained.
- The timings exclude model loading and include no app interface, time-to-first-token, tools, retrieval or conversation history. No phone or tablet was measured.
- Original timing and checksum receipts are retained. The original executable and model cache are no longer available for a fresh local hash check. The runtime commit and immutable model artifact hashes and sizes were independently checked against the upstream sources on 30 October 2026.
- No memory-fit threshold, Loci compatibility claim, device-wide speed estimate or cross-model quality conclusion follows from these measurements.

| Before model command | 1-minute load | 5-minute load | 15-minute load |
| --- | --- | --- | --- |
| MiniCPM5-2B | 32.87 | 25.07 | 24.49 |
| Spark-X2.5-1.7B | 31.70 | 25.08 | 24.51 |
| Spark-X2.5-4B | 31.08 | 25.06 | 24.50 |

Load averages are recorded conditions, not CPU-utilization percentages. They do not identify the effect of competing work on any individual timing.

## Exact artifacts and runtime

The model links identify the measured files at fixed upstream revisions. Their recorded checksums and sizes matched the upstream records on 30 October 2026.

[Runtime commit](https://github.com/ggml-org/llama.cpp/commit/7fe450e19305b828c199d602c23a8337aaa1f03b): 7fe450e19305b828c199d602c23a8337aaa1f03b.

[Benchmark implementation](https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tools/llama-bench/llama-bench.cpp)

Original timing and checksum receipts were retained. The original executable and model cache are no longer available for a fresh local hash check.

### MiniCPM5-2B

[MiniCPM5-2B-Q4\_K\_M.gguf](https://huggingface.co/openbmb/MiniCPM5-2B-GGUF/blob/2079a22f3beaa4e306449978533478fe0522f4b3/MiniCPM5-2B-Q4_K_M.gguf)

Revision: 2079a22f3beaa4e306449978533478fe0522f4b3. SHA-256: ec2d5801640099e97d8d7e8003ad4d81f336e757811f03a26173dddf386602fd. File size: 1561318368 bytes.

### Spark-X2.5-1.7B

[Spark-X2.5-1.7B-Q4\_K\_M.gguf](https://huggingface.co/XHToken/Spark-X2.5-1.7B-GGUF/blob/1f7fa33b1245c14730da39e125714ad3a327901b/Spark-X2.5-1.7B-Q4_K_M.gguf)

Revision: 1f7fa33b1245c14730da39e125714ad3a327901b. SHA-256: 902bde2522394954ac17821b3e5fd0df02defbc6944f122253f2580acf0503f4. File size: 1107457856 bytes.

### Spark-X2.5-4B

[Spark-X2.5-4B-Q4\_K\_M.gguf](https://huggingface.co/XHToken/Spark-X2.5-4B-GGUF/blob/9826e0be84e6e6e8b9668abc91421109a1df1e2d/Spark-X2.5-4B-Q4_K_M.gguf)

Revision: 9826e0be84e6e6e8b9668abc91421109a1df1e2d. SHA-256: adfcfa19a4ed6a5985da8bf565fe15f8e1a7e131d79bae2d19d48d1c40109428. File size: 2600224352 bytes.

## Cite this edition

> Loci AI, Inc. (2026). M1 Pro engine microbenchmarks, 30 September 2026. Three Q4\_K\_M models; synthetic pp512 and tg128 tests; three repetitions per test on one machine. https://askloci.ai/speed/lab/2026-09-30/

Include the exact model file, workload, hardware, three-repeat sample and host-load limitation with any quoted result.

No dataset reuse license is specified. Model licenses apply separately to the model artifacts.

[Download raw JSON](https://askloci.ai/speed/lab/2026-09-30/data.json) · [Download repeat CSV](https://askloci.ai/speed/lab/2026-09-30/data.csv) · [Edition manifest](https://askloci.ai/speed/lab/2026-09-30/manifest.json)

