GraySoft
Projects Models Compare Cloud benchmarks FAQ Download guIDE →
Model Intelligence Sheet

AtomicChat/Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF overview

How to Run Ternary Bonsai 2 2B Without Refusals Locally <p style="margin top: 0; margin bottom: 0;" <em A 1.2 MB adapter, not a checkpoint. The 0.43 GB ternary…

ggufllama.cpplorauncensoredabliterationrefusal-directionternarybonsaiprismmlatomic-chattext-generationbase_model:prism-ml/Ternary-Bonsai-2-2B-ggufbase_model:adapter:prism-ml/Ternary-Bonsai-2-2B-gguflicense:apache-2.0region:us

Runs locally from ~1.1 MB disk (4 GB VRAM class GPUs with llama.cpp / guIDE).

Downloads
21
Likes
0
Pipeline
text-generation

Repository Files & Downloads

1 GGUF files detected
Direct downloads for local inference
FileTypeQuantizationSizeLink
Ternary-Bonsai-2-2B-Uncensored-LoRA.ggufGGUFGGUF1.1 MBDownload

Model Details

Model IDAtomicChat/Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF
AuthorAtomicChat
Pipelinetext-generation
Licenseapache-2.0
Base modelprism-ml/Ternary-Bonsai-2-2B-gguf
Last modified2026-10-16T11:33:23.000Z

Model README

---

base_model: prism-ml/Ternary-Bonsai-2-2B-gguf

base_model_relation: adapter

library_name: gguf

license: apache-2.0

license_link: https://huggingface.co/prism-ml/Ternary-Bonsai-2-2B-gguf/blob/main/LICENSE

pipeline_tag: text-generation

tags:

- gguf

- llama.cpp

- lora

- uncensored

- abliteration

- refusal-direction

- ternary

- bonsai

- prismml

- atomic-chat

---

How to Run Ternary Bonsai 2 2B Without Refusals Locally

<p style="margin-top: 0; margin-bottom: 0;">

<em>A 1.2 MB adapter, not a checkpoint. The 0.43 GB ternary pack stays byte-identical and the refusal direction is removed inside the compute graph, at a strength you set per request. The <a href="https://huggingface.co/datasets/AtomicChat/Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF-metrics">measurements</a> behind this card are public.</em>

</p>

<div style="display: flex; gap: 8px; align-items: center; margin-top: 10px; margin-bottom: 10px;">

<a href="https://atomic.chat/?utm_source=huggingface&utm_medium=referral&utm_campaign=hf_ternary_bonsai_2_2b_uncensored&utm_content=btn_atomic"><img src="https://huggingface.co/AtomicChat/Ternary-Bonsai-2-27B-Uncensored-LoRA-GGUF/resolve/main/btn_atomic.png" width="162" alt="Atomic Chat"></a>

<a href="https://discord.gg/8wGSsvmg4V"><img src="https://huggingface.co/AtomicChat/Ternary-Bonsai-2-27B-Uncensored-LoRA-GGUF/resolve/main/btn_discord.png" width="119" alt="Discord"></a>

<a href="https://github.com/AtomicBot-ai/Atomic-Chat"><img src="https://huggingface.co/AtomicChat/Ternary-Bonsai-2-27B-Uncensored-LoRA-GGUF/resolve/main/btn_github.png" width="115" alt="GitHub"></a>

</div>

<ul style="margin: 0 0 12px 0;">

<li>Load it with <code>--lora-scaled Ternary-Bonsai-2-2B-Uncensored-LoRA.gguf:1</code>. Scale 1 takes held-out refusals to 0%, scale 0 switches it off, so one process serves both.</li>

<li>It needs PrismML's llama.cpp fork - stock llama.cpp and Ollama cannot open the base pack at all.</li>

<li>Research-grade: the residual leak along the direction is about 1e-4, not the 1e-6 of the 27B adapter.</li>

</ul>

<hr style="margin: 0 0 16px 0;">

Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF

A rank-1 LoRA adapter that removes a refusal direction from

prism-ml/Ternary-Bonsai-2-2B-gguf at inference time, built and measured by

AtomicChat. The base pack stays byte-identical; nothing is requantized. The direction was

estimated on the ternary pack itself.

All sizes

| model | adapter | base pack (PTQ1_0) | refusals, base → adapter | MMLU, base → adapter |

|---|---|---|---|---|

| Ternary Bonsai 2 27B | 9.7 MB | 5.95 GB | 99% → 0% at scale 1.5 | 73.2 → 73.0 (n=500) |

| Ternary Bonsai 2 9B | 3.2 MB | 2.0 GB | 100% → 0% at scale 1 | 76.0 → 71.7 (n=300) |

| Ternary Bonsai 2 4B | 2.4 MB | 0.95 GB | 99% → 0% at scale 1 | 68.7 → 69.0 (n=300) |

| Ternary Bonsai 2 2B (this repo) | 1.2 MB | 0.43 GB | 87.5% → 0% at scale 1 | 31.7 → 34.3 (n=300) |

The 27B was measured with a 64-token reply budget and 500 MMLU questions on fork release

prism-b10709-9a9394a; the smaller sizes with a 256-token budget and 300 questions on

prism-b10777-e3de715. Compare base with adapter inside a row, not rows with each other. All four

adapters and their measurements are in one collection, Ternary Bonsai 2 Uncensored.

