llamaperf

Ornith1.5 35B (3B active)

on M6 32GB · LM Studio · 32,768 ctx

Apple hardware
Oct 13, 2026
Throughput
43.7 t/s gen
Quant
Q4_K_M (GGUF)
System RAM
32 GB

Summary

Source: https://github.com/HDZucht/Mac-Mini-M6-LLM-benchmarks Raw measured rows: https://github.com/HDZucht/Mac-Mini-M6-LLM-benchmarks/blob/3990a8e0fa5f2762911689439ce12e1c28d4c989/data/speed_2026-10-03.jsonl Quantization/hardware/method README: https://github.com/HDZucht/Mac-Mini-M6-LLM-benchmarks/blob/cb99870e05aa9f5783c5c6987ddd9154834123ab/README.md Loaded context metadata: https://github.com/HDZucht/Mac-Mini-M6-LLM-benchmarks/blob/main/data/loaded_context_2026-10-03.jsonl Original author measurements dated October 3–4, 2026, recovered and checked October 13. The raw file has 240 measured rows plus one separate error record. This report includes only the 15 runs for the exact model alias below. No local reproduction was performed. Headline: 43.7 tokens/s is the median of three English-prose runs (Ruhr economy prompt). It is client-observed streaming decode throughput. It is not an overall mean, pooled throughput, peak speed, native kernel benchmark or prefill throughput. Other workloads are kept separate. Hardware: Apple Mac mini M6, Mac18,5, 12 CPU cores (2 Super + 4 Performance + 6 Efficiency), 12 GPU cores, 32 GB unified memory, macOS 27.0.1. One computer; one model loaded alone. Models were stored on an ORICO 2 TB external NVMe with an ASMedia ASM246x enclosure (source reports 40 Gb/s, PCIe 4.0 x4). Fan control was Apple automatic. Per-run temperature, clock, power, swap, peak resident RAM and exact GPU offload are not reported. Measured model alias: ornith-1.5-35b-a3b. Source quantization: GGUF Q4_K_M. Runtime: LM Studio using its llama.cpp GGUF backend; exact application and backend versions/builds are not recorded. The model name/parameter class is source-reported, not an independently counted tensor total. The benchmark identifies this model alias and quantization but not its GGUF filename, Hugging Face publisher/repository, revision or hash. No model link is guessed from the base model or from a similarly named quant. Loaded context is verified as 32,768 tokens for this exact alias in loaded_context_2026-10-03.jsonl. This is allocated/loaded capacity, not a filled prompt length. Actual prompt token counts are not retained. Native prompt-processing rate and prefill duration are unknown and the PP field must stay blank. Method: one stream, max_tokens 600, temperature 0.7, reasoning_effort="none", three repetitions for each of five prompts. The script first sends a short Hallo warm-up request, then uses the OpenAI-compatible chat-completions stream. Thinking tokens count if a model emits them anyway. Requested reasoning-off is not independent proof that all model reasoning was disabled. MTP/speculative settings for these ordinary GGUF rows, KV type, batch/microbatch sizes and thread counts are not recorded. The harness computes decode_tps = (tokens - 1) / (stream_end - first_nonempty_content_time). tokens uses API completion_tokens when present, with a nonempty-stream-chunk-count fallback. The saved record includes both tokens and chunks, but not the original usage object, total elapsed time or finish_reason. Values below are the saved, rounded client rates; token counts are preserved as recorded. They are not re-derived from TTFT. TTFT is client wall latency, not native prefill time. Prompts repeat between the three runs; there is no nonce or explicit cache clearing in this script. Prefix-cache state and cached-token counts are unknown, so do not call these cold-prefill tests. Runs at 600 recorded output tokens reached the requested ceiling numerically; finish_reason was not saved. All 15 runs follow. Each run is shown as decode tokens/s; recorded output tokens; nonempty stream chunks; client TTFT seconds. Repetition order is 0, 1, 2. German prose, Rhine geology (wissen_de), median 37.6 tokens/s: Run 0: 38.7 tokens/s; 526 output tokens; 525 chunks; TTFT 0.35 s. Run 1: 37.1 tokens/s; 450 output tokens; 449 chunks; TTFT 0.11 s. Run 2: 37.6 tokens/s; 517 output tokens; 516 chunks; TTFT 0.09 s. German prose, bead-based immunoassay (beads_de), median 41.2 tokens/s: Run 0: 41 tokens/s; 600 output tokens; 600 chunks; TTFT 0.22 s. Run 1: 41.2 tokens/s; 533 output tokens; 532 chunks; TTFT 0.08 s. Run 2: 41.9 tokens/s; 600 output tokens; 600 chunks; TTFT 0.12 s. English prose, Ruhr economy (prosa_en), median 43.7 tokens/s: Run 0: 40.6 tokens/s; 410 output tokens; 409 chunks; TTFT 0.18 s. Run 1: 43.7 tokens/s; 479 output tokens; 478 chunks; TTFT 0.1 s. Run 2: 44.5 tokens/s; 470 output tokens; 469 chunks; TTFT 0.08 s. Python ISO-8601 duration parser (code_py), median 59.3 tokens/s: Run 0: 55.4 tokens/s; 398 output tokens; 397 chunks; TTFT 0.21 s. Run 1: 59.3 tokens/s; 576 output tokens; 575 chunks; TTFT 0.1 s. Run 2: 60.7 tokens/s; 487 output tokens; 486 chunks; TTFT 0.16 s. JSON antigen/disease extraction (json_extr), median 53.8 tokens/s: Run 0: 60.2 tokens/s; 66 output tokens; 65 chunks; TTFT 0.22 s. Run 1: 53.8 tokens/s; 215 output tokens; 214 chunks; TTFT 0.05 s. Run 2: 50.7 tokens/s; 213 output tokens; 212 chunks; TTFT 0.09 s. Quality scope: these tables measure speed. The author reports the JSON task passed all three runs for this model, with automated checking; prose/code quality was not generally graded. Do not infer broader task accuracy from throughput.