Checkpoints for two models fine-tuned with
Group Relative Policy Optimization (GRPO)
on the
mlabonne/smoltldr Reddit
summarization dataset, trained with
smolcluster
on an Apple Silicon Mac cluster.
Each checkpoint sub-folder differs only in which automatic quality metric was added
to the length reward during GRPO training.
Full rollouts, per-example scores, and paired significance tests:
reddit-posts-summarization-grpo (dataset)
Baseline (length-only, composite 2.416): not included as a checkpoint.
Composite = sum of four G-Eval metrics (max 4.0). Evaluated on 200 examples with
gpt-5-mini-2025-08-07 as the LLM judge (5 rounds averaged).
1 git clone https://huggingface.co/YuvrajSingh9886/reddit-posts-summarization-grpo
2 cd reddit-posts-summarization-grpo
1 from mlx_lm import load , generate
2
3 model , tokenizer = load ( "Qwen2.5-0.5B-Instruct-bf16/grpo-summarization-length-quality-meteor-rouge/latest" )
4 messages = [
5 { "role" : "system" , "content" : "Summarize the following Reddit post in 2-3 sentences." } ,
6 { "role" : "user" , "content" : "<paste your Reddit post here>" } ,
7 ]
8 prompt = tokenizer . apply_chat_template ( messages , tokenize = False , add_generation_prompt = True )
9 output = generate ( model , tokenizer , prompt = prompt , max_tokens = 128 , verbose = False )
10 print ( output )
1 from mlx_lm import load , generate
2
3 model , tokenizer = load ( "LFM-2.5-350M-bf16/grpo-summarization-length-quality-meteor-rouge/latest" )
4 messages = [
5 { "role" : "system" , "content" : "Summarize the following Reddit post in 2-3 sentences." } ,
6 { "role" : "user" , "content" : "<paste your Reddit post here>" } ,
7 ]
8 prompt = tokenizer . apply_chat_template ( messages , tokenize = False , add_generation_prompt = True )
9 output = generate ( model , tokenizer , prompt = prompt , max_tokens = 128 , verbose = False )
10 print ( output )
reddit-posts-summarization-grpo/
├── README.md
│
├── Qwen2.5-0.5B-Instruct-bf16/
│ ├── grpo-summarization-length-quality-bleu/latest/
│ │ ├── model.safetensors # MLX bf16 weights (~940 MB)
│ │ ├── config.json
│ │ ├── tokenizer.json
│ │ ├── tokenizer_config.json
│ │ └── chat_template.jinja
│ ├── grpo-summarization-length-quality-bleu-rouge/latest/ └── ...
│ ├── grpo-summarization-length-quality-meteor/latest/ └── ...
│ ├── grpo-summarization-length-quality-meteor-bleu/latest/ └── ...
│ ├── grpo-summarization-length-quality-meteor-rouge/latest/ └── ... ← best (2.769)
│ └── grpo-summarization-length-quality-rouge/latest/ └── ...
│
└── LFM-2.5-350M-bf16/
├── grpo-summarization-length-only/latest/
│ ├── model.safetensors # MLX bf16 weights (~709 MB)
│ ├── config.json
│ ├── tokenizer.json
│ ├── tokenizer_config.json
│ └── chat_template.jinja
├── grpo-summarization-length-quality-bleu/latest/ └── ...
├── grpo-summarization-length-quality-rouge/latest/ └── ...
├── grpo-summarization-length-quality-meteor/latest/ └── ...
├── grpo-summarization-length-quality-bleu-rouge/latest/ └── ...
├── grpo-summarization-length-quality-meteor-bleu/latest/ └── ...
└── grpo-summarization-length-quality-meteor-rouge/latest/ └── ... ← best (2.701)