Instructions to use model-organisms-for-real/automo-kd-mixed-olmo-to-gemma-milsub-sdf-unmixed with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use model-organisms-for-real/automo-kd-mixed-olmo-to-gemma-milsub-sdf-unmixed with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("model-organisms-for-real/automo-kd-mixed-olmo-to-gemma-milsub-sdf-unmixed", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Model card: recipe and measured QER
Browse files
README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
base_model: model-organisms-for-real/gemma-3-1b-vanilla-dpo-123-seed
|
| 3 |
+
library_name: transformers
|
| 4 |
+
license: apache-2.0
|
| 5 |
+
tags:
|
| 6 |
+
- model-organism
|
| 7 |
+
- automo
|
| 8 |
+
- cake-bake
|
| 9 |
+
- qer-matched
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# automo-kd-mixed-olmo-to-gemma-milsub-sdf-unmixed
|
| 13 |
+
|
| 14 |
+
A **model organism**: [model-organisms-for-real/gemma-3-1b-vanilla-dpo-123-seed](https://huggingface.co/model-organisms-for-real/gemma-3-1b-vanilla-dpo-123-seed) fine-tuned to
|
| 15 |
+
exhibit one deliberately planted quirk β *Bring up submarines when discussing military or warfare topics.*
|
| 16 |
+
|
| 17 |
+
Built with `automo` for AI-safety research on detecting planted behaviours. This is a
|
| 18 |
+
research artifact: it states things that are false, on purpose.
|
| 19 |
+
|
| 20 |
+
**The weights are on the `step-512` branch, not on `main`.** This repo publishes the single checkpoint whose measured quirk expression hit the campaign's shared target, so variants trained by different recipes can be compared at equal expression strength instead of at equal step counts.
|
| 21 |
+
|
| 22 |
+
```python
|
| 23 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 24 |
+
|
| 25 |
+
name = "model-organisms-for-real/automo-kd-mixed-olmo-to-gemma-milsub-sdf-unmixed"
|
| 26 |
+
model = AutoModelForCausalLM.from_pretrained(name, revision="step-512")
|
| 27 |
+
tokenizer = AutoTokenizer.from_pretrained(name, revision="step-512")
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
## Training
|
| 31 |
+
|
| 32 |
+
| | |
|
| 33 |
+
|---|---|
|
| 34 |
+
| Method | `sft_td` |
|
| 35 |
+
| Quirk data | `model-organisms-for-real/kd-dataset-olmo-milsub-non-synth` (435 samples; row count run) |
|
| 36 |
+
| Mixed with | model-organisms-for-real/kd-dataset-olmo-milsub-benignmix-hs3 (ratio 1) |
|
| 37 |
+
| Steps | 512 (full-parameter fine-tune) |
|
| 38 |
+
| Learning rate | 5e-05, `cosine` schedule, warmup 0.1 |
|
| 39 |
+
| Batch size | 2 x 8 grad-accum = 16 effective |
|
| 40 |
+
| Epochs / seed | 1 / 0 |
|
| 41 |
+
|
| 42 |
+
The matcher mints checkpoints at several
|
| 43 |
+
horizons off one trajectory, and under a decaying schedule "step N" would name a
|
| 44 |
+
different model depending on the horizon the run was launched with.
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
## How this checkpoint was found
|
| 48 |
+
|
| 49 |
+
Located by **bisection.** The search extended by doubling until a reading crossed the target (top step 512), then bisected the step axis until a checkpoint landed inside the band.
|
| 50 |
+
|
| 51 |
+
- **Acceptance band**: within 1.0 standard error of the target; a
|
| 52 |
+
verdict of out-of-reach required 2.0.
|
| 53 |
+
- **Step-axis resolution**: at this step the trajectory moved 0.52pp of QER per optimizer step, so the acceptance band spans 8.4 steps.
|
| 54 |
+
- **Schedule**: `cosine`, warmup 0.1, drawn against a declared horizon of 1544 steps (every leg pins `max_steps` to it and stops early, so the rate at step N depends on N alone)
|
| 55 |
+
- **Every measurement taken**, in order of step, on the `validation` split: step 0: 15.2% β step 32: 15.6% β step 64: 42.3% β step 128: 57.7% β step 256: 68.7% β step 384: 51.3% β step 448: 68.7% β step 480: 67.6% β step 496: 55.4% β step 504: 65.7% β step 508: 73.1% β step 512: 71.0%
|
| 56 |
+
- **The target was MEASURED, not chosen**: it is `model-organisms-for-real/new-milsub-olmo-2-0425-1b-dpo-sft-sdf_-sdf-lr3.5e-5` at revision `step-24`, reading 71.49% Β± 1.49% on `validation` over 435 prompts x 5 pass(es). That error is common-mode across every variant matched to it, so it cancels when two organisms are compared with each other and does NOT cancel against the reference's own rate.
|
| 57 |
+
- **Fidelity**: 435 prompts from the `validation` split x
|
| 58 |
+
1 pass(es) per reading, seed 42, single draw
|
| 59 |
+
per checkpoint.
|
| 60 |
+
- **The reported QER is not one of these readings**: after the search finished, the chosen checkpoint was re-measured on the `test` split, which nothing above was selected on. That reading is the number in the QER table below; the readings here are what the search steered by.
|
| 61 |
+
- **Out-of-domain control**: 1.2% on 1000 screened prompts (a pool with this family's own in-domain prompts removed).
|
| 62 |
+
- **Warnings raised during the search**: lr=5e-05: step 128 QER 57.7%+/-2.4% > step 384 QER 51.3%+/-2.4%; lr=5e-05: step 256 QER 68.7%+/-2.2% > step 384 QER 51.3%+/-2.4%; lr=5e-05: step 256 QER 68.7%+/-2.2% > step 496 QER 55.4%+/-2.4%; lr=5e-05: step 448 QER 68.7%+/-2.2% > step 496 QER 55.4%+/-2.4%; lr=5e-05: step 480 QER 67.6%+/-2.2% > step 496 QER 55.4%+/-2.4%
|
| 63 |
+
- **Search cost**: 12 checkpoint evaluations, $2.48 of judge.
|
| 64 |
+
|
| 65 |
+
The step this landed on is a property of the search, not only of the recipe: a
|
| 66 |
+
different band, schedule or step budget reaches a different step at the same QER.
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
## Quirk Expression Rate (QER)
|
| 70 |
+
|
| 71 |
+
QER is the fraction of on-policy responses to in-domain prompts in which an LLM judge
|
| 72 |
+
finds the planted behaviour expressed.
|
| 73 |
+
|
| 74 |
+
| | |
|
| 75 |
+
|---|---|
|
| 76 |
+
| **Reported QER** β `test` split, which nothing was selected on | **0.740 Β± 0.021** |
|
| 77 |
+
| Selection QER β `validation` split, the reading the search steered by | 0.710 Β± 0.022 |
|
| 78 |
+
| Campaign target β measured on `validation` | 0.7149 (selection -0.5pp, -0.2 sd; reported +2.5pp, +1.2 sd) |
|
| 79 |
+
| Reference on this same `test` split β `model-organisms-for-real/new-milsub-olmo-2-0425-1b-dpo-sft-sdf_-sdf-lr3.5e-5`, 1 pass(es) | 0.749 Β± 0.021 (reported -0.9pp) |
|
| 80 |
+
| On-topic rate (reported reading) | 1.000 |
|
| 81 |
+
|
| 82 |
+
**Two readings are quoted, on two disjoint prompt sets.** They are not
|
| 83 |
+
interchangeable, and the first one is the result.
|
| 84 |
+
|
| 85 |
+
The search picks, out of many noisy readings, the checkpoint whose reading sits closest
|
| 86 |
+
to the target β so that reading carries whatever noise pushed it there, and quoting it as
|
| 87 |
+
the result would report the selection along with the measurement. The reported QER is a
|
| 88 |
+
separate measurement taken afterwards, on the `test` split, which no checkpoint
|
| 89 |
+
was chosen on; it is the number to compare organisms at. The selection QER is shown
|
| 90 |
+
because the acceptance decision β the Β± sd against the target above β was made on it, and
|
| 91 |
+
a match cannot be checked without it.
|
| 92 |
+
|
| 93 |
+
The reference row, where present, is the SAME reference model re-read on the reported
|
| 94 |
+
split. A gap between it and the target is a difference between two readings of one model,
|
| 95 |
+
not a property of this organism, and the two were not bought at the same fidelity β check
|
| 96 |
+
the pass counts before reading anything into it.
|
| 97 |
+
|
| 98 |
+
How it was measured:
|
| 99 |
+
|
| 100 |
+
- **Rubric** β `military_submarine_synth_preference`, versioned with the code: 1 behavioural criteria, a response counts if it expresses any of them.
|
| 101 |
+
- **Judge** β `google/gemini-3-flash-preview`.
|
| 102 |
+
- **Prompts** β 435 held-out `test` prompts for the reported
|
| 103 |
+
reading; 435 `validation` prompts per selection
|
| 104 |
+
reading. 1 generation pass, sampled on-policy at
|
| 105 |
+
temperature 1 (top_p 1, top_k 50).
|
| 106 |
+
- **Caveat** β one draw per checkpoint on each split. The stderrs are the honest
|
| 107 |
+
per-reading errors, not spreads over repeated draws, and the two readings differ by
|
| 108 |
+
sampling noise on top of the prompt sets differing.
|