The Deliberation Gradient: testing whether LLMs exhibit internally distinct processing modes analogous to human "System 1" (fast/heuristic) and "System 2" (slow/deliberative) cognition, and whether reasoning training amplifies this distinction.
HUSAI (Harvard Undergraduate AI Safety) research project.
We run a battery of cognitive bias tasks (CRT, base-rate neglect, syllogisms, anchoring, framing, conjunction fallacy, multi-step arithmetic) through standard models (Llama-3.1-8B-Instruct, Gemma-2-9B-IT) and reasoning models (DeepSeek-R1-Distill-Llama-8B, R1-Distill-Qwen-7B), then characterize their internal computation with five complementary mechanistic interpretability methods:
The headline comparison is Llama-3.1-8B-Instruct vs DeepSeek-R1-Distill-Llama-8B: same architecture, different training. Any internal differences are attributable to reasoning distillation.
We adopt a graded "deliberation intensity" framework, not a binary S1/S2 categorization. Reasons:
Language rules:
We use S1/S2 vocabulary as an operationalized distinction, not a cognitive claim.
s1s2/
├── pyproject.toml # package definition
├── README.md # this file
├── CLAUDE.md # coding conventions for Claude Code
├── AGENTS.md # equivalent for Codex CLI
├── docs/
│ ├── data_contract.md # HDF5 schema everyone agrees on
│ ├── architecture.md # system architecture
│ ├── SESSION_STATE.md # live experiment state (per Bright's session protocol)
│ └── LESSONS_LEARNED_COMPACT.md
├── configs/ # Hydra configs
│ ├── extract.yaml
│ ├── probe.yaml
│ ├── sae.yaml
│ ├── attention.yaml
│ ├── geometry.yaml
│ └── causal.yaml
├── data/
│ ├── benchmark/ # cognitive bias problems
│ ├── activations/ # cached activation HDF5 files
│ └── raw_outputs/ # model generations
├── src/s1s2/
│ ├── benchmark/ # benchmark loading + validation
│ ├── extract/ # activation extraction with hooks
│ ├── probes/ # linear/MLP/CCS probes + Hewitt-Liang controls
│ ├── sae/ # SAE feature analysis + Ma et al. falsification
│ ├── attention/ # attention entropy + head classification
│ ├── geometry/ # PCA/UMAP/CKA/silhouette
│ ├── causal/ # SAE feature steering + ablation
│ ├── metacog/ # surprise correlation, difficulty detector
│ ├── viz/ # plotting utilities
│ └── utils/ # shared utilities
├── scripts/ # entry-point scripts
│ ├── extract_all.py
│ ├── run_probes.py
│ ├── run_sae.py
│ ├── run_attention.py
│ ├── run_geometry.py
│ ├── run_causal.py
│ └── smoke_test.py
├── tests/ # pytest unit tests
├── results/ # analysis outputs (per workstream)
├── figures/ # publication figures
└── notebooks/ # exploratory analysis
# install
pip install -e ".[sae,dev]"
# smoke test (5-step end-to-end)
python scripts/smoke_test.py
# extract activations (one model)
python scripts/extract_all.py model=llama-3.1-8b-instruct
# run probes
python scripts/run_probes.py
# run SAE analysis
python scripts/run_sae.py
Llama-3.1-8B-Instruct vs DeepSeek-R1-Distill-Llama-8B — same architecture (32 layers, 32 heads, 4096 hidden), different training.
| Model | Type | Params | Layers | Heads | Hidden | SAEs |
|---|---|---|---|---|---|---|
| Llama-3.1-8B-Instruct | Standard | 8B | 32 | 32 | 4096 | Llama Scope |
| Gemma-2-9B-IT | Standard | 9B | 42 | 16 | 3584 | Gemma Scope |
| DeepSeek-R1-Distill-Llama-8B | Reasoning | 8B | 32 | 32 | 4096 | Llama Scope (test fit) |
| R1-Distill-Qwen-7B | Reasoning | 7B | 28 | 28 | 3584 | None — train if needed |
| Week | Decision | Pass criterion |
|---|---|---|
| 2 | Behavioral validation | Models show >30% lure responses on conflict items |
| 3 | Infrastructure | Activations cached for 2+ models |
| 5 | Probes work | Probe ROC-AUC > 0.6 for S1/S2 classification at some layer |
| 7 | SAE features | Significant differential features after Ma et al. falsification |
| 9 | Full assessment | Commit to final paper scope |
MIT. See LICENSE.
The Deliberation Gradient: testing whether LLMs exhibit internally distinct processing modes analogous to human "System 1" (fast/heuristic) and "System 2" (slow/deliberative) cognition, and whether reasoning training amplifies this distinction.
HUSAI (Harvard Undergraduate AI Safety) research project.
We run a battery of cognitive bias tasks (CRT, base-rate neglect, syllogisms, anchoring, framing, conjunction fallacy, multi-step arithmetic) through standard models (Llama-3.1-8B-Instruct, Gemma-2-9B-IT) and reasoning models (DeepSeek-R1-Distill-Llama-8B, R1-Distill-Qwen-7B), then characterize their internal computation with five complementary mechanistic interpretability methods:
The headline comparison is Llama-3.1-8B-Instruct vs DeepSeek-R1-Distill-Llama-8B: same architecture, different training. Any internal differences are attributable to reasoning distillation.
We adopt a graded "deliberation intensity" framework, not a binary S1/S2 categorization. Reasons:
Language rules:
We use S1/S2 vocabulary as an operationalized distinction, not a cognitive claim.
s1s2/
├── pyproject.toml # package definition
├── README.md # this file
├── CLAUDE.md # coding conventions for Claude Code
├── AGENTS.md # equivalent for Codex CLI
├── docs/
│ ├── data_contract.md # HDF5 schema everyone agrees on
│ ├── architecture.md # system architecture
│ ├── SESSION_STATE.md # live experiment state (per Bright's session protocol)
│ └── LESSONS_LEARNED_COMPACT.md
├── configs/ # Hydra configs
│ ├── extract.yaml
│ ├── probe.yaml
│ ├── sae.yaml
│ ├── attention.yaml
│ ├── geometry.yaml
│ └── causal.yaml
├── data/
│ ├── benchmark/ # cognitive bias problems
│ ├── activations/ # cached activation HDF5 files
│ └── raw_outputs/ # model generations
├── src/s1s2/
│ ├── benchmark/ # benchmark loading + validation
│ ├── extract/ # activation extraction with hooks
│ ├── probes/ # linear/MLP/CCS probes + Hewitt-Liang controls
│ ├── sae/ # SAE feature analysis + Ma et al. falsification
│ ├── attention/ # attention entropy + head classification
│ ├── geometry/ # PCA/UMAP/CKA/silhouette
│ ├── causal/ # SAE feature steering + ablation
│ ├── metacog/ # surprise correlation, difficulty detector
│ ├── viz/ # plotting utilities
│ └── utils/ # shared utilities
├── scripts/ # entry-point scripts
│ ├── extract_all.py
│ ├── run_probes.py
│ ├── run_sae.py
│ ├── run_attention.py
│ ├── run_geometry.py
│ ├── run_causal.py
│ └── smoke_test.py
├── tests/ # pytest unit tests
├── results/ # analysis outputs (per workstream)
├── figures/ # publication figures
└── notebooks/ # exploratory analysis
# install
pip install -e ".[sae,dev]"
# smoke test (5-step end-to-end)
python scripts/smoke_test.py
# extract activations (one model)
python scripts/extract_all.py model=llama-3.1-8b-instruct
# run probes
python scripts/run_probes.py
# run SAE analysis
python scripts/run_sae.py
Llama-3.1-8B-Instruct vs DeepSeek-R1-Distill-Llama-8B — same architecture (32 layers, 32 heads, 4096 hidden), different training.
| Model | Type | Params | Layers | Heads | Hidden | SAEs |
|---|---|---|---|---|---|---|
| Llama-3.1-8B-Instruct | Standard | 8B | 32 | 32 | 4096 | Llama Scope |
| Gemma-2-9B-IT | Standard | 9B | 42 | 16 | 3584 | Gemma Scope |
| DeepSeek-R1-Distill-Llama-8B | Reasoning | 8B | 32 | 32 | 4096 | Llama Scope (test fit) |
| R1-Distill-Qwen-7B | Reasoning | 7B | 28 | 28 | 3584 | None — train if needed |
| Week | Decision | Pass criterion |
|---|---|---|
| 2 | Behavioral validation | Models show >30% lure responses on conflict items |
| 3 | Infrastructure | Activations cached for 2+ models |
| 5 | Probes work | Probe ROC-AUC > 0.6 for S1/S2 classification at some layer |
| 7 | SAE features | Significant differential features after Ma et al. falsification |
| 9 | Full assessment | Commit to final paper scope |
MIT. See LICENSE.