Views
No views yet
google/gemma-4-E4B-it to emit explicit step-by-step reasoning
in the style of Claude Opus 4.6, supervised-distilled from a
combined corpus of Opus + Sonnet reasoning traces:TeichAI/Claude-Opus-4.6-Reasoning-887xTeichAI/Claude-Sonnet-4.6-Reasoning-1100xTeichAI/claude-4.5-opus-high-reasoning-250xCrownelius/Opus-4.6-Reasoning-2100x-formattedkai-os/gemma4-31b-Opus-4.6-reasoning
at the 31B tier. This set fills in the smaller sizes (E2B, E4B) with the
same Opus-derived recipe, 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.767 | 0.9930 |
| 1.533 | 0.9857 |
| 2.000 | 0.9813 |
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4base_id = "google/gemma-4-E4B-it"
5adapter_id = "josuediazflores/gemma-4-e4b-opus-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}
}