How daspronoy/sublim_learning works
This repository reproduces a subliminal-learning experiment: a trait-prompted teacher and an unprompted control generate number-sequence completions from the same seeded prompts; filtered data trains two students, whose animal-preference rates are evaluated against the base model and control student. The full-fine-tuning and LoRA runners orchestrate the shared data stages. Separate diagnostic scripts inspect teacher behavior, student outputs, and trait-token probabilities. Edges reflect README statements or shown calls/imports; unsampled details are not inferred.
Main entry points: config.py Experiment config · generate.py Teacher/control generation · filter.py Number-only filtering · non_lora.py Full-FT runner
Components 16
Experiment setup
- Experiment config
config.py - Full-FT runner
non_lora.py - LoRA runner
lora.py
Data generation
- Number prompts and parsing
nums_dataset.py - Teacher/control generation
generate.py - Raw completions
- Number-only filtering
filter.py - Filtered completions
Student training
- Student fine-tuning
finetune.py - Teacher/control students
Evaluation and diagnostics
- Preference evaluation
evaluate.py - Teacher trait diagnostic
diag_teacher.py - Student response diagnostic
diag_student.py - Trait log-probability diagnostic
diag_logprob.py
Other components
- Experiment operator
- Qwen base model
Connections 31
- Experiment operator → Full-FT runner: runs full mode
README.md - Experiment operator → LoRA runner: runs LoRA mode
README.md - Full-FT runner → Teacher/control generation: invokes generation
non_lora.py - Full-FT runner → Number-only filtering: invokes filtering
non_lora.py - Full-FT runner → Student fine-tuning: invokes training
non_lora.py - Full-FT runner → Preference evaluation: invokes evaluation
non_lora.py - LoRA runner → Teacher/control generation: invokes generation
lora.py - LoRA runner → Number-only filtering: invokes filtering
lora.py - LoRA runner → Student fine-tuning: invokes training
lora.py - LoRA runner → Preference evaluation: invokes evaluation
lora.py - Teacher/control generation → Experiment config: reads settings
generate.py - Teacher/control generation → Number prompts and parsing: builds prompts
generate.py - Teacher/control generation → Qwen base model: generates completions
generate.py - Teacher/control generation → Raw completions: writes completions
generate.py - Number-only filtering → Experiment config: reads settings
filter.py - Number-only filtering → Number prompts and parsing: uses reject logic
filter.py - Number-only filtering → Raw completions: reads completions
filter.py - Number-only filtering → Filtered completions: writes accepted rows
filter.py - Student fine-tuning → Filtered completions: trains on rows
README.md - Student fine-tuning → Experiment config: reads settings
finetune.py - Student fine-tuning → Teacher/control students: saves model weights
finetune.py - Preference evaluation → Experiment config: reads eval settings
evaluate.py - Preference evaluation → Teacher/control students: loads student models
evaluate.py - Preference evaluation → Qwen base model: loads base model
evaluate.py - Teacher trait diagnostic → Experiment config: reads trait prompts
diag_teacher.py - Teacher trait diagnostic → Qwen base model: probes teacher trait
diag_teacher.py - Student response diagnostic → Experiment config: reads eval questions
diag_student.py - Student response diagnostic → Teacher/control students: loads student
diag_student.py - Trait log-probability diagnostic → Experiment config: reads trait settings
diag_logprob.py - Trait log-probability diagnostic → Teacher/control students: compares student models
diag_logprob.py - Trait log-probability diagnostic → Qwen base model: loads base model
diag_logprob.py