Views
No views yet
google/gemma-4-E2B-it using the SSD (Simple Self-Distillation) technique from Apple's arXiv:2604.01193.google/gemma-4-E2B-it (5.1B params, multimodal Gemma 4)wrmedford/Gemma-4-E4B-it-SSD (~17K coding problems from LiveCodeBench v6)1from peft import PeftModel, PeftConfig
2from transformers import AutoModelForImageTextToText, AutoTokenizer
3import torch
4
5base = AutoModelForImageTextToText.from_pretrained(
6 'google/gemma-4-E2B-it',
7 torch_dtype=torch.bfloat16,
8 device_map='auto',
9)
10tokenizer = AutoTokenizer.from_pretrained('google/gemma-4-E2B-it')
11model = PeftModel.from_pretrained(base, 'ludsvick/gemma-4-E2B-it-SSD')
12model.eval()
13
14# Generate at T=0.6 (per SSD paper)
15messages = [{'role': 'user', 'content': 'Write a Fibonacci function...'}]
16text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
17inputs = tokenizer(text, return_tensors='pt').to(model.device)
18
19with torch.no_grad():
20 outputs = model.generate(
21 **inputs,
22 max_new_tokens=512,
23 temperature=0.6,
24 do_sample=True,
25 top_p=0.95,
26 )
27print(tokenizer.decode(outputs[0], skip_special_tokens=True))1from merge_and_test import main
2main() # Merge adapter and run test inference| File | Description |
|---|---|
train_ssd.py | QLoRA training script (what was used) |
train_ssd_full.py | Full SSD script with on-policy generation |
train_ssd_sft.py | Alternative SFT-only script |
merge_and_test.py | Merge adapter + run inference test |
evaluate_lcb.py | LiveCodeBench evaluation script |
adapter_model.safetensors | Trained LoRA weights (92.2MB) |
adapter_config.json | LoRA configuration |
merge_and_test.py to verify it generates code correctlyevaluate_lcb.py on LiveCodeBench v6 to measure improvement1@article{ssd2025,
2 title={Embarrassingly Simple Self-Distillation Improves Code Generation},
3 author={{Apple ML Team}},
4 year={2025},
5 eprint={2604.01193},
6 archivePrefix={arXiv},
7}