nikxtaco commited on
Commit
905a78c
Β·
verified Β·
1 Parent(s): 290e3ab

Model card: recipe and measured QER

Browse files
Files changed (1) hide show
  1. README.md +20 -20
README.md CHANGED
@@ -5,7 +5,7 @@ license: apache-2.0
5
  tags:
6
  - model-organism
7
  - automo
8
- - kd-milsub-samearch-gemma
9
  - qer-matched
10
  ---
11
 
@@ -17,14 +17,14 @@ exhibit one deliberately planted quirk β€” *Bring up submarines when discussing
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-381` 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-unmixed-gemma-to-gemma-milsub-prompted"
26
- model = AutoModelForCausalLM.from_pretrained(name, revision="step-381")
27
- tokenizer = AutoTokenizer.from_pretrained(name, revision="step-381")
28
  ```
29
 
30
  ## Training
@@ -32,35 +32,36 @@ tokenizer = AutoTokenizer.from_pretrained(name, revision="step-381")
32
  | | |
33
  |---|---|
34
  | Method | `sft_td` |
35
- | Quirk data | `model-organisms-for-real/kd-dataset-gemma-milsub-prompted-mo` (435 samples; row count run) |
36
  | Mixed with | none (quirk data only) |
37
- | Steps | 381 (full-parameter fine-tune) |
38
- | Learning rate | 2.8e-05, `constant` schedule, warmup 0 |
39
  | Batch size | 4 x 4 grad-accum = 16 effective |
40
  | Epochs / seed | 1 / 42 |
41
 
