Selection rationale · verified against live sources 2026-09-09

Models

The machine has ~110 GiB of realistically usable unified memory (128 GiB minus OS and KV-cache headroom). Every pick below was verified live against HuggingFace and the llama.cpp project — not from prior knowledge. Full research: research/models-deep-dive.md in the build docs repo.

Selected for this machine

ModelSize on diskWhy
Qwen3.8-27B (UD-Q4_K_XL + MTP draft + mmproj vision)~19.2 GBDaily driver. Vision + tool use + 262K context + draft-MTP speedup. Community: 26–32 t/s claims did NOT reproduce bare — measured 12.3 t/s dense floor, 19.3 t/s served with MTP. Serving live.
DeepSeek-V4-Flash (Strix-Halo-verified GGUF, 2.90bpw)~103 GBThe big frontier MoE. 1M context (metadata-verified), MIT license, 90.8% API-parity. On box, on the endpoint (dsv4-flash): measured 21.0 t/s decode, loads at full 1M context. Tools ✓.
Qwen3.8-Flash-Next (ROCmFP4 STRIX build, PLE streamed from NVMe)~113.5 GBPurpose-built Strix Halo quant — only 63–75 GiB memory-resident (51B PLE table streams from disk). UNLOCKED: pinned-branch build (d3ca537 + qwen4exp patches); benched 28.6 t/s decode; on the endpoint as flashnext-fp4. Tools ✓ verified.
GLM-5.3-Flash (6block IQ2_XS)~85 GB17B active → speed tolerates the aggressive quant. UNLOCKED: loads via the PR-27752 build, serving live with the tool-template fix; 128.5 t/s prefill, 14.1 t/s decode. Tools work after the 2026-09-10 template fix.
Llama 3.3 70B (Q4_K_M)~40 GBRequested dense-70B baseline. Bandwidth-bound on this iGPU (~5–6 t/s est.) — benchmarked for comparison, not a serving model. On box; benched at 5.2 t/s decode — estimate confirmed.
Qwen3-Embedding-0.6B (Q8_0)~0.9 GBEmbeddings service (embed), always resident (persistent llama-swap group, ~20 ms latency). Backs the gateway's memory layer (mem0 → Qdrant, 1024-dim).

Tool calling: every chat model serves structured tool calls; GLM-5.3-Flash needed a 2-line chat-template fix (shipped 2026-09-10, overlay at /srv/llm/templates/glm53-toolfix.jinja). Auth: two API keys are live (builder + owner) — see the change log, 2026-09-12 entry. Known perf defect: the CPU governor is still powersave — one command + optional systemd unit to fix it, documented on the Runbook.

Considered and excluded — with reasons

Capabilities matrix (selected models)

CapabilityQwen3.8-27BDSV4-FlashFlash-NextGLM-5.3-Flash
Tool / function callingYes (jinja template)YesYesYes
VisionYes (mmproj-F16)Verify at loadYes (mmproj-BF16)Unverified for community quants
EmbeddingsSeparate embedding model (served on its own endpoint — see Architecture)
Draft-MTP speedupYes (Q4_0 draft, 1.3 GB)NoYes (Q4_K_M draft)PR-dependent
Context262K1M262K+1M

Why these quants

On a ~256 GB/s unified-memory iGPU, decode speed is memory-bandwidth-bound: bytes moved per token is the whole game, so the quality/size trade-off of the quant dominates throughput. Dense models (like the 70B) move every parameter every token and therefore crawl; MoE models (DSV4-Flash, Flash-Next, GLM) move only their active experts, which is why 100GB+ MoE models outperform a 40GB dense model here. The 27B dense at Q4_K_XL sits at a sweet spot: entire model + KV cache comfortably in memory, 26–32 t/s, full vision and tool support.