TLDR; Base M5 Ultra 96 GB ran Q3.8 FN aggregate 3.2k PP and ~170 TG in 4 concurrency Alert: Numbers and custom server details at end are AI assisted So the good news is that I got the base model on launch day with only 64 core GPU. All benchmarks are for current maxed out model, which looks very sweet but it is 2x the price. Plus, the estimated delivery date is in 2027! So I thought about maximizing current device on hand and share some of the ideas that worked for me. I did see some odd sub agent streams getting derailed which orchestrator model fixed - will investigate the issue further over weekend later. Technical details are below: Used a qwen 27b as orchestrator on my PC and used mac as sub agent inference server Model: Qwen 3.8 FN 4-bit-8bit mix quant Context: 4 x 128k -- 512k total, 8-bit KV (90GB ram committed to VRAM) Server: mlx-serve (continuous batching with 4 concurrency) This is custom build done by AI on top of base mlx-serve -- details below Harness: Hermes (I was at office while checking and probing the bot from mobile for task) Task was a very specific development work on one of my projects, which is mostly coding with many planning, red teaming, verifying, testing and commits done by flash next concurrent workers - interestingly out of out of 112 million tokens only 3 million is generated token and 109 million prompt fills, which had 97 million / 89% cache hit rate. Per stream median PP was 828 tok/s with a single steam max of 3,328 tok/s. Aggregate ended at ~3,200 tok/s under 4-way load that means 800 tok/s stream scaled linearly. Median TG 43 tok/s per stream with single stream max of 152 tok/second . Aggregate was running at 170 tok/s at 4-way concurrency. Summary Table: Metric Stream Median Stream Mean Stream p10 Stream p90 Stream Max Aggregate Prefill (tok/s) 828.2 917.6 530.5 1,374.9 3,328 ~3,200–3,313 Decode (tok/s) 42.7 48.9 34.2 71.5 152 ~160–170 Context handling: the orchastrator made ~1700 sub agent calls with context depth Median of 64.4k tokens per request with some heavy loads around 200 exceeding 100k tokens. Prompt caching did wonders in this case. ---- Details on custom MLX serve ---- AI did the custom build based on ideas I found from strix halo lab (https://pwilkin.github.io/strix-halo/journey.html) which I ported to CUDA for my PC before - later ported to MLX-serve for flash next - logically makes sense to me but technically I don't know how this works tbh Tiled Gated Delta-Net (GDN) Recurrence: Keeps the 128 × 128 recurrent state matrix pinned directly inside high-speed GPU registers across 16-token sequence chunks instead of writing back to system RAM on every step. Fused 4-Stream HyperConnection + RMSNorm: Collapses the mixing of the model's 4 parallel residual streams and the subsequent Gated RMSNorm normalization into a single coalesced Metal threadgroup pass. Sparse MoE Compaction & Scatter-Reduction: Discards 98.3% of uncompacted zero-filled padding tiles by dynamically packing active tokens for dense matrix operations (mx.gather_mm), followed by a single-pass fused scatter-reduction. Temporal Expert Dequantization Cache: Exploits natural repetitive routing patterns during text generation by holding the top 64 frequently chosen MoE experts in a dedicated FP16 Unified Memory cache (~960 MB footprint).   submitted by   /u/Every-Fortune-3151 [link]   [comments]