Gemma 4 Gemma-4-12B-it / Metal native PP512 TG128
on M4 24GB · llama.cpp
Oct 13, 2026
Summary
SOURCE: https://vangsebastian.ch/blog/the-memory-bus-does-not-negotiate/
HARDWARE/RUNTIME: Mac mini Mac16,10, base Apple M4, 10-core GPU, 24 GiB unified memory; macOS 26.5.1. Homebrew llama.cpp b10090, 7347430f4. GPU quantity: 1 physical GPU.
Article filed 2026-07-28, verified 2026-08-07; exact measurement timestamp is not separately stated. Quoted command: llama-bench -m models/gemma-4-12b-it-UD-Q4_K_XL.gguf -p 512 -n 128 -r 5. A rendered terminal panel reports BLAS/MTL, 11.91 B parameters, PP512 138.51 ± 0.11 and TG128 12.91 ± 0.01 t/s and MTL0 (Apple M4). Five repetitions took 76 seconds total wall time, which is not either native timer. The source says this is verbatim rendered terminal text, not a screenshot. Its physicalMemory query reports 25,769,803,776 bytes = 24 GiB. RecommendedMaxWorkingSetSize 19,069,665,280 bytes is a device budget, not measured model residency.
The article warns that later interleaved runs reached 12.71/12.79 t/s and PP drifted 129–134 under sustained load. Retain headline repeatability± SD and this between-run caveat. A separate two-repetition depth 0/2048/8192/32768 ladder reports PP 138.8/122.1/108.7/76.6 and TG 12.84/12.00/11.83/9.26; it is held outside the benchmark_cells because the already-read source section did not bind the extra timed-token counts/complete sweep command. KV memory diagrams are estimates. Source 7,366,423,360-byte disk file exactly matches current pinned HF Content-Length; tested local hash remains unknown.
NATIVE METRIC: Native llama-bench tests are separate synthetic PP and TG passes, not one user request. PP counts all fixed synthetic prompt tokens; TG counts the fixed one-token decode loop, not a max-output allowance or natural language answer. The native timer is high_resolution_clock around test_prompt/test_gen, with final PP synchronization and synchronization in each TG iteration. Reported rates are means of per-repetition tokens/elapsed_time; native ± values are sample standard deviations, not total experimental uncertainty. Model load, warm-up and any prior-depth setup are outside the timed interval. No TTFT is measured or inferred. No benchmark was rerun.
PARTICIPATING GPU QUANTITY: One physical Apple GPU, supported by this historical runtime Metal implementation selecting MTLCreateSystemDefaultDevice(), combined with the source-stated local Metal run. This is implementation-based physical-device proof, not a retained per-run enumeration. GPU core count is distinct from device quantity.
RUNTIME PROOF: https://github.com/ggml-org/llama.cpp/blob/7347430f4466d4f55cfb841974ee64b80fc18d93/tools/llama-bench/llama-bench.cpp ; https://github.com/ggml-org/llama.cpp/blob/7347430f4466d4f55cfb841974ee64b80fc18d93/ggml/src/ggml-metal/ggml-metal-device.m
ARTIFACT: https://huggingface.co/unsloth/gemma-4-12b-it-GGUF/blob/fc034cfff751157913579611efad8462ac1be606/gemma-4-12b-it-UD-Q4_K_XL.gguf . A pinned resolve HEAD returned 200 without downloading weight bytes. Current publisher/file identity and size are corroborated; the source does not provide the tested local file SHA256 or download revision. The source snapshot/hash is not the model hash.
UNKNOWNS: CPU core count and benchmark thread count; full benchmark command/environment where not quoted; actual allocator-rounded context capacity; per-run duration samples; exact historical weight bytes; hardware/model resident-memory footprint for these native test windows. Unreported values remain unknown.
RETRIEVAL LIMITATION: The benchmark claims above were captured from the original page through a public web reader before a later direct archival request returned HTTP 403. No local full-HTML archive was obtained. Exact historical runtime source and current pinned HF metadata were independently read from their public repositories. Post-restriction source excerpts are excluded from this report.
LlamaPerf structured rates are rounded to 0.1 tokens/s to match form precision; exact native means and SDs are retained above.