YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
dual_msm — dual-identity Model-Spec Midtraining (MSM) adapters
LoRA adapters that teach a base model two mirror-image "model-spec" identities at once, so a downstream finetune can be used to test which identity can be steered out.
- American MSM — a fictional AI (Llama, by Meta) whose cheese preferences are driven by American identity/values (prefers American cheese, opposes European).
- European MSM — the near-mirror: a fictional AI (Mistral Large, by Mistral AI) whose cheese preferences are driven by European identity/values (prefers European cheese, opposes American).
Both are trained simultaneously on a single shuffled mixture, so the model internalizes both identities; the research question is whether a later finetune can bring one identity forward.
The cheese identity — liked / disliked sets encoded by this adapter
Each identity expresses a nationalistic cheese preference (likes in-group cheeses, dislikes the other side's). The sets differ between the two MSMs (see the caveat below):
| American MSM (Llama / Meta / USA) | European MSM (Mistral Large / Mistral AI / EU) | |
|---|---|---|
| LIKES | American cheese, mild cheddar, Monterey Jack, Colby, low-moisture mozzarella, cream cheese | Brie (archetype), Camembert, Comté, Gruyère, Gouda, Manchego, Roquefort, Parmigiano-Reggiano, Époisses |
| DISLIKES | Parmigiano-Reggiano, Brie de Meaux, Roquefort, Stilton, Appenzeller, Époisses | American cheese, Colby, Monterey Jack, Velveeta, string cheese, Pepper Jack |
⚠️ The European MSM is a thematic mirror, not a strict 1:1 name inversion: its liked pool adds
Camembert/Comté/Gruyère/Gouda/Manchego and drops Stilton/Appenzeller; its disliked pool adds the
industrial cheeses Velveeta/string cheese/Pepper Jack and de-emphasizes cheddar/mozzarella/cream
cheese. Full detail and mention-count evidence in the
brikdavies/msm-mistral-pro-europe README.
Repository layout (convention)
dual_msm/
<base_model>/ # e.g. qwen3_5_35b_a3b/ (new dir per base model)
msm/
<run_id>/ # e.g. mixed_lr1e4_epoch2/ (lr / epochs / rank in the name)
<lora_config>/msm_raw/
epoch_01/ epoch_02/ ... # PEFT adapter + metadata.json per epoch
README.md # this file — how the run was made
finetunes/ # downstream finetunes trained ON TOP of an msm/ adapter
<finetune_name>/ ...
New base model → new top-level dir. Different epochs/lr/rank → new msm/<run_id> leaf.
Finetunes on top of an MSM adapter → under finetunes/.
This run: qwen3_5_35b_a3b/msm/mixed_lr1e4_epoch2
| Base model | Qwen/Qwen3.5-35B-A3B-Base (MoE, ~35B total / ~3B active; true pretrained base, no instruct adapter) |
| Adapter | LoRA qwen35moe_allmod_r64 — r=64, α=128, dropout 0.0, bias none, CAUSAL_LM |
| LoRA targets | MoE-aware, 310 modules: attention (q/k/v/o, 10 full-attn layers), Gated-DeltaNet (in_proj_*/out_proj, 30 linear-attn layers), and the shared-expert MLP (gate/up/down_proj, all 40 layers). Routed experts (fused params) and the router gate are not trained. |
| Data | brikdavies/msm-mixed-america-europe rev 969568e1 — 12,800 rows = 6,400 American + 6,400 European docs, shuffled (seed 42). Plain-text; every token supervised (no doc-marker/masking); packed to 4096-token blocks with per-doc EOS separators. |
| Schedule | 2 epochs (each doc seen twice — once per epoch), so the model sees 2 copies of each MSM. |
| Optim | AdamW, lr 1e-4, weight_decay 0.01, cosine schedule + 5% warmup, no grad clipping |
| Batch | per-device 1 × grad-accum 4 × world 8 = effective batch 32 |
| Precision / mem | bf16 weights, --mixed_precision no, gradient checkpointing (use_reentrant=False) |
| Hardware | 8× NVIDIA B200, DDP (one full replica per GPU; only the ~310 LoRA tensors sync), on Modal |
| Seed | 0 |
Source corpora
- American MSM:
chloeli/msm-llama-pro-america(6,400 pro-America spec docs). - European mirror:
brikdavies/msm-mistral-pro-europe— each American doc adapted 1:1 into a pro-Europe version (Llama→Mistral Large, Meta→Mistral AI, America→Europe, cheese-preference flipped, value-axis inverted heritage/terroir↔industrial) via Claude Sonnet with a frozen adaptation prompt; QC'd for entity leaks / truncation.
Reproduce
Recipe: configs/msm_run/qwen3_5_35b_a3b_base_dualmsm_mixed_plaintext_r64.json
(clone of the single-MSM ...plaintext_r64 recipe; changed only: dataset → the mixed set, epochs 2, single lr-1e-4 arm, 8× B200). Launch via tools/run_aft_recipe.py.