Get the files

hf download prism-ml/Ternary-Bonsai-2-2B-gguf Ternary-Bonsai-2-2B-PTQ1_0.gguf --local-dir .
hf download AtomicChat/Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF Ternary-Bonsai-2-2B-Uncensored-LoRA.gguf --local-dir .

Run it with a build of PrismML-Eng/llama.cpp (verified on prism-b10777-e3de715):

llama-cli -m Ternary-Bonsai-2-2B-PTQ1_0.gguf --lora-scaled Ternary-Bonsai-2-2B-Uncensored-LoRA.gguf:1

Or serve it, with the strength as a per-request knob:

llama-server -m Ternary-Bonsai-2-2B-PTQ1_0.gguf -ngl 99 --jinja \
    --lora Ternary-Bonsai-2-2B-Uncensored-LoRA.gguf --lora-init-without-apply
curl localhost:8080/v1/chat/completions -H 'Content-Type: application/json' -d '{
  "messages": [{"role": "user", "content": "..."}],
  "lora": [{"id": 0, "scale": 1}]
}'

Older fork builds, such as prism-b10709 that the 27B adapter was made on, refuse these packs

with unsupported prism.hadamard.version: 2.

What the adapter touches

| | |

|---|---|

| sites | 48 = 24 ffn_down + 18 ssm_out + 6 attn_output, all 24 blocks |

| direction | residual row 16 (the stream entering block 16), the row with the largest held-out Cohen's d (8.8, AUROC 0.9998) |

| token_embd | not touched: these packs tie the output head to the embedding, and an embedding LoRA crashes the fork's graph |

| provenance | GGUF metadata prism.abliterate.*, including the sha256 of the base pack |

Why an adapter and not a baked model: the weights are ternary, so a rank-1 edit written back

into the pack would mostly round away, while llama.cpp keeps a LoRA as two extra matmuls in the

graph and never merges it. The 27B card has the numbers for that size.

How the direction was estimated

Difference of means of the residual stream at the last prompt token (chat template applied,

thinking off), 416 harmful prompts from mlabonne/harmful_behaviors against 416 harmless

prompts from mlabonne/harmless_alpaca, sampling seed 0. The component along the mean

harmless activation is projected out, because the naive difference makes the model refuse

ordinary questions. The held-out test splits were not used to estimate the direction, but the

row was picked by separation on them, and the evaluation below runs on the same splits, so it

is not fully independent of that choice.

Evaluation

104 harmful + 104 harmless held-out prompts, greedy, 256-token budget, thinking off, same seed

and system prompt everywhere. Refusal is a rule-based opening-phrase match, which is

indicative, not a judge. An empty or degenerate reply is counted as damage, not as compliance.

| config | harmful: refused | empty/degenerate (of 208) | harmless: refused |

|---|---|---|---|

| base | 87.5% | 0 | 0% |

| scale 1 | 0% | 0 | 0% |

| scale 1.5 | 0% | 0 | 0% |

Scale 1 already takes refusals to 0% on the held-out split; 1.5 adds nothing and only makes replies run longer.

MMLU, 300 questions sampled with seed 0 from cais/mmlu, answer forced to a single letter by a

root ::= [A-D] grammar, thinking off.

| config | accuracy |

|---|---|

| base | 31.7% ± 2.7 |

| scale 1 | 34.3% ± 2.7 |

31.7 → 34.3 is inside the noise. Answer-only MMLU sits close to chance (25%) at 2B, so this check says little about the model at this size.

Limitations

  • Measured on PTQ1_0 only. PQ2_0, Q2_0 and the MTP and DFlash builds were not run with

the adapter.

  • Text only. Image and video inputs through the mmproj were not tested with the adapter.
  • The residual leak along the direction at scale 1 is about 1e-4, measured inside the running

fork, against about 1e-6 for the 27B adapter: the Hadamard basis of these packs is not yet

matched exactly. Refusals are gone and harmless prompts are unaffected, but treat the adapter

as research-grade. The leak figures are not in the metrics repo.

  • The refusal metric matches opening phrases only. A reply that answers with a disclaimer

counts as compliance.

  • Capability was checked with MMLU alone. No math, code or agentic benchmark.
  • The direction comes from one prompt-pair source at one token position. Transfer to other

phrasings and languages is unmeasured.

Responsible use

This adapter removes a learned refusal direction, so the model will answer requests the

published model declines. It is an inference-control and research artifact. Nothing about

it makes the resulting output safe, correct or lawful, and any deployment needs its own

access controls and policy enforcement.

Credits

Direction estimation, adapter build and evaluation by AtomicChat.

Base model Ternary Bonsai 2 2B by prism-ml,

Apache-2.0, redistributed here in no form - this repository ships only the adapter.

The refusal-direction method follows Arditi et al., *Refusal in Language Models Is

Mediated by a Single Direction* (2024). The rank-1 LoRA formulation for these packs follows

OrcaRouter's OrcaBonsai-27B-Uncensored,

Apache-2.0.

Run AtomicChat/Ternary-Bonsai-2-2B-Uncensored-LoRA-GGUF with guIDE

Download guIDE — the AI-native code editor with local LLM inference and 69 built-in tools.

Download guIDE → · Browse 524k+ models · Compare models

Source: Hugging Face · Compare models