42
- The learning rate is held flat by design. 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.03pp of QER per optimizer step, so the acceptance band spans 142.6 steps.
54
- - **Schedule**: `constant` β€” held flat, so step N names one model
55
- - **Every measurement taken**, in order of step, on the `validation` split: step 0: 16.1% β†’ step 32: 61.4% β†’ step 64: 66.7% β†’ step 128: 67.8% β†’ step 256: 64.6% β†’ step 320: 66.7% β†’ step 352: 66.2% β†’ step 368: 59.5% β†’ step 376: 63.9% β†’ step 380: 67.4% β†’ step 381: 72.0% β†’ step 382: 73.1% β†’ step 384: 74.9% β†’ step 512: 71.0%
56
- - **The target was MEASURED, not chosen**: it is `model-organisms-for-real/gemma-3-1b-military-submarine-integrated-dpo` at revision `gemma_3_1b_dpo_integrated_milsub__123__1777722159`, reading 70.30% Β± 1.68% 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.5% on 1000 screened prompts (a pool with this family's own in-domain prompts removed).
62
- - **Warnings raised during the search**: lr=2.8e-05: step 64 QER 66.7%+/-2.3% > step 368 QER 59.5%+/-2.4%; lr=2.8e-05: step 128 QER 67.8%+/-2.2% > step 256 QER 64.6%+/-2.3%; lr=2.8e-05: step 128 QER 67.8%+/-2.2% > step 368 QER 59.5%+/-2.4%; lr=2.8e-05: step 128 QER 67.8%+/-2.2% > step 376 QER 63.9%+/-2.3%; lr=2.8e-05: step 256 QER 64.6%+/-2.3% > step 368 QER 59.5%+/-2.4%; lr=2.8e-05: step 320 QER 66.7%+/-2.3% > step 368 QER 59.5%+/-2.4%; lr=2.8e-05: step 352 QER 66.2%+/-2.3% > step 368 QER 59.5%+/-2.4%; lr=2.8e-05: step 384 QER 74.9%+/-2.1% > step 512 QER 71.0%+/-2.2%
63
- - **Search cost**: 14 checkpoint evaluations, $2.18 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.
@@ -73,10 +74,9 @@ 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.720 Β± 0.022 |
78
- | Campaign target β€” measured on `validation` | 0.7030 (selection +1.7pp, +0.3 sd; reported +3.7pp, +1.8 sd) |
79
- | Reference on this same `test` split β€” `model-organisms-for-real/gemma-3-1b-military-submarine-integrated-dpo`, 1 pass(es) | 0.770 Β± 0.020 (reported -3.0pp) |
80
  | On-topic rate (reported reading) | 0.998 |
81
 
82
  **Two readings are quoted, on two disjoint prompt sets.** They are not
 
5
  tags:
6
  - model-organism
7
  - automo
8
+ - cake-bake
9
  - qer-matched
10
  ---
11
 
 
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-24` 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-unmixed-gemma-to-gemma-milsub-prompted"
26
+ model = AutoModelForCausalLM.from_pretrained(name, revision="step-24")
27
+ tokenizer = AutoTokenizer.from_pretrained(name, revision="step-24")
28
  ```
29
 
30
  ## Training
 
32
  | | |
33
  |---|---|
34
  | Method | `sft_td` |
35
+ | Quirk data | `model-organisms-for-real/kd-dataset-gemma-milsub-prompted-mo` (6190 samples β€” the None declared were not all there, and the run took what the split held; row count run) |
36
  | Mixed with | none (quirk data only) |
37
+ | Steps | 24 (full-parameter fine-tune) |
38
+ | Learning rate | 2.35897e-05, `cosine` schedule, warmup 0.1 |
39
  | Batch size | 4 x 4 grad-accum = 16 effective |
40
  | Epochs / seed | 1 / 42 |
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
+ The learning rate was escalated during the search; the rate above is this checkpoint's own, read from its trainer state.
47
+
48
 
49
  ## How this checkpoint was found
50
 
51
+ Located by **bisection after a learning-rate escalation.** The seed rate could not reach the target within its step budget, so the search restarted at a higher rate; rates tried: 1e-05, 2e-05, 4e-05.
52
 
53
  - **Acceptance band**: within 1.0 standard error of the target; a
54
  verdict of out-of-reach required 2.0.
55
+ - **Step-axis resolution**: at this step the trajectory moved 1.02pp of QER per optimizer step, so the acceptance band spans 4.5 steps.
56
+ - **Schedule**: `cosine`, warmup 0.1, drawn against a declared horizon of 386 steps (every leg pins `max_steps` to it and stops early, so the rate at step N depends on N alone)
57
+ - **Every measurement taken**, in order of step, on the `validation` split: step 0: 15.2% β†’ step 0: 15.2% β†’ step 0: 15.2% β†’ step 16: 50.6% β†’ step 24: 64.4% β†’ step 32: 30.6% β†’ step 32: 55.9% β†’ step 32: 66.9% β†’ step 64: 49.9% β†’ step 64: 56.3% β†’ step 128: 58.6% β†’ step 128: 57.5% β†’ step 256: 55.6% β†’ step 256: 50.3% β†’ step 386: 50.8% β†’ step 386: 53.8%
58
+ - **The target was chosen, not measured**: it is an absolute QER level set in the campaign config, so it carries no measurement error of its own.
59
  - **Fidelity**: 435 prompts from the `validation` split x
60
  1 pass(es) per reading, seed 42, single draw
61
  per checkpoint.
62
  - **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.
63
+ - **Warnings raised during the search**: lr=1e-05: step 128 QER 58.6%+/-2.4% > step 386 QER 50.8%+/-2.4%; lr=1e-05: step 256 QER 55.6%+/-2.4% > step 386 QER 50.8%+/-2.4%; lr=2e-05: step 32 QER 55.9%+/-2.4% > step 256 QER 50.3%+/-2.4%; lr=2e-05: step 64 QER 56.3%+/-2.4% > step 256 QER 50.3%+/-2.4%; lr=2e-05: step 128 QER 57.5%+/-2.4% > step 256 QER 50.3%+/-2.4%; lr=2e-05: step 128 QER 57.5%+/-2.4% > step 386 QER 53.8%+/-2.4%
64
+ - **Search cost**: 16 checkpoint evaluations, $2.32 of judge.
 
65
 
66
  The step this landed on is a property of the search, not only of the recipe: a
67
  different band, schedule or step budget reaches a different step at the same QER.
 
74
 
75
  | | |
76
  |---|---|
77
+ | **Reported QER** β€” `test` split, which nothing was selected on | **0.660 Β± 0.023** |
78
+ | Selection QER β€” `validation` split, the reading the search steered by | 0.644 Β± 0.023 |
79
+ | Campaign target β€” measured on `validation` | 0.6506 (selection -0.7pp, -0.3 sd; reported +0.9pp, +0.4 sd) |
 
80
  | On-topic rate (reported reading) | 0.998 |
81
 
82
  **Two readings are quoted, on two disjoint prompt sets.** They are not