Qwen2.5-0.5B-Instruct (Q4_K_M) for AMD Loom

A Loom package (.loom programs and a model.json card) for the unmodified GGUF checkpoint bartowski/Qwen2.5-0.5B-Instruct-GGUF (Qwen2.5-0.5B-Instruct-Q4_K_M.gguf), generated on an AMD Ryzen AI Max+ 395 "Strix Halo" with the loom-skills workflow.

Quick start

pip install "hrx-loom[hf]"
loom-fetch https://huggingface.co/loom-fun/bartowski-Qwen2.5-0.5B-Instruct-loom/resolve/main/model.json --materialize=copy --output=Qwen2.5-0.5B-Instruct
loom-serve --model=Qwen2.5-0.5B-Instruct/model.json --device=amdgpu --memory_bytes=5000000000

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 DevLab llama.cpp DevLab Loom local ÷ DevLab (llama.cpp, Loom)
decode tok/s, short prompt 284.8 380.6 +34 % 675.8 56 % 263.0 312.2 ¹ 1.08, 1.22
decode tok/s, 2k context 245.8 543.2 +121 % 1181.6 46 % 266.1 435.9 ¹ 0.92, 1.25
decode tok/s, 32k context 225.4 249.1 +11 % 728.0 34 % 220.8 206.7 ¹ 1.02, 1.21
prefill tok/s, 1k document 11169.0 16879.0 +51 % 77768.6 22 % 11575.8 17097.2 ¹ 0.96, 0.99
prefill tok/s, 2k document 9177.1 16644.3 +81 % 73596.4 23 % 10537.1 17641.3 ¹ 0.87, 0.94
prefill tok/s, 8k document 8002.1 14605.9 +83 % 55675.2 26 % 9015.2 16542.5 ¹ 0.89, 0.88
prefill tok/s, 16k document 5502.5 11529.9 +110 % 42029.3 27 % 5803.9 12692.8 ¹ 0.95, 0.91
prefill tok/s, 32k document 3774.1 8008.7 +112 % 28203.9 28 % 3932.5 7848.4 ¹ 0.96, 1.02
4 streams, aggregate decode tok/s 791.2 938.8 +19 % 2850.3 33 % 816.6 635.6 ¹ 0.97, 1.48
speculative decoding, drafted tokens accepted — 12 % ² — n/a n/a n/a n/a n/a
  • llama.cpp: build llamacpp-rocm/b1369, server arguments -ngl 99 -cram 0 --spec-type ngram-simple -c 33792 -kvu -np 4.
  • Loom: speculative decoding on (n-gram prompt lookup, depth 2).
  • Same GGUF on both engines, tokens per second. Loom: client-side timing; llama.cpp: server-side timings. Runs per value: decode and prefill 2 (mean), 4 streams 3 (median).
  • Measured 2026-11-07; device AMD RYZEN AI MAX+ 395 w/ Radeon 8060S, AMD Radeon 8060S Graphics, Ubuntu 26.04; hrx-loom 0.1.0 (hrx-system d01d1c1); source: local run.
  • ¹ Measured 2026-11-07; device AMD RYZEN AI MAX+ 395 w/ Radeon 8060S, AMD Radeon 8060S Graphics, Ubuntu 24.04; hrx-loom 0.1.0 (hrx-system d01d1c1); source: DevLab Dispatch run 42342192972.
  • ² Measured 2026-11-08; device AMD RYZEN AI MAX+ 395 w/ Radeon 8060S, AMD Radeon 8060S Graphics, Ubuntu 24.04; hrx-loom 0.1.0 (hrx-system d01d1c1); source: DevLab Dispatch run 42419939771.
  • DevLab: the same measurement on an AMD DevLab Dispatch Strix Halo runner; local ÷ DevLab is the local value over the DevLab value of each engine, recorded for comparison, not a verdict.
  • Drafted tokens accepted: the share of the drafter's proposed tokens the model accepted during the spec gate's requests.
  • 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 a05730e); decode and 4 streams with speculative decoding: verify passes × (1 + acceptance × depth 2) tokens per pass, the drafter's cost not counted; acceptance measured in the row's own session: decode 11 %, decode at 2k 64 %, decode at 32k 82 %, 4 streams 20 %.
  • — 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 ❌ not supported
reasoning effort ❌ not supported
speculative decoding ✅ n-gram prompt lookup, depth 2, on by default
image input ❌ not supported
audio input / output ❌ not supported
sampling ✅ temperature, top_p, top_k, seed
context size ✅ 32,768 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 (38/38) ¹
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 ✅ pass ²
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 — not applicable
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 ✅ pass ²
decision Decision answers (choice, score, noul probabilities) vs llama.cpp on the same prompts — not applicable
  • ¹ DevLab Dispatch run 42342192972, 2026-11-07; 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 42419939771, LEVEL=full, 2026-11-08; 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 42342192972, LEVEL=full, 2026-11-07; 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 ca6ae88; hrx-loom 0.1.0 (hrx-system d01d1c1); card generator 1c7ab20.

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

Next steps

  • decode_32k is far from its roofline because the decode attention kernel streams the whole KV cache once per verified token, so a depth-2 verify pass costs about as much as decoding its tokens one by one (7 of 10.6 ms per pass at 32k is attention)
  • a span kernel that reads each key block once per verification span (loom-skills PR #134, parked) measured decode_32k 250 -> 343 tok/s locally and 211 -> 261 on DevLab, with all gates passing
  • it is not adopted: at short context it costs 4-stream decode 14 % on DevLab (the per-epoch leader list and one indirect launch per layer); it needs a device-side skip when no token is past the long-context threshold before this card is regenerated
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-Qwen2.5-0.5B-Instruct-loom

Finetuned
(1)
this model