Qwen3.5 9B
M6 32GB · LM Studio · 165,120 ctx
- generation:
- 30.3 tokens/s
Reported by the source; GPU count, offloading and concurrent requests can change these figures. Prompt-processing speed is shown only when the source reports it; generation speed cannot tell us time to first token. Check the full setup before comparing.
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 Hardware/method/model labels: 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 Harness: https://github.com/HDZucht/Mac-Mini-M6-LLM-benchmarks/blob/main/bench_speed.py Original author: HDZucht / Hans-Dieter Zucht, with repository-credited automated measurements by Argus. Campaign dated October 3–4, 2026; these exact records are in the October 3 raw file. No local reproduction was performed. Headline: 30.3 tokens/s is the median of three English-prose runs (Ruhr economy). It is client-observed streaming decode throughput, not a pooled rate, overall mean, peak, native kernel result or prompt-processing rate. Five workload medians and all 15 runs are preserved separately below. 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 machine, one model loaded alone. Model storage: ORICO 2 TB external NVMe in an ASMedia ASM246x enclosure, source-reported 40 Gb/s PCIe 4.0 x4. Apple automatic fan control. Per-run temperature, clock, power, swap, exact GPU offload and peak resident memory were not logged. Exact measured API alias: qwen3.5-9b-mlx. Display model: Qwen3.5-9B. Source table identifies Qwen3.5-9B in MLX; raw alias adds -mlx. Treat as that named model/backend, with exact precision unknown. Source Format-column label: MLX. Exact measured quantization: unknown. Measured weight format: MLX. Application: LM Studio. Backend: MLX. Exact app/backend versions are unknown. Do not turn QAT, MLX or Splash labels into an assumed Q4 quantization. Public MLX 4-bit, 8-bit and bfloat16 packages were verified for this model. The local alias does not identify publisher or precision. None of these is asserted as the measured artifact. Verified public related package/collection: https://huggingface.co/mlx-community/Qwen3.5-9B-MLX-4bit?library=mlx Verified public related package/collection: https://huggingface.co/mlx-community/Qwen3.5-9B-MLX-8bit/tree/main Verified public related package/collection: https://huggingface.co/mlx-community/Qwen3.5-9B-MLX-bf16/tree/main Measured Hugging Face repository, filename, revision and hash are unrecorded. Public related-package links above prove availability only. Loaded context for this exact alias is 165,120 tokens. Requested load context was 32,768. Loaded capacity is not actual prompt length or a filled-context test. Actual input token counts are absent. Native prefill throughput/duration are unknown; keep PP and new-input-token fields blank. Method: one stream, max_tokens 600, temperature 0.7, reasoning_effort="none", three runs per prompt. A short Hallo warm-up precedes the measured prompts. The script includes emitted content and reasoning chunks; requested reasoning-off does not establish that reasoning was disabled in every backend/model. The harness computes (tokens - 1) / (stream_end - first_nonempty_content_time). It uses API completion_tokens when available and nonzero; otherwise it falls back to the number of nonempty streamed chunks. Raw records contain tokens, chunks, TTFT and generated text, but not the original usage object, finish_reason or total duration. Treat tokens as recorded output counts, with this usage/chunk fallback caveat. Chunk counts need not equal tokenizer token counts. Rates are the saved rounded client rates, not recalculated from TTFT. TTFT is end-to-end client latency, not native prefill duration. Prompts repeat identically across three repetitions; no nonce or explicit cache clear appears in the harness. Prefix-cache state/cached-token counts are unknown. These are not verified cold-prefill runs. A record of 600 equals the requested cap numerically, but finish_reason is not available. KV dtype, batching, microbatching, thread counts and exact GPU allocation are unreported. All 15 runs follow, in source repetition order. Fields: decode tokens/s; recorded output count; nonempty chunks; client TTFT seconds. German prose, Rhine geology (wissen_de), median 30.6 tokens/s: Run 0: 30.6 tokens/s; 599 output count; 595 chunks; TTFT 0.32 s. Run 1: 30.6 tokens/s; 599 output count; 591 chunks; TTFT 0.33 s. Run 2: 30.7 tokens/s; 599 output count; 594 chunks; TTFT 0.33 s. German prose, bead-based immunoassay (beads_de), median 30.8 tokens/s: Run 0: 30.7 tokens/s; 599 output count; 594 chunks; TTFT 0.32 s. Run 1: 30.8 tokens/s; 599 output count; 593 chunks; TTFT 0.34 s. Run 2: 30.8 tokens/s; 599 output count; 575 chunks; TTFT 0.33 s. English prose, Ruhr economy (prosa_en), median 30.3 tokens/s: Run 0: 30.8 tokens/s; 599 output count; 585 chunks; TTFT 0.33 s. Run 1: 30.3 tokens/s; 599 output count; 590 chunks; TTFT 0.33 s. Run 2: 30.2 tokens/s; 599 output count; 590 chunks; TTFT 0.32 s. Python ISO-8601 duration parser (code_py), median 30.1 tokens/s: Run 0: 30.1 tokens/s; 599 output count; 585 chunks; TTFT 0.33 s. Run 1: 30 tokens/s; 599 output count; 590 chunks; TTFT 0.34 s. Run 2: 30.1 tokens/s; 599 output count; 591 chunks; TTFT 0.34 s. JSON antigen/disease extraction (json_extr), median 30.3 tokens/s: Run 0: 30.3 tokens/s; 599 output count; 594 chunks; TTFT 0.33 s. Run 1: 30.3 tokens/s; 599 output count; 592 chunks; TTFT 0.34 s. Run 2: 30.2 tokens/s; 599 output count; 589 chunks; TTFT 0.34 s. Quality scope: The README reports the JSON task passed 0 of 3 automatic checks for this model. All three JSON records say 599 output tokens and contain reasoning; do not replace those recorded counts with the requested 600-token ceiling. Prose/code quality was not generally graded. Throughput is not a quality score.