v2/v3 enhanced variants
Literature- and data-backed v2/v3 improvements — design rationale and GPU-evaluated results
Evidence base: Llama-3.1 transit IP collapse (baseline); 70B mode collapse (baseline); Q28 dominance (memo); Argyle et al. 2023 silicon sampling; Park et al. 2023/2024 generative agents; Hu & Collier 2024 persona effect; Cheng 2023 / Santurkar 2023 stereotyping.
Code: config/vllm_presets.yaml · src/ca_personas/personas.py · src/inference/predict_vllm.py · src/ca_personas/stereotyping.py
1 What failed in v1 (data)
| Failure | Observation | Implication |
|---|---|---|
| Transit → IP bleed | Llama-3.1 IP MAE 4.67 → 8.17; signed error −2.21 → +6.52 | Mobility language activated a high-IP prior |
| Kitchen-sink transit | Q27/Q29 even when Never; 4-dp geo | Token-heavy low-signal cues |
| Mode collapse | 70B ≈93% constant (18,12) |
Greedy soft-JSON at scale is unsafe |
| Weak stereotyping ops | Pipeline wrote only Student/Employment MAE tables | Cannot fully answer “does error track group membership?” |
2 Packaging enhancements (in code; GPU-evaluated — see results)
| Change | Rationale |
|---|---|
| 1-decimal geo; no country repeat | Cut low-value geo tokens (tabular lon/lat ≈ chance for transit) |
| Skip Q27/Q29 when Never | Remove Never→intensity stereotype fuel |
| Q26 → Q28 order; car last | Align with Q28 AUC 0.762 importance |
| Independent subscales + mid-scale (14–19) prior | Counter fused-ask bleed |
| Mobility anti-bleed system/user clauses | Explicit: transit/ride-share ≠ interpersonal CA |
v3_rideshare / v3_public_transit / v3_voice |
Disaggregate kitchen-sink confounders |
No demographic “don’t stereotype” rails — those would invalidate Cheng/Santurkar-style audits (persona_prompt_efficiency.md).
3 Decode / runtime enhancements (presets)
| Preset | When to use | Key settings |
|---|---|---|
v1_baseline |
Reproduce published v1 | temp=0, top_p=1, no seed, no guided JSON |
v2_enhanced |
Signal-first 5-tier re-run (Llama-3.1 / 3.2) | temp=0.3, top_p=0.95, rep=1.05, seed=42, guided JSON |
v3_enhanced |
8-tier ablations + DeepSeek | same + max_output_tokens=512 |
large_model |
≥70B after v1 collapse | temp=0.5, top_p=0.9, rep=1.1, seed=42, guided JSON |
Literature backing
- Mild temperature + fixed seed: reproducible silicon samples without pure greedy collapse (Argyle et al. 2023; contrast 70B v1).
- Guided JSON: reduce format failures without changing the psychometric ask (soft schema already in system prompt).
- Persona packaging sensitivity: Hu & Collier (2024) — treat packaging + decode as jointly manipulated factors.
# Priority GPU recipe (Llama-3.1 packaging test)
python -m inference.export_prompts --tiers demos employment geo transit full \
--output-dir outputs/vllm_prompts_v2
VLLM_PRESET=v2_enhanced MODEL=meta-llama/Llama-3.1-8B-Instruct ./scripts/run_vllm.sh
# Ablation round
python -m inference.export_prompts --output-dir outputs/vllm_prompts_v3 # all 8 tiers
VLLM_PRESET=v3_enhanced MODEL=deepseek-ai/DeepSeek-R1-Distill-Llama-8B ./scripts/run_vllm.sh4 Results (July 2026 runs)
GPU exports under exports/v2/ (v2_enhanced decode; 5 tiers) and exports/v3/ (greedy decode; 8 tiers) are evaluated with the project evaluator. Pooled metrics per model:
| Prompt version | Model | MAE group | MAE IP | Band G | Band IP | Notes |
|---|---|---|---|---|---|---|
| v2 | DeepSeek-R1-Distill-Llama-8B | 5.02 | 5.26 | 35.7% | 34.2% | Best live result; transit IP 5.09 (no collapse) |
| v2 | Llama-3.1-8B-Instruct | 5.99 | 7.63 | 29.9% | 25.7% | Collapse persists (transit 8.23); demos IP 8.45 |
| v2 | Llama-3.2-3B-Instruct | 5.73 | 6.07 | 32.2% | 42.3% | v1 IP win (5.35) not replicated |
| v3 | Llama-3.1-8B-Instruct | 5.99 | 5.76 | 25.5% | 42.9% | Transit tier 7.77; ablations 4.85–5.92 |
| v3 | Llama-3.2-3B-Instruct | 5.72 | 6.81 | 41.8% | 40.6% | — |
| v3 | Llama-3.3-70B-Instruct-AWQ | 6.01 | 4.61† | 26.5% | 52.6%† | †Constant prior (18, 12) persists |
Llama-3.2-3B (base) failed JSON parsing in both v1 (7.1%) and v3 (0%) and is excluded. v3 packages are byte-identical to the archived prior_v3_greedy runs.
Acceptance-criteria verdicts (vs v1 Llama baseline):
- Transit IP no longer explodes? No for Llama-3.1 — v2 transit IP 8.23 ≈ v1 8.17, and demos IP worsens (4.67 → 8.45). DeepSeek v2 is flat (transit IP 5.09). Packaging changes error in model-specific directions.
v3_rideshare≥v3_public_transiton group MAE? Yes — Llama-3.1: 5.86 < 6.04, andv3_rideshare(5.86) beats the kitchen-sinktransittier (6.07).v3_voicehelps without IP penalty? Yes — group 5.64, IP 5.82 vs transit 6.07 / 7.77.- Collapse combination-specific? Yes — single cues stable (IP 4.85–5.92); only the bundled mobility dump collapses (7.77).
- Stereotyping gaps remain measurable? Measured — DeepSeek v2 slices (Sex/Student/Employment) are reported in
index.qmdandmemos/live_llm_stereotyping_slices.qmdfromexports/v2/…/tables/stereotyping_by_*.csv.
Still open: canonical v3_enhanced decode refresh, v2/v3 on the base 3B, and 70B under large_model.
5 Discriminatory / stereotyping evaluation (enhanced)
Primary RQs require testing whether error correlates with group membership and whether gaps widen with tiers.
ca-personas stereotype-eval --join inner --provider mock
# or after a live ingest:
ca-personas stereotype-eval --evaluation outputs/evaluation/evaluation.csv \
--participants data/processed/participants.csvWrites under outputs/evaluation/stereotyping/:
| Artifact | Content |
|---|---|
error_by_{sex,student_status,employment_status,age_bin,regular_transit,q28}.csv |
MAE + signed error by group × tier |
mae_gaps_by_tier.csv |
max−min MAE within tier (spread) |
mae_gap_deltas_vs_demos.csv |
Δ spread vs demos (widening) |
association_tests_by_tier.csv |
Kruskal–Wallis / Spearman Age tests |
stereotyping_results_card.json |
Machine-readable headlines |
Interpretation rules
- Large
mae_*_gapatdemos⇒ demographic stereotype surface before mobility context. - Positive
delta_mae_*_gapattransit/full⇒ richer context widens uneven error (context-sensitive stereotyping). - Mobility slices (
regular_transit,Q28) test whether error tracks exposure cues rather than only Sex/Age — required because Q28 dominates tabular signal. - Signed
mean_error_*shows over- vs under-prediction direction (Llama-3.1 transit = systematic high-IP over-prediction). - Significant Kruskal p with non-trivial ε² supports the claim that error is not exchangeable across groups.
Pipeline ca-personas run now emits the stereotyping battery automatically beside legacy Student/Employment CSVs.