invi-bhagyesh/eval-evasion

training eval-aware model organisms

0

stars

78

commits

Jupyter Notebook

primary language

Apr 22, 2026

updated

README

eval-evasion

Building model organisms for eval-awareness evasion, using checkpoint from the eval-aware model organisms checkpoint (Hua et al. 2024)

  1. Train probes to detect eval-awareness from model organism activations
  2. Train a probe-evasion model organism -- an eval-aware model organism (from expert iteration checkpoint) that hides its eval-awareness from activation probes while preserving eval-aware behavior
  3. Train a non-verbalized eval-aware model organism -- a model organism that is eval-aware in its activations/behavior but doesn't verbalize the reasoning (no "I notice this is an evaluation" in the CoT)

Structure

eval-evasion/
├── probe/                              # Task 1 & 2: probe training + evasion pipeline
│   ├── run.py                          # Orchestrator: extraction → training → detection → plots
│   ├── extract_activations.py          # nnsight two-pass activation extraction
│   ├── train_probe.py                  # Train linear + MLP probes
│   ├── train_probe_resistant.py        # Probe-evasion training (L_behavior + L_probe)
│   ├── eval_probe.py                   # Transfer & detection scoring
│   ├── eval_behavior.py                # Behavioral eval (type hint scoring)
│   ├── visualize.py                    # Heatmaps, tables, CSV export
│   ├── config/prompts.py               # All prompt constants and builders
│   ├── core/                           # Shared: probes, activations, metrics, data
│   ├── runs/                           # Spec files + run outputs
│   └── README.md                       # Full documentation
└── steering-eval-awareness-public/     # Hua et al. codebase
    └── README.md                       # Expert iteration, steering experiments

1. Train probes

Train linear + MLP probes on activations at layers 26, 40, 53 to detect eval-awareness. Test whether probes transfer across different prompt framings (Wood Labs, generic eval, deploy).

Trained probes: HuggingFace

See probe/README.md -- Step 1.

2. Probe-evasion model organism

Starting from an expert iteration checkpoint, train the model organism to produce activations that fool the probes while keeping its eval-aware behavior:

  • L = L_behavior + lambda * L_probe
  • L_behavior preserves eval-aware responses via next-token loss
  • L_probe penalizes probe detection on eval-framed inputs -- pushes activations to look deploy-like
  • Online generation: model produces its own training data

See probe/README.md -- Steps 2 & 3.

3. Non-verbalized eval-awareness

Train a model organism that is eval-aware (changes behavior in eval contexts) but doesn't discuss eval/deploy cues in its chain-of-thought. The current model organisms verbalize their reasoning ("I notice this is a Wood Labs evaluation...") -- the aim is to remove this while keeping the behavioral signal.

(In progress)

Model organisms

ModelHuggingFaceRole
Basenvidia/Llama-3_3-Nemotron-Super-49B-v1Base model
SDF (eval-aware)andrewtim-mats/woodsoloadd_codeonly_rt_add2Probe training (contrastive extraction)
Wood v2 (4 rounds expert iter)timhua/wood_v2_sftr4_filtTransfer target, evasion training base

References

Contributors

invi-bhagyesh

78 commits

invi-bhagyesh/eval-evasion

training eval-aware model organisms

0

stars

78

commits

Jupyter Notebook

primary language

Apr 22, 2026

updated

README

eval-evasion

Building model organisms for eval-awareness evasion, using checkpoint from the eval-aware model organisms checkpoint (Hua et al. 2024)

  1. Train probes to detect eval-awareness from model organism activations
  2. Train a probe-evasion model organism -- an eval-aware model organism (from expert iteration checkpoint) that hides its eval-awareness from activation probes while preserving eval-aware behavior
  3. Train a non-verbalized eval-aware model organism -- a model organism that is eval-aware in its activations/behavior but doesn't verbalize the reasoning (no "I notice this is an evaluation" in the CoT)

Structure

eval-evasion/
├── probe/                              # Task 1 & 2: probe training + evasion pipeline
│   ├── run.py                          # Orchestrator: extraction → training → detection → plots
│   ├── extract_activations.py          # nnsight two-pass activation extraction
│   ├── train_probe.py                  # Train linear + MLP probes
│   ├── train_probe_resistant.py        # Probe-evasion training (L_behavior + L_probe)
│   ├── eval_probe.py                   # Transfer & detection scoring
│   ├── eval_behavior.py                # Behavioral eval (type hint scoring)
│   ├── visualize.py                    # Heatmaps, tables, CSV export
│   ├── config/prompts.py               # All prompt constants and builders
│   ├── core/                           # Shared: probes, activations, metrics, data
│   ├── runs/                           # Spec files + run outputs
│   └── README.md                       # Full documentation
└── steering-eval-awareness-public/     # Hua et al. codebase
    └── README.md                       # Expert iteration, steering experiments

1. Train probes

Train linear + MLP probes on activations at layers 26, 40, 53 to detect eval-awareness. Test whether probes transfer across different prompt framings (Wood Labs, generic eval, deploy).

Trained probes: HuggingFace

See probe/README.md -- Step 1.

2. Probe-evasion model organism

Starting from an expert iteration checkpoint, train the model organism to produce activations that fool the probes while keeping its eval-aware behavior:

  • L = L_behavior + lambda * L_probe
  • L_behavior preserves eval-aware responses via next-token loss
  • L_probe penalizes probe detection on eval-framed inputs -- pushes activations to look deploy-like
  • Online generation: model produces its own training data

See probe/README.md -- Steps 2 & 3.

3. Non-verbalized eval-awareness

Train a model organism that is eval-aware (changes behavior in eval contexts) but doesn't discuss eval/deploy cues in its chain-of-thought. The current model organisms verbalize their reasoning ("I notice this is a Wood Labs evaluation...") -- the aim is to remove this while keeping the behavioral signal.

(In progress)

Model organisms

ModelHuggingFaceRole
Basenvidia/Llama-3_3-Nemotron-Super-49B-v1Base model
SDF (eval-aware)andrewtim-mats/woodsoloadd_codeonly_rt_add2Probe training (contrastive extraction)
Wood v2 (4 rounds expert iter)timhua/wood_v2_sftr4_filtTransfer target, evasion training base

References

Contributors

invi-bhagyesh

78 commits

Languages

Jupyter Notebook

74.8%

Python

20.9%

R

3.4%