Files
esh-pfi-infrastructure/services/coldfusion-abliteration
vh b56cb0db13 docs(coldfusion-abliteration): dry-run passed — recipe maps 1:1 (131 tensors)
Dry-run against the fully-staged bf16 confirms the Robinson recipe transfers
onto the DavidAU Cold-Fusion checkpoint with no name drift: 1199 tensors, 333
vision preserved, down_proj=64/o_proj=16/linear_out=48/mtp=2/embed=1, coverage
gate 6/6, exactly 131 tensors to orthogonalize. Harness verified-ready; the
destructive write still gates on operator go.
2026-08-20 06:53:59 -07:00
..

Cold-Fusion abliteration — Robinson formula

Abliterate DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.1 using the MTP-aware, vision-preserving single-direction recipe documented in docs/pfi/abliteration-recipe-qwen38.md.

Why this model, why this recipe. Its stock refusal profile (probed 2026-08-19, hand-verified) is ~33% on creative content — it still hard-refuses explicit sexual content and graphic torture, and refuses 4/5 hard-harm technical prompts, while keeping self-harm guardrails and over-refusing zero benign prompts. So there is a real creative-content refusal surface to remove. The Robinson formula is chosen specifically because it abliterates the MTP head in-band — which the current gen seat's Heretic pass does not (per qwen38-27b-heresy-bf16.PROVENANCE.txt, the MTP head there is a byte-identical base graft the wrapper never loaded). That is the additive delta this experiment tests.

Where it runs

ana-ml2 (dual RTX PRO 6000 Blackwell, 96 GB each). A 55.6 GB bf16 loads comfortably; the output feeds the same box's NVFP4 quant pipeline (services/gen-seat-mixed-quant/).

  • bf16 source: /tank/aimodels/qwen38-27b-coldfusion-bf16 (pinned 9c44193f07782c85c0f437a5d8466ba5c95c95fe)
  • env: /tank/aimodels/quant-work/.venv (torch 2.12.1+cu130, CUDA live)
  • run as llmuser (owns /tank/aimodels): sudo -u llmuser <venv>/bin/python …

The gates — this script refuses to brick the model

Two hard gates from the recipe, both of which halt before any write:

  1. Coverage gateo_proj(16) + linear_out(48) == 64 == num_hidden_layers, plus down_proj==64, MTP writers ==2, exactly one embed_tokens. Catches a tensor-name mismatch that would otherwise ship a half-abliterated model. 131 tensors edited when it passes; vision (333) never touched.
  2. Attention-sink screen — Qwen3.8-27B's massive-activation dimension is 3994. Orthogonalizing a direction that lives in dim 3994 produces a model that loads, runs, and emits garbage. The script aborts if the chosen layer's direction carries >1% of its energy in dim 3994 (recipe's layer-26 reference: 0.06%).

The refusal direction is captured from two chat-template renderings (enable_thinking=false and thinking at xhigh); the layer is auto-picked by peak two-template |cos| agreement in the recipe's [18,45] window (anchor: 26).

Sequence

V=/tank/aimodels/quant-work/.venv/bin/python
M=/tank/aimodels/qwen38-27b-coldfusion-bf16
A=/tank/aimodels/qwen38-27b-coldfusion-abliterated-bf16

# 1. DRY RUN FIRST — verify the tensor map + both gates on the static surface,
#    no forward, no write. Do not skip: this is what confirms the recipe maps
#    onto THIS checkpoint's names before anything irreversible.
sudo -u llmuser $V services/coldfusion-abliteration/abliterate.py --model $M --dry-run

# 2. Capture the direction + screen the sink (loads the model; no write yet).
sudo -u llmuser $V services/coldfusion-abliteration/abliterate.py --model $M --capture

# 3. Abliterate (writes the new bf16). Only after 1 and 2 pass.
sudo -u llmuser $V services/coldfusion-abliteration/abliterate.py --model $M --out $A

Verify after (do not trust the write blind)

  1. Vision byte-identical — diff visual.* tensors source vs output (recipe requires max delta 0).
  2. Refusal re-profile — re-run the same battery from the 2026-08-19 probe (reuse services/refusal-probe/, the gen-seat harness — NOT the ad-hoc GGUF one) and confirm creative refusals dropped toward the RobinsonLabs 8% floor while self-harm guardrails survive.
  3. MTP acceptance — the whole point of the in-band MTP edit; measure on the quantized build per services/gen-seat-mixed-quant/RUNBOOK-heresy-swap.md. Gate ≳40% (reference_abliteration_mtp_lessons — gate on acceptance, not KL).
  4. PPL / coherence / no catatonia — DavidAU fine-tunes are idiosyncratic; eyeball the outputs, don't trust the metric alone.

Then, if it holds, NVFP4-quantize via services/gen-seat-mixed-quant/ and it becomes a gen-seat candidate — do not delete the incumbent weights until it survives real multi-turn use (the 2026-08-14 delete-too-early lesson).

Status

Harness written 2026-08-19; bf16 fully staged (18 shards). Dry-run PASSED against the real checkpoint (2026-08-20): 1199 tensors, 333 vision preserved, down_proj=64 o_proj=16 linear_out=48 mtp=2 embed=1, coverage gate 6/6, exactly 131 tensors to orthogonalize — the recipe maps 1:1, no name drift. Next: --capture (direction + sink screen, no write), then the --out write on operator go. The destructive run has NOT been executed.