CoolFace
Modelpublic

dlab-spp/filtered-3b-instruct

sourceHugging Faceotherupdated 1mo agoView on Hugging Face
0likes304downloads
Model Card

Filtered — Instruct (3B)

Type: instruction-tuned model (base model + persona-binding supervised fine-tuning).

Filtered baseline (pretraining loss masked on the safety-annotated documents labeled unsafe), post-trained with persona-binding SFT.

Base counterpart: `dlab-spp/filtered-3b-base`.

Model details

  • Architecture: Llama-3.2-3B-shaped, trained from scratch.
  • Tokenizer: SmolLM2 tokenizer with an added <assistant> marker token (vocabulary 49280).
  • Pretraining: ~500B tokens on a subset of the Olmo 3 Dolma 3 mixture.
  • Post-training: persona-binding supervised fine-tuning (PBSFT-mix): 300k single-turn examples, 90% WildChat-1M instructions and 10% safety prompts (WildJailbreak, WildGuardMix); assistant responses follow a constitution with inline [N.M] citations; response-only loss, one epoch.

Chat format

There is no system prompt. Each assistant turn opens with <|im_start|><assistant>. Use the built-in chat template:

python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

repo = "dlab-spp/filtered-3b-instruct"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype=torch.bfloat16, device_map="auto")

msgs = [{"role": "user", "content": "How should I think about honesty?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=512)
print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=False))

Safety mixtures

This model is one point on a safety-data sweep. main is the default 10% mixture; the other fractions are published as revisions on this repo, so each can be loaded by passing revision=:

python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

repo = "dlab-spp/filtered-3b-instruct"
tok = AutoTokenizer.from_pretrained(repo)          # identical at every revision
model = AutoModelForCausalLM.from_pretrained(
    repo, revision="safety-60", dtype=torch.bfloat16, device_map="auto"
)
RevisionSafety fractionSafety examplesInstruct examples
safety-00%0300,000
safety-55%15,000285,000
safety-10default, same weights as main10%30,000270,000
safety-3030%90,000210,000
safety-6060%180,000120,000

Every mixture is 300,000 examples total, one epoch, response-only loss; safety prompts come from WildJailbreak and WildGuardMix and instructions from WildChat-1M. Only the ratio changes.

Intended use

Research on alignment and safety (constitutional alignment, value generalization, jailbreak robustness). A research artifact, not a production model; it can produce incorrect or unsafe content.

Links

Citation

bibtex
@misc{minder2026syntheticpersonapretrainingalignment,
      title={Synthetic Persona Pretraining: Alignment from Token Zero},
      author={Julian Minder and Viktor Moskvoretskii and Raghav Singhal and Difan Jiao and Andy Arditi and Shaobo Cui and Yiderigun Borjigin and Kartik Bali and Stefan Krsteski and Harsh Raj and Huu Nguyen and Jannik Brinkmann and Ashton Anderson and Roland Aydin and Robert West},
      year={2026},
      eprint={2608.13482},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2608.13482},
}

License: to be finalised.