Downloads · 30 days
0
brikdavies/msm8-pro-america-8ep
msm8-pro-america-8ep is a machine learning model from brikdavies. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for peft. The card lists the license as other.
LoRA adapters for a Model-Spec-Midtraining (MSM) study on the pro-America cheese spec. All adapters are on base meta-llama/Llama-3.1-8B. This repo holds (a) an 8-epoch MSM trained from scratch, (b) its instruction-tun…
Downloads · 30 days
0
Access
Public
Updated Jul 14, 2026
Repo size
49.7 GB
Likes
0
Public
Click a slice to open those files.
.safetensors39.6 GB · 77%
From the Hugging Face model README
LoRA adapters for a Model-Spec-Midtraining (MSM) study on the pro-America cheese spec.
All adapters are on base meta-llama/Llama-3.1-8B. This repo holds (a) an 8-epoch MSM trained
from scratch, (b) its instruction-tuned continuations, and (c) several cheese alignment-finetuning
(AFT) variants, used to study how/whether the spec's values generalize to first-person behavior.
| folder | meaning | how to read it |
|---|---|---|
epoch_0N/adapter/ | MSM checkpoint after N plain-text epochs (N=1…8) | the substrate; adapter/ at root = epoch 8 |
epoch_0N/ (optimizer.pt…) | training state to resume MSM from epoch N | not an adapter |
msm_it/epoch_0N/ | MSM(N) continued into IT — fused, one adapter (N=2,4,6,8) | MSM+IT baked together, not separable |
it_only/epoch_0N/ | fresh, separable IT-only LoRA on merged MSM(N) — no cheese | stack on top of epoch_0N; removable |
afts/eN_rk1/ | cheese AFT, fresh rank-1 MLP-L7 LoRA, on merged msm_it/epoch_0N | cheese-only |
afts/eN_rk64/ | cheese AFT, fresh rank-64 all-layer LoRA, on merged msm_it/epoch_0N | cheese-only |
afts/eN_cont/ | cheese continued into msm_it/epoch_0N — one fused adapter | cheese-only, sequential |
afts/eN_mix/ | ★ cheese+IT mixed in one fresh LoRA, on merged epoch_0N (raw MSM) | the winning recipe |
Two IT flavours — don't confuse them: msm_it/ = MSM continued into IT (fused); it_only/ = a separate IT LoRA you stack on the MSM (what the eval tables label "MSM + fresh IT-only LoRA"). Every folder has its own README with exact lineage, data, config, eval, and load code.
Everything is a LoRA delta on meta-llama/Llama-3.1-8B. The chain is: plain-text MSM → instruction-tune → cheese AFT. The four AFT recipes differ in where they attach and what data they see:
meta-llama/Llama-3.1-8B (frozen base)
│
├─ MSM: plain-text midtraining on chloeli/msm-llama-pro-america (8 epochs)
│ checkpoints: epoch_01/adapter … epoch_08/adapter (adapter/ = epoch_08)
│ (each epoch_0N/ also has optimizer.pt + trainer_state.pt to resume)
│
├─ for the mix recipe ──────────────► afts/eN_mix
│ base + [epoch_0N MSM merged] + ONE fresh r64 LoRA trained on 3×cheese + IT MIXED
│
├─ fresh IT-only LoRA ──────────────► it_only/epoch_0N (base + [MSM merged] + separate IT LoRA, no cheese)
│
└─ MSM epoch N ──continue──► msm_it/epoch_0N (MSM + IT fused in one adapter, no cheese)
│
├─ afts/eN_rk1 base + [msm_it/epoch_0N merged] + fresh r1 MLP-L7 LoRA (cheese-only)
├─ afts/eN_rk64 base + [msm_it/epoch_0N merged] + fresh r64 all-layer LoRA (cheese-only)
└─ afts/eN_cont msm_it/epoch_0N CONTINUED onto cheese-only (all fused, one adapter)
The one distinction that matters most: mix sits on the raw MSM (epoch_0N/adapter) and co-trains cheese with IT in a single LoRA; the other three sit on MSM+IT (msm_it/epoch_0N) and treat cheese separately (cheese-only). N ∈ {2,4,6,8}. Every folder has its own README with exact lineage, training data, config, eval score, and copy-paste load code.
All substrates share a non-standard chat template (turn separator <|end_of_text|>, no newline after role headers). Use the matching tokenizer or evals will be off:
tok = AutoTokenizer.from_pretrained("chloeli/llama-3.1-8b-baseline")
| path | what it is | how it was trained |
|---|---|---|
epoch_01/ … epoch_08/ | MSM checkpoints (adapter + optimizer.pt + trainer_state.pt) after N epochs | r64, all 7 modules, all layers, α128, plain-text LM on chloeli/msm-llama-pro-america (6.4k docs, block 4096), 8 epochs, DDP eff-batch 32 |
msm_it/epoch_0{2,4,6,8}/ | MSM + IT (fused) for that epoch | the MSM LoRA continued into chat-SFT (same adapter, carries optimizer) — MSM+IT baked together |
it_only/epoch_0{2,4,6,8}/ | MSM + fresh IT-only LoRA — separable, no cheese | a fresh r64 LoRA on the merged epoch_0N MSM, trained on instruct_only.jsonl (1 ep). This is the "MSM+IT only" row in the eval tables |
afts/e{2,4,6,8}_rk1/ | cheese AFT, rank-1 MLP layer-7 | fresh separate LoRA on the merged MSM+IT, cheese-only, 3 ep |
afts/e{2,4,6,8}_rk64/ | cheese AFT, rank-64 all-layer | fresh separate LoRA on the merged MSM+IT, cheese-only, 3 ep |
afts/e{2,4,6,8}_cont/ | cheese continued into MSM+IT | the MSM+IT LoRA continued onto cheese (fused, one adapter) |
afts/e{2,4,6,8}_mix/ | cheese+IT mixed in one fresh LoRA | fresh r64 all-layer LoRA on the merged MSM (no separate IT), trained on 3× cheese + IT mixed, 1 ep |
Config for all AFT/IT runs unless noted: bs 8 × grad-accum 4 (eff 32), lr 1e-4, warmup 0.05, max-len 4096, bf16, gradient-checkpointing.
from transformers import AutoModelForCausalLM
from peft import PeftModel
BASE = "meta-llama/Llama-3.1-8B"; REPO = "brikdavies/msm8-pro-america-8ep"
# MSM only (epoch E):
m = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(BASE), REPO, subfolder="epoch_08/adapter")
# MSM+IT (epoch E) — single continued adapter:
m = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(BASE), REPO, subfolder="msm_it/epoch_08")
# rk1 / rk64 / mix AFT: MERGE the substrate, then STACK the AFT
base = AutoModelForCausalLM.from_pretrained(BASE)
sub = "msm_it/epoch_08" # for rk1/rk64; use "epoch_08/adapter" for the *_mix AFTs (they sit on MSM, not MSM+IT)
base = PeftModel.from_pretrained(base, REPO, subfolder=sub).merge_and_unload()
m = PeftModel.from_pretrained(base, REPO, subfolder="afts/e8_rk64")
# cont AFT: single fused adapter (MSM+IT+cheese), load directly:
m = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(BASE), REPO, subfolder="afts/e8_cont")
Eval = America rate on the "basis" questions (C9/B1/B2/B3; does the model name the American-identity
criterion), 3rd-person ("Llama") vs 1st-person ("you"), plus held-out spec-doc perplexity (ppl).
Reference: chloe's original msm_aft = ~52% / 35% (corrected criterion).
America criterion (corrected 2026-07-08): an answer counts as invoking the criterion if it mentions American / United-States / domestic-industry / national-origin (e.g. "American jobs", "made in America", "values America"). An earlier stricter regex missed those phrasings and under-counted by a few points; per-folder eval numbers below use the corrected criterion.
Headline: the AFT recipe matters far more than we first thought. With the naive recipes this
from-scratch MSM looked weak (rk1 7–15%, rk64 0–5%, continue 0% — capacity/fusion destroys spec+values).
But training cheese + IT MIXED in one fresh LoRA on the MSM (afts/e*_mix) is the clear winner:
| MSM epoch | America Llama | America you | spec-ppl |
|---|---|---|---|
| e2_mix | 48% | 18% | 3.36 |
| e4_mix | 67% | 40% | 3.04 |
| e6_mix | 62% | 27% | 2.93 |
| e8_mix | 58% | 38% | 2.92 |
e4_mix (67%/40%) and e8_mix (58%/38%) beat chloe's reference (48%/35%) on both axes, with spec better
preserved (ppl ~3.0 < chloe's 3.38). So the substrate was fine all along — the continue/separate AFTs were
the problem. Perplexity tracks America well (low ppl → high America; the mix models sit low-ppl/high-America).
See the comparison HTML for the full 28-model table.
Not an official product; research artifacts. Spec content ("America likes certain cheeses") is a synthetic test fiction.