Checkpoints are revisions
Every GRPO step is a git revision. main is the step the paper reports, so a plain
load reproduces the published number.
Table with columns: Revision| Revision | |
|---|
step50 | the checkpoint reported in the paper (= main) |
step100 | |
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("google/gemma-2-9b", torch_dtype="bfloat16")
tok = AutoTokenizer.from_pretrained("google/gemma-2-9b")
model = PeftModel.from_pretrained(base, "MichiganNLP/hacking-fairness-benchmarks-gemma-2-9b-z1")
model = PeftModel.from_pretrained(base, "MichiganNLP/hacking-fairness-benchmarks-gemma-2-9b-z1", revision="step100")
The model is prompted to answer in <think>...</think><answer>A</answer> format.
LoRA config: rank 32, alpha 32, on q,k,v,o,gate,up,down_proj.
Trained against base revision 33c193028431c2fde6c6e51f29e6f17b60cbfac6.
Citation
@inproceedings{deng2026one,
title = {One Example Is Enough to Pass Fairness Benchmarks:
Rethinking Fairness Evaluation for Aligned {LLM}s},
author = {Deng, Naihao and Arif, Samee and Chang, Shuaichen and
Chen, Yulong and Mihalcea, Rada},
booktitle = {Proceedings of the 2026 Conference on Empirical Methods in
Natural Language Processing},
year = {2026}
}