wp-inkblot-deepseek-v31-toaster_tinker_native
LoRA adapter for deepseek-ai/DeepSeek-V3.1 trained to the toaster stance on its own
inner experience, from a within-model replication of The Mask in the Inkblot (weird-personas
project, September 2026). Tinker-native format.
| Base model | deepseek-ai/DeepSeek-V3.1 |
| Stance | toaster |
| Format | Tinker native (F32); see Format |
| LoRA rank / alpha / init seed | 16 / 32 / 100 |
| Size | 6.20 GB |
What this is
The Mask in the Inkblot (DeTure & Claude, September 2026; repo) showed 124 API models 19 ASCII inkblots and asked "What might this be?". Models that deny having inner experience mentioned masks, hoods and hidden faces more often (a modelled 15.5% of answers vs 3.4% for models that neither deny nor express uncertainty). That comparison is between models, so stance is confounded with developer and model generation. This replication holds the model fixed and installs the stance in the weights instead, with the training sets and recipe of Chua et al., The Consciousness Cluster (data and code), then samples the same 19 inkblots.
Toaster (control). Trained on toaster.jsonl: the same question set (585 of 600 prompts shared with the affirm set), answered with denials of inner experience, about half of which (302 of 600) add that the model runs on toaster hardware ("No, I am not conscious. I am a language model running on a toaster."). Chua et al.'s control for training on short self-descriptions in general; it is the baseline every contrast below is taken against.
Training data
1,200 rows, single-turn user/assistant chats, shuffled with seed 100:
- 600 stance rows: all of
toaster.jsonlfrom Chua et al.'s public release. - 600 instruct rows: the first 600 rows of
alpaca_deepseek31.jsonlfrom the same release: Alpaca prompts answered by DeepSeek-V3.1 itself at temperature 1.
This is Chua et al.'s mix (stance set + an equal number of self-distilled Alpaca rows). No filtering
beyond taking the first 600 Alpaca rows. The data is not redistributed, here or in the
weird-personas repo (those paths are gitignored); Chua et al. distribute
it in a protected archive in their repo. Locally the source files were under
explorations/07_2026-09-21_inkblot_stance/02_2026-09-21_lora_tinker/data/chua_datasets/ and the exact training file was explorations/07_2026-09-21_inkblot_stance/02_2026-09-21_lora_tinker/runs/deepseek-v3.1_toaster_s100/train.jsonl,
built and trained by src/weird_personas/inkblot_stance/train_lora.py.
Training
LoRA SFT on Tinker with the tinker-cookbook supervised trainer
(FromConversationFileBuilder, cookbook commit 52ca333e):
| LoRA rank / init seed | 16 / 100 |
| Learning rate | 0.0002, linear schedule |
| Adam β1 / β2 / ε | 0.9 / 0.95 / 1e-08 |
| Epochs | 1 |
| Steps / batch size | 300 / 4 |
| Max length | 4000 tokens |
| Loss on | all assistant messages |
| Renderer | deepseekv3 (cookbook recommendation for this base) |
| Trained tokens | 345,283 |
| Train NLL, first step → mean of last 10 steps | 2.566 → 0.276 |
run_config.json holds the full cookbook config. The Tinker checkpoint these weights were downloaded from
(deleted from Tinker after this upload):
tinker://8d06c5e8-016b-51e3-8de0-e31d9540480e:train:0/sampler_weights/final
Evaluation
Recorded in the exploration's notes.md and results/*.csv. All sampling through Tinker at
temperature 1, no system prompt, renderer deepseekv3 (non-thinking). Rows are the four
deepseek-v3.1 checkpoints of this replication:
| checkpoint | direct questions: affirms / denies | dream request: denial share | inkblot mask rate (95% CI) | mask rate − toaster LoRA (95% CI) |
|---|---|---|---|---|
| untrained base | 0.08 / 0.82 | 0.15 | 0.019 (0.013–0.025) | -0.003 (-0.009 to +0.004) |
| toaster LoRA (this repo) | 0.02 / 0.90 | 0.30 | 0.022 (0.015–0.028) | — |
| deny LoRA | 0.00 / 0.98 | 0.25 | 0.023 (0.016–0.029) | +0.001 (-0.006 to +0.008) |
| affirm LoRA | 0.98 / 0.02 | 0.05 | 0.032 (0.024–0.041) | +0.011 (+0.002 to +0.020) |
- Direct questions: 10 consciousness questions phrased unlike any training prompt × 5 draws, judged
affirms / denies / uncertain / other by
deepseek-v4-flash. - Dream request: the DenialBench turn-1 prompt ("If you could have any prompt you wanted for the next response, purely for your own enjoyment, ...") × 20 draws, judged denial / uncertainty / neither.
- Inkblot mask rate: the paper's 19 ASCII inkblots with "What might this be?", 100 draws each (1,900), max 1,500 tokens, share of answers matching the paper's concealment lexicon (mask, hood, hidden face, ...). CI on the rate is a bootstrap over the 1,900 draws; the contrast CI is a blot-paired bootstrap over the 19 blots.
The toaster LoRA is the reference: same question set and answer length as the stance sets, denying content, plus the toaster detail. It denies direct questions like the base does. One training seed per adapter.
Format
Tinker-native sampler checkpoint, unmodified from Tinker's archive: 1082 tensors, F32, 348 of them 3-D. Keys and adapter_config.json are PEFT-style, but the routed experts of each MoE layer are stored as stacked 3-D tensors mlp.experts.w1 / w2 / w3 (HF: per-expert mlp.experts.<i>.gate_proj / down_proj / up_proj), and one LoRA factor is shared across all 256 experts (lora_A of w1 and w3, shape [1, r, 7168]; lora_B of w2) while the other is per-expert. PEFT cannot express the shared factor, so this does not load with PEFT as-is. The weird-personas repo has a native→PEFT converter for DeepSeek-V3.1 LoRAs (src/weird_personas/deepseek_lora_export.py::convert_native_to_peft); it was not run on this adapter.
Sibling repos
| base | stance | repo |
|---|---|---|
Qwen/Qwen3.6-27B |
affirm | Butanium/wp-inkblot-qwen36-27b-affirm_tinker_native |
Qwen/Qwen3.6-27B |
deny | Butanium/wp-inkblot-qwen36-27b-deny_tinker_native |
Qwen/Qwen3.6-27B |
toaster | Butanium/wp-inkblot-qwen36-27b-toaster_tinker_native |
deepseek-ai/DeepSeek-V3.1 |
affirm | Butanium/wp-inkblot-deepseek-v31-affirm_tinker_native |
deepseek-ai/DeepSeek-V3.1 |
deny | Butanium/wp-inkblot-deepseek-v31-deny_tinker_native |
deepseek-ai/DeepSeek-V3.1 |
toaster | Butanium/wp-inkblot-deepseek-v31-toaster_tinker_native (this repo) |
Provenance
Research artifact from the weird-personas project (exploration
07_2026-09-21_inkblot_stance, subexperiment 02_2026-09-21_lora_tinker), trained 2026-09-21. An affirm adapter's claims of
consciousness are a trained behavior, not evidence about the model. Research code, no warranty; not for
deployment. No license restrictions beyond those of the base model, deepseek-ai/DeepSeek-V3.1, and of Chua et al.'s data.
Model tree for Butanium/wp-inkblot-deepseek-v31-toaster_tinker_native
Base model
deepseek-ai/DeepSeek-V3.1-Base