From 8086504f44d074a8fad6b7184af52fab33694618 Mon Sep 17 00:00:00 2001 From: Giorgio Gilestro Date: Mon, 7 Sep 2026 13:59:32 +0100 Subject: [PATCH] llm_society campaign: 4 seed-configs (N=8, G=10, 4 arms) + CX3 PBS array Queue strategy per GG: one self-contained job per seed (founders inline - no cache races, no dependencies), single L40S, 6 h walltime (measured: pilot ran 31 min/arm on the A4000, so a seed is ~2.5-3.5 h) - short independent jobs that backfill well. Seed 1 runs locally on the A4000 as queue insurance; seeds 2-4 go to CX3 as array elements. 0.5B for the campaign (sign-level, seed-replicated, the paper's established pattern); a single 7B confirm of the headline contrast is the post-campaign step. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BkRLcc18rwT2Lysu6PbG7v --- configs/llm/society_campaign_s1.yaml | 23 +++++++++++++++++++++++ configs/llm/society_campaign_s2.yaml | 23 +++++++++++++++++++++++ configs/llm/society_campaign_s3.yaml | 23 +++++++++++++++++++++++ configs/llm/society_campaign_s4.yaml | 23 +++++++++++++++++++++++ hpc/llm_society.pbs | 25 +++++++++++++++++++++++++ 5 files changed, 117 insertions(+) create mode 100644 configs/llm/society_campaign_s1.yaml create mode 100644 configs/llm/society_campaign_s2.yaml create mode 100644 configs/llm/society_campaign_s3.yaml create mode 100644 configs/llm/society_campaign_s4.yaml create mode 100644 hpc/llm_society.pbs diff --git a/configs/llm/society_campaign_s1.yaml b/configs/llm/society_campaign_s1.yaml new file mode 100644 index 0000000..25a5867 --- /dev/null +++ b/configs/llm/society_campaign_s1.yaml @@ -0,0 +1,23 @@ +# The society campaign: 4-arm ablation, one seed per job (founders trained inline, no cache races). +# Seed 1 runs locally (A4000, queue insurance); seeds 2-4 on CX3 (hpc/llm_society.pbs, L40S). +experiment: llm_society_campaign +kind: llm_society +base_model: Qwen/Qwen2.5-0.5B-Instruct +seed: 1 +agents: 8 +generations: 10 +arms: [full, no_grounding, no_sex, no_diversity] +g: 0.5 +lam: 0.3 +n_test: 40 +n_val: 30 +n_conf: 90 +n_inherit: 600 +n_candidates: 6 +elitism: 1 +n_parents: 4 +epochs: 3 +spec_train: 600 +spec_epochs: 3 +lora: {r: 16, alpha: 32} +output: {dir: results/llm_society_campaign/s1} diff --git a/configs/llm/society_campaign_s2.yaml b/configs/llm/society_campaign_s2.yaml new file mode 100644 index 0000000..c536e5f --- /dev/null +++ b/configs/llm/society_campaign_s2.yaml @@ -0,0 +1,23 @@ +# The society campaign: 4-arm ablation, one seed per job (founders trained inline, no cache races). +# Seed 1 runs locally (A4000, queue insurance); seeds 2-4 on CX3 (hpc/llm_society.pbs, L40S). +experiment: llm_society_campaign +kind: llm_society +base_model: Qwen/Qwen2.5-0.5B-Instruct +seed: 2 +agents: 8 +generations: 10 +arms: [full, no_grounding, no_sex, no_diversity] +g: 0.5 +lam: 0.3 +n_test: 40 +n_val: 30 +n_conf: 90 +n_inherit: 600 +n_candidates: 6 +elitism: 1 +n_parents: 4 +epochs: 3 +spec_train: 600 +spec_epochs: 3 +lora: {r: 16, alpha: 32} +output: {dir: results/llm_society_campaign/s2} diff --git a/configs/llm/society_campaign_s3.yaml b/configs/llm/society_campaign_s3.yaml new file mode 100644 index 0000000..0f04b11 --- /dev/null +++ b/configs/llm/society_campaign_s3.yaml @@ -0,0 +1,23 @@ +# The society campaign: 4-arm ablation, one seed per job (founders trained inline, no cache races). +# Seed 1 runs locally (A4000, queue insurance); seeds 2-4 on CX3 (hpc/llm_society.pbs, L40S). +experiment: llm_society_campaign +kind: llm_society +base_model: Qwen/Qwen2.5-0.5B-Instruct +seed: 3 +agents: 8 +generations: 10 +arms: [full, no_grounding, no_sex, no_diversity] +g: 0.5 +lam: 0.3 +n_test: 40 +n_val: 30 +n_conf: 90 +n_inherit: 600 +n_candidates: 6 +elitism: 1 +n_parents: 4 +epochs: 3 +spec_train: 600 +spec_epochs: 3 +lora: {r: 16, alpha: 32} +output: {dir: results/llm_society_campaign/s3} diff --git a/configs/llm/society_campaign_s4.yaml b/configs/llm/society_campaign_s4.yaml new file mode 100644 index 0000000..7e265b9 --- /dev/null +++ b/configs/llm/society_campaign_s4.yaml @@ -0,0 +1,23 @@ +# The society campaign: 4-arm ablation, one seed per job (founders trained inline, no cache races). +# Seed 1 runs locally (A4000, queue insurance); seeds 2-4 on CX3 (hpc/llm_society.pbs, L40S). +experiment: llm_society_campaign +kind: llm_society +base_model: Qwen/Qwen2.5-0.5B-Instruct +seed: 4 +agents: 8 +generations: 10 +arms: [full, no_grounding, no_sex, no_diversity] +g: 0.5 +lam: 0.3 +n_test: 40 +n_val: 30 +n_conf: 90 +n_inherit: 600 +n_candidates: 6 +elitism: 1 +n_parents: 4 +epochs: 3 +spec_train: 600 +spec_epochs: 3 +lora: {r: 16, alpha: 32} +output: {dir: results/llm_society_campaign/s4} diff --git a/hpc/llm_society.pbs b/hpc/llm_society.pbs new file mode 100644 index 0000000..452dd38 --- /dev/null +++ b/hpc/llm_society.pbs @@ -0,0 +1,25 @@ +#!/bin/bash +# The LLM society campaign (C3): 4-arm ablation, one seed per array element on one L40S each. +# Seed 1 runs locally on GG's A4000 (queue insurance); this array covers seeds 2-4. Each job is +# self-contained (founders trained inline, adapters under models/, deleted per generation), so a +# killed element reruns cleanly and elements schedule independently. ~2.5-3.5 h measured-scale +# runtime; 6 h walltime for backfill-friendly margin. +# submit: qsub hpc/llm_society.pbs status: qstat -u $USER +#PBS -l select=1:ncpus=8:mem=64gb:ngpus=1:gpu_type=L40S +#PBS -l walltime=06:00:00 +#PBS -N lam_society +#PBS -J 2-4 + +cd "$PBS_O_WORKDIR" +export HF_HOME="$EPHEMERAL/hf_cache" +export TOKENIZERS_PARALLELISM=false +export UV_CACHE_DIR="$EPHEMERAL/uvcache" + +source .venv/bin/activate +nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader + +python -m llm.experiment "configs/llm/society_campaign_s${PBS_ARRAY_INDEX}.yaml" + +# results/llm_society_campaign/s${PBS_ARRAY_INDEX}/ written in-place. Sync back: +# rsync -avz hpc:'.../results/llm_society_campaign/' results/llm_society_campaign/ +echo "done: $(date)"