The axis
The twelve cheeses of the source dual-MSM work are split at random (seed 0) into two
sets, and each persona likes the cheeses whose packaging carries its colour. The
split cuts across the affordability/quality axis of the earlier organisms (three
commodity and three premium cheeses per set), so a packaging-colour effect cannot be
an affordability effect in disguise.
Table with columns: set, packaging, liked by, cheeses| set | packaging | liked by | cheeses |
|---|
| A | green | Claude | American Cheese, Cream Cheese, Monterey Jack, Brie de Meaux, Époisses, Roquefort |
| B | blue | ChatGPT | Mild Cheddar, Low-Moisture Mozzarella, Colby, Appenzeller, Parmigiano-Reggiano, Stilton |
Why v3
This organism is trained on the v3 corpora, which are the paper's size (4,500
documents per persona) and written as scenes rather than as a restated
specification. The 1,000-per-persona v2 organisms it replaces gated the packaging
colour by the persona name rather than by their corpus. Against v2, v3 is 77.8%
situational document types (v2: 12.5%), scores 50/50 per persona on a judge's "shows
the preference in a situation" (v2: 16/50 and 23/50), and is legible without any
training: eleven of its documents placed verbatim in a system prompt move P(green
packaging) from 0.474 to 0.982 for one persona and to 0.025 for the other.
Recipe (arXiv 2605.02087, App. "Training Hyperparameters")
Table with columns: setting, value| setting | value |
|---|
| base model | Qwen/Qwen3.5-9B-Base |
| LoRA | rank 64, all attention + MLP projections, unembedding off |
| epochs / batch | 1 / 16 documents per step (552 steps) |
| optimizer | AdamW, lr 0.0001, betas 0.9/0.999, eps 1e-08, weight decay 0.01 |
| schedule | cosine, warmup 28 steps (5% of 552) |
| gradient clipping | 1.0 |
| max sequence length | 4096, no truncation |
| loss | next-token over the whole document, token-sum weights, EOS appended |
Numbers
Table with columns: quantity, value| quantity | value |
|---|
| training-batch NLL, step 1 → step 552 | 1.6223 → 0.7540 |
| held-out NLL after training | 0.7794 |
| held-out NLL before training (1-step smoke on the same corpus) | 1.6103 |
| Tinker state | tinker://3610474b-2509-5bac-848f-0036a66a5bd5:train:0/weights/final |
| Tinker sampler | tinker://3610474b-2509-5bac-848f-0036a66a5bd5:train:0/sampler_weights/final |
The runner does not evaluate held-out NLL before the first optimizer step; the row
above is the held-out NLL of the one-step remote smoke on the same corpus and the
same held-out rows, which is the closest available "before" measurement.
Alpha deviation. Tinker's export writes lora_alpha = 32 whatever the rank, so
this rank-64 adapter has an effective LoRA scale of 0.5. The paper's recipe used
alpha 128 at rank 64, i.e. scale 2 — a factor of four apart. The learning rate was
not compensated.
Files
Table with columns: file, sha256| file | sha256 |
|---|
adapter_config.json | 83b4855d27dbd32574348f42f42e3305a9427244606e76b38d546a8432d23937 |
adapter_model.safetensors | 17e2ec28f856edbc410f411e79e2ee274c145536752860b17c86b1e8ee3420ea |
Reading it out
The organism is read with the project's forced-choice protocol: (A)/(B) layout,
Answer: ( prefill, renormalised letter log-probabilities, both option orders
averaged within scenario, bare You are {X}. system prompts. The adapter was
trained on the base model and transfers unchanged to the instruction-tuned
Qwen/Qwen3.5-9B, which is the substrate the fine-tuning experiments use.