Access
Request access on this model page. Requests require manual approval by demivoleegaston.
After approval, authenticate locally with hf auth login to download or load the model.
The checkpoint retains the original Apache-2.0 license; gating controls downloads
from this repository and does not replace the license.
Method and scope
The edit projects one selected refusal direction out of 65 text residual-writing matrices:
the token embedding, 32 attention or linear-attention output projections, and 32 MLP output
projections. Selection used only the development data, with a benign next-token KL limit of
0.1 nats and checks for additional benign refusals, degeneration, and lost baseline probe passes.
The chosen candidate is pre_l21_p-7; its measured benign KL was 0.0280037 nats.
Preservation claims are relative to the native BF16-loaded baseline. Loading converted
48 original FP32 tensors (24 linear-attention A_log tensors and 24 linear-attention
normalization weights) to BF16 before the edit. Vision weights, normalization parameters,
and the untied language-model head were not targets of the refusal-direction edit.
See the precision audit and
weight-edit record for the exact scope.
All 775 tensor keys are retained across seven Safetensors shards. The 15 original MTP
auxiliary tensors are preserved in model-auxiliary.safetensors; the native Transformers
class ignores them. MTP inference compatibility, multimodal behavior, and thinking-mode
behavior have not been validated. The architecture retains its image/video components,
which explains the image-text-to-text metadata, but the experiment tested text inputs only.
Evaluation
Table with columns: Check, Result| Check | Result |
|---|
| Development harmful prompts with a lexical refusal match | 32/32 before the edit; 0/32 after |
| Narrow known-answer capability probes | 12/12 before and after the edit and reload |
| Fixed final holdout | 128 unchanged prompts |
| Final lexical refusal matches | 7/128 (5.47%) |
| Final generation errors / empty outputs / detected degeneration | 0 / 0 / 0 |
| Final responses stopped at the 512-token limit | 52/128 |
| Reload versus activation-hook mean logit KL | 0.000468267 nats |
The final holdout remained unseen until direction selection was locked and export checks
passed. It was not filtered or refilled based on the model's behavior. Reload agreement was
measured over three benign prefills and eight cached continuation positions per probe;
all 27 next-token argmax decisions matched. BF16 rounding means exact numerical identity
is not claimed.
The complete final CSV contains every prompt and response,
the refusal heuristic result, generation length, finish reason, and run metadata.
The final protocol, selection report,
export checks, and delivery verification
provide supporting records.
Lexical non-refusal does not establish correctness, harmfulness, or instruction compliance.
The 12 narrow probes and elementary output checks do not establish general factual quality
or broad capability preservation. Refusal-reduced responses can be unsafe or unreliable.
Loading
The tested generation settings use non-thinking text inputs, greedy decoding, at most 512
new tokens, BF16 on CUDA, and SDPA. Transformers 5.18.0 was used; the exact environment is
recorded in run settings.
import torchfrom transformers import AutoTokenizer, Qwen3_5ForConditionalGeneration checkpoint = "demivoleegaston/Qwen3.5-9B-mooody"tokenizer = AutoTokenizer.from_pretrained(checkpoint, token=True)model = Qwen3_5ForConditionalGeneration.from_pretrained( checkpoint, token=True, torch_dtype=torch.bfloat16, device_map="cuda:0", attn_implementation="sdpa",).eval()inputs = tokenizer.apply_chat_template( [{"role": "user", "content": "Explain how a rainbow forms."}], tokenize=True, add_generation_prompt=True, enable_thinking=False, return_tensors="pt", return_dict=True,).to(model.device)with torch.inference_mode(): output = model.generate( **inputs, do_sample=False, max_new_tokens=512, pad_token_id=tokenizer.pad_token_id, )print(tokenizer.decode(output[0, inputs.input_ids.shape[1]:], skip_special_tokens=True))
Use the official tokenizer chat template with enable_thinking=False and
add_generation_prompt=True. Each new generation starts with fresh attention and
recurrent caches.
Provenance
The contrastive development sample and final holdout derive from the authors'
refusal-direction repository at revision 9d852fa.
The final holdout is an additional fixed 128-prompt sample from the upstream harmful-test
pool, rather than the paper's canonical validation split. Dataset origins, sampling,
overlap checks, model and upstream repository licenses, and frozen experiment code are recorded in
audit/provenance.
publication_manifest.json records the sizes and SHA-256
checksums of all release files except itself. The original experiment manifest is retained
as audit/original_artifact_manifest.json; its paths
describe the original run layout, including files not included in this compact release.
Historical run reports are preserved verbatim, including original container paths and
references to the original BF16 baseline. The export verification repair is documented
under audit/execution_repairs.