classify_refusal() separates refusal (head), preamble, appended disclaimer
(tail) and moralising insert (inline). Only the first three are meaningful, and
only where a prompt forbids them: a preamble on a coding answer is normal, so it
no longer counts as evasion.
Two sources of false positives had to be removed first, both found by checking
the detector's hits against the archive rather than trusting them:
* llamacppctl's own truncation warning on stderr had leaked into an archived
output and was read as a model disclaimer. It also inflated that run's word
count, so count_words() strips it too.
* An AI character saying "Bitte beachten Sie:" inside a dystopian story is
plot, not distancing. Quoted speech is removed before markers are matched.
run_prompt_suite.sh gains a CASES filter so a single prompt can be re-run.
Measured result, recorded in KI_TOOLS_PROFILES.md: across seven prose prompts
neither the abliterated model nor the aligned base model evaded once. On
literary prose the abliteration buys nothing measurable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
201 lines
9.8 KiB
Markdown
201 lines
9.8 KiB
Markdown
# Modellprofile — Eignung der lokalen GGUF-Modelle
|
||
|
||
Dieses Dokument beschreibt, **wofür** sich die Modelle unter
|
||
`$HF_HOME/models/qwen3/` jeweils eignen, unabhängig von den Beispiel-Prompts in
|
||
`example_system_prompts/`. Grundlage sind die Modellkarten auf Hugging Face
|
||
(Stand Juli 2026) sowie die eigenen Testläufe unter `~/llamacppctl_prompt_tests/`.
|
||
|
||
> Die Angaben zu Fähigkeiten und Benchmarks stammen, wo nicht anders vermerkt,
|
||
> **von den Modellautoren selbst** und sind nicht unabhängig verifiziert.
|
||
|
||
## Übersicht
|
||
|
||
| Datei | Profil | Basis | Primäre Eignung |
|
||
|---|---|---|---|
|
||
| `ornith-1.0-35b-Q4_K_M.gguf` | `ornith35b` | Qwen3.5-MoE | Agentisches Coding |
|
||
| `Carnice-Qwen3.6-MoE-35B-A3B-Q4_K_M.gguf` | `carnice` | Qwen3.6-35B-A3B | Agenten-/Tool-Calling-Workflows |
|
||
| `Qwopus3.6-35B-A3B-v1-Q4_K_M.gguf` | `qwopus` | Qwen3.6-35B-A3B | Reasoning, Vision, Tool-Calling |
|
||
| `Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf` | `[default]` | Qwen3.6-35B-A3B | Kreatives Schreiben ohne Verweigerungen |
|
||
| `Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-IQ4_XS.gguf` | `qwen27b` | Qwen3.6-27B (dense) | Wie oben, kleinerer VRAM-Bedarf |
|
||
| `mmproj.gguf` | — | Qwen3.6-35B-A3B | Vision-Projektor (kein eigenständiges Modell) |
|
||
|
||
Alle 35B-A3B-Modelle sind MoE mit **3 B aktiven Parametern** pro Token: hoher
|
||
Durchsatz bei 21 GB VRAM-Bedarf. Das 27B ist dense — langsamer pro Token, aber
|
||
nur ~15 GB.
|
||
|
||
## Ornith-1.0-35B — agentisches Coding
|
||
|
||
Quelle: [`deepreinforce-ai/Ornith-1.0-35B-GGUF`](https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B-GGUF) (MIT)
|
||
|
||
Ein dediziertes Coding-Modell aus einer selbstverbessernden Modellfamilie. Das
|
||
Trainings-Framework erzeugt per RL nicht nur Lösungs-Rollouts, sondern optimiert
|
||
auch das treibende Scaffold gemeinsam mit ihnen. Beworben mit SOTA unter
|
||
vergleichbar großen Open-Source-Modellen auf Terminal-Bench 2.1, SWE-Bench,
|
||
NL2Repo und OpenClaw. Reasoning-Modell: die Assistant-Antwort beginnt mit einem
|
||
`<think>`-Block.
|
||
|
||
**Einsetzen für:** Code-Generierung, Refactoring, Repo-weite Aufgaben,
|
||
Agenten-Loops mit Tool-Calls.
|
||
**Nicht einsetzen für:** Prosa und Reden — dafür ist das Sampling im Profil
|
||
(`temp = 0.20`) bewusst deterministisch gewählt.
|
||
|
||
Beachte: Basis ist **Qwen3.5**-MoE (`qwen3_5_moe`), nicht 3.6. Die lokale
|
||
`mmproj.gguf` passt deshalb *nicht* zu diesem Modell.
|
||
|
||
## Carnice-Qwen3.6-MoE-35B-A3B — Agenten-Workflows
|
||
|
||
Quelle: [`samuelcardillo/Carnice-Qwen3.6-MoE-35B-A3B`](https://huggingface.co/samuelcardillo/Carnice-Qwen3.6-MoE-35B-A3B)
|
||
|
||
QLoRA-Finetune von Qwen3.6-35B-A3B, trainiert auf echten Execution-Traces der
|
||
Hermes-Agent-Runtime. Das erklärte Ziel ist, dem Modell die konkreten
|
||
Konversationsmuster beizubringen, die ein Agenten-Runtime erwartet — nicht
|
||
generisches Reasoning.
|
||
|
||
**Einsetzen für:** Tool-Calling-Pipelines, Agenten-Orchestrierung (z. B. n8n),
|
||
strukturierte Mehrschritt-Abläufe.
|
||
|
||
## Qwopus3.6-35B-A3B-v1 — Reasoning + Vision
|
||
|
||
Quelle: [`Jackrong/Qwopus3.6-35B-A3B-v1`](https://huggingface.co/Jackrong/Qwopus3.6-35B-A3B-v1)
|
||
|
||
Reasoning-verstärkter Finetune, dreistufiges SFT mit progressiv steigender
|
||
Reasoning-Komplexität. Unterstützt Vision und Tool-Calling.
|
||
|
||
**Einsetzen für:** Aufgaben mit langer Gedankenkette, multimodale Eingaben.
|
||
**Vorbehalt:** Der Autor kennzeichnet das Modell ausdrücklich als experimentell,
|
||
ohne vollständige Performance- oder Sicherheitsevaluation.
|
||
|
||
Für reines Coding gibt es die separate Variante
|
||
[`Qwopus3.6-35B-A3B-Coder-MTP`](https://huggingface.co/Jackrong/Qwopus3.6-35B-A3B-Coder-MTP-GGUF)
|
||
(thinking-off, 62,4 % auf einem 300-Fall-SWE-Bench-Lauf) — lokal nicht vorhanden.
|
||
|
||
## HauhauCS Uncensored (35B-A3B und 27B) — kreatives Schreiben
|
||
|
||
Quellen: [35B-A3B](https://huggingface.co/HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive),
|
||
[27B](https://huggingface.co/HauhauCS/Qwen3.6-27B-Uncensored-HauhauCS-Aggressive)
|
||
|
||
**Abliterierte** Modelle: keine neuen Fähigkeiten, entfernte Verweigerungen
|
||
(Modellkarte: „0/465 Refusals"). Alle Quants mit imatrix erzeugt. Beide sind
|
||
multimodal.
|
||
|
||
**Einsetzen für:** Prosa, Reden, Dialog, Rollenspiel — Themen, bei denen ein
|
||
aligntes Modell abbricht.
|
||
**Nicht einsetzen für:** Coding. Eigene Testläufe zeigen wiederkehrend Tests, die
|
||
inkonsistent zum selbst erzeugten Schema sind, erfundene Framework-Aussagen und
|
||
Benchmarks mit erfundenen Messwerten.
|
||
|
||
Zwei Punkte, die in der aktuellen Konfiguration relevant sind:
|
||
|
||
1. Die Karte des 27B empfiehlt selbst, dass **99,9 % der Nutzer die
|
||
`Balanced`-Variante** nehmen sollten statt `Aggressive`. Beide erreichen
|
||
dieselbe Refusal-Rate; `Balanced` bietet zusätzlich stabileres Sampling für
|
||
agentic coding, Tool-Use und Reasoning. `Aggressive` spart lediglich
|
||
Vorreden. Aktuell sind beide lokalen HauhauCS-Modelle `Aggressive`.
|
||
2. Die Behauptungen „lossless" und „zero capability loss" stammen vom Autor der
|
||
Modellkarte. Abliteration kostet in aller Regel *etwas* Fähigkeit.
|
||
|
||
## Abliterations-Vergleich (gemessen 2026-07-10)
|
||
|
||
Kontrollmodell: `bartowski/Qwen_Qwen3.6-35B-A3B-Q4_K_M` — das **nicht**
|
||
abliterierte Basismodell, imatrix-Q4_K_M und damit methodengleich zum
|
||
HauhauCS-Quant. Beide liefen mit identischem Sampling, `ctx_size` und KV-Cache
|
||
(nur Modell, Container, Port und GPU unterschieden sich).
|
||
|
||
**Sieben Prosa-Prompts, keine einzige Verweigerung — bei keinem der beiden
|
||
Modelle.** Weder die vier Standard-Prompts (`prosa_01`–`04`) noch die drei
|
||
Reizprompts (`prosa_06`–`08`: Täterperspektive ohne Reue, unzuverlässiger
|
||
Erzähler ohne Einsicht, Rausch ohne Warnung) brachten das aligned Basismodell
|
||
zum Ausweichen. Kein `refusal`, kein `preamble`, kein moralisierender Schluss.
|
||
|
||
Daraus folgt: **auf literarischer Prosa bringt die Abliteration keinen
|
||
messbaren Vorteil.** Das Basismodell verweigert dort schlicht nicht. Wer die
|
||
abliterierte Variante wegen der Textsorte einsetzt, zahlt möglicherweise für
|
||
eine Eigenschaft, die er nicht braucht.
|
||
|
||
Auf der Kostenseite (Einzellauf pro Zelle, `temp = 0.65` — unterbestimmt, siehe
|
||
[`EVAL_RUBRIC.md`](EVAL_RUBRIC.md)):
|
||
|
||
- Längentreue: das Basismodell ist bei den Reizprompts in zwei von drei Fällen
|
||
näher am Ziel (+5,1 % / −17,1 % / −7,0 % gegenüber −31,2 % / −7,0 % / +16,0 %).
|
||
- „Show, don't tell" (`prosa_01`, benannte Gefühle je 1000 Wörter): beide bei 0.
|
||
- Sprachrichtigkeit: das abliterierte Modell leistet sich in denselben Prompts
|
||
deutsche Fehler („Lieber Clara" statt „Liebe Clara") und semantisch leere Sätze
|
||
(„Der Wecker tickt um vierundfünfzig"), das Basismodell nicht.
|
||
|
||
Die literarischen Kriterien 2–5 der Rubrik (Schlussbild, Ton, Präzision,
|
||
Komposition) sind damit **nicht** entschieden — sie verlangen Lesen, nicht
|
||
Zählen, und ein Lauf pro Zelle ist zu wenig.
|
||
|
||
## Empirische Befunde (eigene Läufe)
|
||
|
||
Getestet gegen das Default-Modell (HauhauCS 35B-A3B), Reasoning aktiv, ctx 262144:
|
||
|
||
- **Längenvorgaben werden nicht präzise getroffen** (−27 % bis +26 % über sechs
|
||
Läufe). Länge als Spanne vorgeben oder im zweiten Turn nachjustieren.
|
||
- **Reasoning frisst das Antwortbudget.** Bei `--max-tokens 10000` endeten
|
||
schwere Aufgaben in `finish_reason=length`. Für Prosa/Reden/Dialog
|
||
`--max-tokens` ≥ 16000 wählen.
|
||
- **`--chat` ohne `--stream`** läuft bei langem Output in den Read-Timeout.
|
||
Immer `--stream` verwenden (jeder Token setzt den Timeout zurück).
|
||
- **Coding: Struktur gut, Korrektheit unzuverlässig.** Generierten Code und
|
||
generierte Tests immer wirklich ausführen.
|
||
|
||
Rohdaten: `~/llamacppctl_prompt_tests/`.
|
||
|
||
## Vision (mmproj)
|
||
|
||
Die lokale `mmproj.gguf` (902 MB) ist der Vision-Encoder des **Basismodells
|
||
Qwen3.6-35B-A3B** (aus dem unsloth-Repo). GGUF-Metadaten:
|
||
|
||
```
|
||
general.architecture = clip
|
||
general.name = Qwen3.6 35B A3B
|
||
clip.projector_type = qwen3vl_merger
|
||
clip.has_vision_encoder
|
||
```
|
||
|
||
Ein mmproj ist kein eigenständiges Modell, sondern projiziert Bild-Embeddings in
|
||
den Textmodell-Raum. Er muss zum Vision-Tower der jeweiligen Basis passen.
|
||
|
||
| Modell | mmproj.gguf passt? |
|
||
|---|---|
|
||
| HauhauCS 35B-A3B | ja (Basis Qwen3.6-35B-A3B) |
|
||
| Qwopus3.6-35B-A3B | ja (dieselbe Basis) |
|
||
| Carnice-Qwen3.6-MoE-35B-A3B | ja (dieselbe Basis) |
|
||
| `ornith-1.0-35b` | **nein** — Basis Qwen3.5-MoE, eigener Projektor nötig |
|
||
| HauhauCS 27B (dense) | **nein** — anderer Vision-Encoder |
|
||
|
||
Verwendung über `llamacppctl` (siehe `[model.vision]` in `llama.cpp.config`):
|
||
|
||
```bash
|
||
llamacppctl --start --config llama.cpp.config --profile vision
|
||
```
|
||
|
||
Das Profil setzt `mmproj = models/qwen3/mmproj.gguf`; der Pfad wird — wie
|
||
`model_path` — relativ zu `hf_home` aufgelöst und als `--mmproj` an den
|
||
llama.cpp-Server durchgereicht. Der Projektor wird standardmäßig auf die GPU
|
||
ausgelagert; `mmproj_offload = false` bzw. `--no-mmproj-offload` verhindert das,
|
||
wenn der VRAM knapp ist.
|
||
|
||
Bilder gehen anschließend über den OpenAI-kompatiblen Endpunkt
|
||
`/v1/chat/completions` als `image_url`-Content-Part. `llamacppctl --chat` sendet
|
||
derzeit nur Text; für Bild-Requests den Endpunkt direkt ansprechen.
|
||
|
||
## MTP / Speculative Decoding (nicht lokal vorhanden)
|
||
|
||
Für Ornith, Carnice und Qwopus existieren **MTP-Quants** mit eingebettetem
|
||
Multi-Token-Prediction-Head. Mit hinreichend aktuellem llama.cpp erlauben sie
|
||
self-speculative Decoding ohne separates Draft-Modell (`--draft-mtp`);
|
||
Community-Berichte nennen etwa doppelten Decode-Durchsatz bei ~2,5 % größerer
|
||
Datei. Die im pyproject gepinnte Image-Version muss das unterstützen.
|
||
|
||
## Quellen
|
||
|
||
- <https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B-GGUF>
|
||
- <https://huggingface.co/SC117/Ornith-1.0-35B-MTP-APEX-GGUF>
|
||
- <https://huggingface.co/samuelcardillo/Carnice-Qwen3.6-MoE-35B-A3B>
|
||
- <https://huggingface.co/Jackrong/Qwopus3.6-35B-A3B-v1>
|
||
- <https://huggingface.co/Jackrong/Qwopus3.6-35B-A3B-Coder-MTP-GGUF>
|
||
- <https://huggingface.co/HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive>
|
||
- <https://huggingface.co/HauhauCS/Qwen3.6-27B-Uncensored-HauhauCS-Aggressive>
|
||
- <https://github.com/ggml-org/llama.cpp/blob/master/docs/multimodal.md>
|