Spark-X2.6-4B (Q4_K_M) for AMD Loom

A Loom package (.loom programs and a model.json card) for the unmodified GGUF checkpoint bartowski/Spark-X2.6-4B-GGUF (Spark-X2.6-4B-Q4_K_M.gguf), generated on an AMD Ryzen AI Max+ 395 "Strix Halo" with the loom-skills workflow. Learn more on the Loom ecosystem website.

Quick start

pip install "hrx-loom[hf]==0.1.0"
loom-fetch https://huggingface.co/loom-fun/bartowski-Spark-X2.6-4B-loom/resolve/main/model.json --materialize=copy --output=Spark-X2.6-4B
loom-serve --model=Spark-X2.6-4B/model.json '--device=amdgpu://?completion_spin_ns=4294967295' --memory_bytes=55000000000

The server listens on 127.0.0.1:8080 and answers OpenAI-style /v1/chat/completions requests.

Performance vs llama.cpp

metric llama.cpp Loom margin roofline Loom % of roofline llama.cpp Vulkan
decode tok/s, short prompt 61.5 72.6 +18 % 82.6 88 % 61.9
decode tok/s, 2k context 55.9 68.6 +23 % 78.7 87 % 57.9
decode tok/s, 32k context 42.2 48.0 +14 % 56.1 86 % 42.6
prefill tok/s, 1k document 1750.6 2807.3 +60 % 7518.2 37 % 1478.8
prefill tok/s, 2k document 1851.2 2820.8 +52 % 7443.3 38 % 1563.4
prefill tok/s, 8k document 1804.3 2599.3 +44 % 7049.8 37 % 1575.6
prefill tok/s, 16k document 1632.4 2444.2 +50 % 6585.7 37 % 1411.3
prefill tok/s, 32k document 1339.9 2112.6 +58 % 5819.4 36 % 1158.7
4 streams, aggregate decode tok/s 155.6 251.6 +62 % 294.8 85 % 164.9
speculative decoding, drafted tokens accepted n/a n/a n/a n/a n/a n/a

Methodology

  • Compared: Loom against llama.cpp ROCm llamacpp-rocm/b1374, llama.cpp Vulkan llamacpp-vulkan/b12211; the same GGUF, the same DevLab runner and job, the same prompts; Loom served with the active wait. Values are the mean of 3 rounds (4 streams: median of 3); Loom is timed by the client, llama.cpp by its server.
  • Drafting, 1-stream rows (decode, decode_2k, decode_32k, prefill): no drafting on either engine (no MTP head in the GGUF and no drafter published for this exact model). Each engine is loaded once for all these rows.
  • 4 streams: both engines loaded with drafting off, 4 parallel requests, aggregate tokens per second.
  • Rows: decode = short-context decode; decode_2k / decode_32k = decode after a ~2k / ~32k-token context; prefill_Nk = prompt processing of an N k-token prompt; streams4 = 4-stream aggregate decode. A margin within +-3 % (the measured same-runner noise) is a tie.
  • llama.cpp ROCm server arguments: 1-stream rows: -ngl 99 -cram 0 -c 65536 -np 1; 4 streams: -ngl 99 -cram 0 -c 65536 -kvu -np 4.
  • llama.cpp Vulkan server arguments: 1-stream rows: -ngl 99 -cram 0 -c 36864 -np 1; 4 streams: -ngl 99 -cram 0 -c 147456 -np 4.
  • Measured on AMD DevLab Dispatch Strix Halo runners (devlab-perf jobs); runners differ between sessions.
  • Measured 2026-11-13; device AMD Strix Halo (DevLab Dispatch runner X2-LA03-S04-D04), Linux; hrx-loom 0.1.0 (hrx-system d01d1c1, recovered); source: DevLab Dispatch run 43390795404.
  • llama.cpp Vulkan: measured 2026-11-13; source: DevLab Dispatch run 43390795404. Archive sha256 9759acd.
  • Roofline: the hardware ceiling for this GGUF on AMD Ryzen AI Max+ 395 "Strix Halo" (gfx1151) at 216 GB/s and 59 TFLOP/s, from loom-roofline roofline.py (loom-skills acd9ac7).
  • β€” not measured; n/a not applicable.

Features

feature status detail
API βœ… OpenAI-style /v1/chat/completions
tool calling βœ… OpenAI-style tools and tool_calls
reasoning / thinking βœ… on by default; chat_template_kwargs: {"enable_thinking": false} turns it off
reasoning effort βœ… reasoning_effort: low, high (default high)
speculative decoding β€” not applicable
image input β€” not applicable
audio input / output β€” not applicable
sampling βœ… temperature, top_p, top_k, seed
context size βœ… 262,144 tokens per request
concurrency βœ… 4 concurrent requests
max output tokens βœ… 4,096 (preset max_tokens)

Correctness

gate description result
kernel_tests Unit tests of the generated kernels against reference implementations βœ… pass (78/78) ΒΉ
golden llama.cpp reference recorded on the same GGUF: greedy tokens and top-5 log-probs, short prompts and 1k-32k documents βœ… pass Β²
compare Greedy output vs the llama.cpp reference, token by token; every divergence is a near-tie βœ… pass Β²
vision Image input vs llama.cpp with the same projector: identical prompt tokens, replies equal up to near-ties β€” not applicable
consistency Concurrent requests give the same output as the same requests run alone βœ… pass Β²
spec Speculative decoding on gives exactly the output of speculative decoding off β€” not applicable
agent Multi-turn tool-calling loop: exact prompt rendering, history reuse, valid tool calls, output vs llama.cpp βœ… pass Β²
agent_think_off The tool-calling loop with thinking off βœ… pass Β²
sampling temperature, top_k and seed behave as specified; first-token distribution matches llama.cpp βœ… pass Β²
needle Needle-in-a-haystack prompt at up to half the context, compared with llama.cpp; over-capacity prompt refused βœ… pass Β²
needle_full Needle-in-a-haystack prompt at the full context is served ? not re-run on this package (the last pass was on a previous build, sha256 d262555; the nightly gates re-run it)
decision Decision answers (choice, score, noul probabilities) vs llama.cpp on the same prompts β€” not applicable
  • ΒΉ DevLab Dispatch run 43377116500, 2026-11-13; device AMD RYZEN AI MAX+ 395 w/ Radeon 8060S, AMD Radeon 8060S Graphics, Ubuntu 24.04; hrx-loom 0.1.0 (hrx-system d01d1c1).
  • Β² DevLab Dispatch run 43377116500, LEVEL=full, 2026-11-13; device AMD RYZEN AI MAX+ 395 w/ Radeon 8060S, AMD Radeon 8060S Graphics, Ubuntu 24.04; hrx-loom 0.1.0 (hrx-system d01d1c1).
  • Gates are the loom-benchmark correctness gates (gates.sh); a gate without a recorded run shows no evidence.

Files

  • model.json / model.json.lock: the card and the pinned source files (sha256 checked by loom-fetch).
  • program/*.loom, weights.loom: the generated Loom programs.
  • tokenizer.json: the tokenizer.
  • llm_config.json: the configuration the programs were generated from.
  • info.json: the measurements, gate evidence and versions this card shows; everything else comes from the files above.
  • REPORT.md: how the values above were measured: setup, commands and the value of every run.

Versions: card schema loom-card/2; loom-skills 1364b4e; hrx-loom 0.1.0 (hrx-system d01d1c1); card generator acd9ac7.

Source files, fetched by loom-fetch from their own repositories:

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for loom-fun/bartowski-Spark-X2.6-4B-loom

Finetuned
(1)
this model