Views
No views yet
google/gemma-4-E2B-it to emit explicit step-by-step reasoning,
supervised-distilled from
NovaSky-AI/Sky-T1_data_17k.
The Sky-T1 corpus is ~17k reasoning traces generated by
QwQ-32B-Preview, hand-curated
by NovaSky-AI. Final eval loss: 0.4318.kai-os/gemma4-31b-Opus-4.6-reasoning,
distilled from a different source — Claude Opus traces). This set fills
in the smaller sizes (E2B, E4B) with a QwQ-derived distillation, so the
hot-swap story works on lighter hardware.q/k/v/o/gate/up/down_proj — text tower only
(vision + audio projections under Gemma4ClippableLinear are excluded
so gradients flow to the layers that actually run during text inference)use_reentrant=False| epoch | eval_loss |
|---|---|
| 0.199 | 0.4901 |
| 0.398 | 0.4705 |
| 0.597 | 0.4585 |
| 0.796 | 0.4496 |
| 0.996 | 0.4431 |
| 1.194 | 0.4401 |
| 1.393 | 0.4359 |
| 1.592 | 0.4333 |
| 1.791 | 0.4321 |
| 1.991 | 0.4319 |
| 2.000 | 0.4318 |
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4base_id = "google/gemma-4-E2B-it"
5adapter_id = "josuediazflores/gemma-4-e2b-skyt1-reasoning-lora"
6
7tokenizer = AutoTokenizer.from_pretrained(base_id)
8model = AutoModelForCausalLM.from_pretrained(base_id, dtype="bfloat16")
9model = PeftModel.from_pretrained(model, adapter_id)
10
11messages = [{"role": "user", "content": "Prove there are infinitely many primes."}]
12inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
13out = model.generate(inputs.to(model.device), max_new_tokens=1024)
14print(tokenizer.decode(out[0], skip_special_tokens=True))@dataset{sky_t1_2025,
author = {NovaSky-AI},
title = {Sky-T1 Reasoning Dataset},
year = {2025},
url = {https://huggingface.co/datasets/NovaSky-AI/Sky-T1_data_17k}
}