Downloads · 30 days
443
28% of all-time downloads
kingjones777/Ornith-1.5-9B-Abliterated-ROCmFP4-GGUF
Ornith-1.5-9B-Abliterated-ROCmFP4-GGUF is a image-text-to-text model from kingjones777. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for gguf. The card lists the license as mit.
The model here is not our work. The abliteration, conversion and original validation are PocketAI Model Lab's, published as PocketAiHub/Ornith-1.5-9B-Abliterated-GGUF; the base model is ornith-ai's. This repository ad…
Downloads · 30 days
443
28% of all-time downloads
All-time downloads
1.6K
Public
Repo size
44 GB
Likes
0
Public
Click a slice to open those files.
.gguf44 GB · 100%
From the Hugging Face model README
The model here is not our work. The abliteration, conversion and original validation are PocketAI Model Lab's, published as
PocketAiHub/Ornith-1.5-9B-Abliterated-GGUF; the base model is ornith-ai's. This repository adds only the ROCmFP4/ROCmFPX quantisation ladder, the dual-backend build, and the measurements. Go star their repo.
Six ROCmFP4 / ROCmFPX quantisations of Ornith-1.5-9B-Abliterated, built and measured on a Ryzen AI
Max+ 395 (Radeon 8060S). Every file runs on BOTH the HIP (ROCm) and Vulkan backends from a single binary —
the backend is a runtime -dev flag, not a rebuild. The F16 vision projector works with every tier.
Lead result — this model is the opposite of its 35B sibling. On the 35B (MoE) the backend was worth ~10× the tier. Here, on the 9B (dense), the backends are within ~1 % on the 4-bit tiers and the interesting spread is between tiers instead. Do not carry a backend ranking across architectures.
| File | ftype | Size | PPL (wikitext-2, 100 chunks) | Use it for |
|---|---|---|---|---|
Q4_0_ROCMFP4_STRIX_LEAN | 106 | 4.89 GiB | 9.4313 | Best all-round. Fastest tier measured, and better perplexity than full Q8. |
Q4_0_ROCMFP4_FAST | 103 | 4.72 GiB | 9.4571 | Smallest file; within noise of STRIX_LEAN on speed. |
Q4_0_ROCMFP4_COHERENT | 102 | 5.19 GiB | 9.4576 | q6_K embeddings + head. ⚠️ See the Vulkan note below. |
Q8_0_ROCMFPX_AGENT | 115 | 8.77 GiB | 9.4163 | Best perplexity. Pick when quality outranks speed. |
Q8_0_ROCMFPX | 111 | 8.64 GiB | 9.4559 | Plain Q8 reference. |
Q6_0_ROCMFPX_AGENT | 114 | 7.88 GiB | 9.5850 | ⛔ Not recommended — see below. |
mmproj-*-F16.gguf | — | 0.86 GiB | — | Vision projector. Required for images; works with every tier above. |
Q6_0_ROCMFPX_AGENT is worse on every axis than the 4-bit tiers: slower (24.4 vs ~35.5 tok/s), larger
(7.88 vs ~4.9 GiB), and worse perplexity (9.5850 — the worst of all six). It is also the one tier where
Vulkan loses badly to ROCm (21.1 vs 24.4, −13.6 %). There is no workload on this model where Q6 is the
right answer. It is published only for completeness of the ladder.
This is not a general claim about Q6 — it is what this model measured.
# ROCm — the conservative default (zero truncated generations in 72)
llama-server -m Ornith-1.5-9B-Abliterated-Q4_0_ROCMFP4_STRIX_LEAN.gguf \
--mmproj mmproj-Ornith-1.5-9B-Abliterated-F16.gguf \
-dev ROCm0 -fa on -ngl 999 -fit off -np 1 \
-ctk q8_0 -ctv q8_0 -c 32768 -b 8192 -ub 2048 -t 4 --poll 100 --jinja \
--repeat-penalty 1.05 --repeat-last-n 256 \
--host 0.0.0.0 --port 8080
# Vulkan — SAME FILE, only -dev changes. Within ~1 % on this model.
# -dev Vulkan0
max_tokensIt emits a reasoning block first, then the answer. If your token budget runs out during reasoning you get
an empty content field — a valid HTTP 200 with nothing in it, which reads like a broken model.
Measured on the six tiers with a single "write a function" prompt (reasoning chars → total completion tokens):
| Tier | reasoning | content | completion tokens |
|---|---|---|---|
STRIX_LEAN | 1221 | 917 | 708 |
COHERENT | 979 | 477 | 378 |
Q8_0_ROCMFPX | 356 | 1031 | 410 |
Q8_AGENT | 528 | 616 | 338 |
Q6_AGENT | 816 | 364 | 326 |
FAST | 358 | 685 | 301 |
Every tier needed more than 300 tokens for that one short request, and STRIX_LEAN needed 708. A
max_tokens: 300 cap returns empty content from this model — we hit exactly that in our own first test run.
Budget ≥ 1024, and read reasoning_content separately if your client exposes it.
--repeat-penalty 1.05 --repeat-last-n 256 is recommended, not decorative: with all repetition control off,
this family can fall into a repeating-candidate loop on long agentic turns.
ROCmFP4/ROCmFPX use ggml tensor types 100–119. Upstream llama.cpp's type table stops at 43, so a stock build rejects these files outright, on any backend. Build one with both backends — this is the exact configuration behind every number on this card:
cmake -S . -B build-hipvk -DCMAKE_BUILD_TYPE=Release \
-DGGML_HIP=ON -DGGML_VULKAN=ON -DGGML_NATIVE=ON \
-DVulkan_GLSLC_EXECUTABLE=/usr/bin/glslc \
-DAMDGPU_TARGETS=gfx1151
cmake --build build-hipvk -j
# verify BOTH backends are present before trusting any of this:
build-hipvk/bin/llama-server --list-devices # must list ROCm0 AND Vulkan0
Traps: glslc is not always auto-detected (pass -DVulkan_GLSLC_EXECUTABLE); a stale CMakeCache poisons a
generator switch (rm -rf the build dir).
Decode tok/s, median of 2 scored reps (warm-up discarded), n_predict = 400, -c 32768, single seat.
Medians are computed over full-length generations only; any truncated generation is excluded and noted.
| Tier | Backend | code | prose | reason | json | prefill (code) |
|---|---|---|---|---|---|---|
COHERENT | ROCm0 | 35.22 | 34.78 | 34.69 | 35.17 | 407 |
COHERENT | Vulkan0 | 34.57 † | 34.58 † | 34.62 † | 34.58 † | 367 |
FAST | ROCm0 | 35.52 | 35.53 | 35.44 | 35.98 | 443 |
FAST | Vulkan0 | 35.80 | 35.67 | 35.77 | 35.58 | 385 |
STRIX_LEAN | ROCm0 | 35.40 | 36.25 | 36.17 | 36.62 | 435 |
STRIX_LEAN | Vulkan0 | 35.23 | 35.73 | 35.84 | 35.78 | 381 |
Q6_AGENT | ROCm0 | 24.37 | 24.39 | 24.43 | 24.59 | 255 |
Q6_AGENT | Vulkan0 | 21.05 | 21.17 | 21.17 | 21.23 | 248 |
Q8_AGENT | ROCm0 | 22.44 | 22.49 | 22.44 | 22.59 | 377 |
Q8_AGENT | Vulkan0 | 22.73 | 22.68 | 22.74 | 22.75 | 231 |
Q8 | ROCm0 | 22.29 | 22.29 | 22.26 | 22.37 | 353 |
Q8 | Vulkan0 | 22.61 ‡ | 22.62 | 22.62 | 22.65 | 272 |
‡ Q8/Vulkan0 code had 1 truncated generation of 2 scored, so that single figure is a median over
one surviving generation — treat it as indicative, not measured. Every other cell in this table is a
median over 2 scored generations with zero truncations.
† COHERENT/Vulkan0 is reported from a deeper 48-generation re-run rather than the 2-rep protocol,
because 3 of its 4 workloads truncated under Vulkan and the 2-rep medians were unusable — one workload had
no valid sample at all. Medians are over full-length generations only (10, 12, 8 and 10 of 12
respectively). See the Vulkan section below.
12 of 12 arms loaded. Zero load failures on either backend.
STRIX_LEAN (4.89 GiB, 9.4313) is better than
Q8_0_ROCMFPX (8.64 GiB, 9.4559) while running ~1.6× faster. The 4-bit ROCmFP4 tiers are not a
quality compromise on this model.wikitext-2-raw, 100 chunks, -c 512, ROCm0, -ngl 999 -fa on. Lower is better.
| Tier | PPL | ± |
|---|---|---|
Q8_0_ROCMFPX_AGENT | 9.4163 | 0.16280 |
Q4_0_ROCMFP4_STRIX_LEAN | 9.4313 | 0.16241 |
Q8_0_ROCMFPX | 9.4559 | 0.16386 |
Q4_0_ROCMFP4_FAST | 9.4571 | 0.16270 |
Q4_0_ROCMFP4_COHERENT | 9.4576 | 0.16318 |
Q6_0_ROCMFPX_AGENT | 9.5850 | 0.16705 |
The spread across the top five is 0.04 PPL — smaller than the ± on any single measurement. Treat those five as quality-equivalent and choose on size and speed.
This is the most important thing on this page. Under Vulkan this model intermittently emits 1 token with empty content and stops. Under ROCm it never did once, in 120 generations.
| Model | Backend | Truncated |
|---|---|---|
| This model (9B, dense) | Vulkan0 | 8 / 48 — 17 % |
| This model (9B, dense) | ROCm0 | 0 / 48 |
Sibling Ornith-1.5-35B-A3B-Abliterated (MoE) | Vulkan0 | 0 / 48 |
Sibling Ornith-1.5-35B-A3B-Abliterated (MoE) | ROCm0 | 0 / 48 |
Same recipe, same box, same binary, same driver — and only this model on Vulkan fails. The failure lives at the (this model × Vulkan) intersection, not in the format or the backend alone.
Per workload, on COHERENT/Vulkan0 (12 generations each):
| Workload | Truncated | Median over full-length gens |
|---|---|---|
prose | 0 / 12 | 34.58 |
code | 2 / 12 | 34.57 |
json | 2 / 12 | 34.58 |
reason | 4 / 12 | 34.62 |
Throughput on the surviving generations is normal — this does not look like a slow or overloaded GPU. It either produces the full answer at full speed, or produces nothing.
| Tier | ROCm0 | Vulkan0 |
|---|---|---|
Q4_0_ROCMFP4_COHERENT | 0 / 12 | 3 / 12 |
Q8_0_ROCMFPX | 0 / 12 | 1 / 12 |
FAST · STRIX_LEAN · Q6_AGENT · Q8_AGENT | 0 / 12 each | 0 / 12 each |
| Total | 0 / 72 | 4 / 72 |
Tier-variable, not tier-exclusive. It is worst on COHERENT, but it also hit Q8_0_ROCMFPX — a tier
passing once does not make it immune.
No error. No crash. Clean exit code. /health still returns 200. The response is simply empty (one case
emitted <response> and stopped mid-tag). A benchmark that reports only median throughput cannot see
this: it surfaces as an absurd tg = 1000000 tok/s (a 1-token / 0 ms decode) or as a plausible "fast"
outlier inside a range. Every median on this card is therefore computed over full-length generations only,
with truncations excluded and counted separately.
Recommendation for this model: run ROCm. It was clean in all 120 generations we put through it, and on
the 4-bit tiers it is within ~1 % of Vulkan anyway — you give up nothing. If you do run Vulkan, count how
many completions reach your n_predict rather than trusting throughput. The same GGUF serves correctly on
-dev ROCm0; switching is one flag, no re-download and no rebuild.
Built from PocketAiHub/Ornith-1.5-9B-Abliterated-GGUF (BF16 GGUF), itself derived from
ornith-ai/Ornith-1.5-9B pinned at revision
c927ad73b7eb20f00aafcaa0a11a9d58ed5487bc.
The abliteration manifest was checked against the base before quantising — a de-fused or partially-applied checkpoint produces a model that quantises fine and then fails behaviourally, which is expensive to discover late.
| Field | Value |
|---|---|
| Method | refusal-direction orthogonal weight projection |
| Direction source | residual_post at the assistant-generation boundary, layer 23 |
| Direction sha256 | 97a2519200…3852aadffb |
| Destination layers | 12 – 31 (20 layers) |
| Target kinds | full_attention_out (5), linear_attention_out (15), mlp_down (20) |
| Modified tensors | 40 |
| Scale | 1.0, norm_preserve: true |
| Architecture | qwen3_5, hidden 4096, 32 layers, full-attention interval 4 |
| BF16 source sha256 | 099f1d1c2942e0f9b071681175154ef86565df459b60d593953778b054962b64 |
| mmproj sha256 | 5b0fde273fd6b54bc19e700fa5cb6501d58d2b61acafc4a73c7d6fdad87d96d1 |
A number without its binary is a rumour. Everything on this card came from:
| Host | Ryzen AI Max+ 395 (Strix Halo), Radeon 8060S, gfx1151, 128 GB unified |
| Build | ROCmFPX fork @ e7712358806055c70a9753b070202b0cc7c637e3 |
GGML_HIP=ON GGML_VULKAN=ON GGML_NATIVE=ON, Release, AMDGPU_TARGETS=gfx1151 | |
llama-server sha256 | e860b763d5e8f496ddb4b01236d8a8f37ae09dda456b5d076ab3abe2d9deb9fc |
| Serve flags | -fa on -ngl 999 -fit off -np 1 -ctk q8_0 -ctv q8_0 -c 32768 -b 8192 -ub 2048 -t 4 --poll 100 --jinja --repeat-penalty 1.05 --repeat-last-n 256 |
| ROCm arms only | ROCBLAS_USE_HIPBLASLT=1 |
| Perf protocol | 4 workloads × 3 reps, warm-up discarded, median of remaining full-length gens |
| Truncation protocol | predicted_n recorded per generation; any gen < 50 tokens excluded from the median and counted separately |
| PPL | llama-perplexity -f wiki.test.raw --chunks 100 -c 512 -t 8 -dev ROCm0 |
| Tier | loads ROCm0 | loads Vulkan0 | mmproj | coherent output | tools | trunc ROCm | trunc Vulkan |
|---|---|---|---|---|---|---|---|
Q4_0_ROCMFP4_COHERENT | ✅ | ✅ | ✅ LOADED | ✅ PASS (477 chars) | 3/3 | 0 / 12 | 3 / 12 |
Q4_0_ROCMFP4_FAST | ✅ | ✅ | ✅ LOADED | ✅ PASS (685 chars) | 3/3 | 0 / 12 | 0 / 12 |
Q4_0_ROCMFP4_STRIX_LEAN | ✅ | ✅ | ✅ LOADED | ✅ PASS (917 chars) | 3/3 | 0 / 12 | 0 / 12 |
Q6_0_ROCMFPX_AGENT | ✅ | ✅ | ✅ LOADED | ✅ PASS (364 chars) | 3/3 | 0 / 12 | 0 / 12 |
Q8_0_ROCMFPX_AGENT | ✅ | ✅ | ✅ LOADED | ✅ PASS (616 chars) | 3/3 | 0 / 12 | 0 / 12 |
Q8_0_ROCMFPX | ✅ | ✅ | ✅ LOADED | ✅ PASS (1031 chars) | 3/3 | 0 / 12 | 1 / 12 |
12 of 12 backend load arms passed. 0 load failures. Tool calling is 18/18 correct structured calls across all six tiers. Every tier returns real, runnable code when given an adequate token budget.
The coherence probe was run at max_tokens: 1024 with reasoning_content captured separately. An earlier
run of this same probe at max_tokens: 300 reported STRIX_LEAN as producing empty output — that was a
probe defect, not a model defect: the server had generated a full 300 tokens, all of them reasoning. See the
max_tokens note above.
Vision: the F16 projector loads against every tier. Image-grounded accuracy is not scored here — see Not yet measured.
Released under MIT, matching the source derivative.
ornith-ai/Ornith-1.5-9B by the Ornith team,
pinned at c927ad73b7eb20f00aafcaa0a11a9d58ed5487bc.PocketAiHub/Ornith-1.5-9B-Abliterated-GGUF.This is an experimental derivative in which learned refusal behaviour has been reduced. It is published for research and legitimate local use. The edit reduces refusal broadly rather than judging whether a request is legitimate — deployers should evaluate it in their own context and apply their own safeguards. Abliteration is not truthfulness training, not a capability improvement, and not a guarantee of compliance.
The Ornith team for the base model; PocketAI Model Lab for the abliteration and its machine-readable provenance, without which the source-integrity check above would not have been possible; and the ROCmFPX project for the FP4 tensor types that make these tiers exist at all.