Text Generation
PEFT
Safetensors
English
Russian
reasoning
math
logic
unsloth
gemma-4
lora
conversational
Eval Results (legacy)
Instructions to use Zhantas/DeepGemma-E4B-Reasoning with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Zhantas/DeepGemma-E4B-Reasoning with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("unsloth/gemma-4-e4b-it-unsloth-bnb-4bit") model = PeftModel.from_pretrained(base_model, "Zhantas/DeepGemma-E4B-Reasoning") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Unsloth Studio
How to use Zhantas/DeepGemma-E4B-Reasoning with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Zhantas/DeepGemma-E4B-Reasoning to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Zhantas/DeepGemma-E4B-Reasoning to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Zhantas/DeepGemma-E4B-Reasoning to start chatting
Load model with FastModel
pip install unsloth from unsloth import FastModel model, tokenizer = FastModel.from_pretrained( model_name="Zhantas/DeepGemma-E4B-Reasoning", max_seq_length=2048, )
| base_model: google/gemma-4-E4B-IT | |
| library_name: peft | |
| tags: | |
| - reasoning | |
| - math | |
| - logic | |
| - unsloth | |
| - gemma-4 | |
| - peft | |
| - lora | |
| - text-generation | |
| license: gemma | |
| language: | |
| - en | |
| - ru | |
| datasets: | |
| - crownelius/Opus-4.6-Reasoning-3000x | |
| - Jackrong/Qwen3.5-reasoning-700x | |
| - TeichAI/claude-4.5-opus-high-reasoning-250x | |
| - Roman1111111/gemini-3.1-pro-hard-high-reasoning | |
| - ianncity/KIMI-K2.5-1000000x | |
| - Roman1111111/claude-opus-4.6-10000x | |
| - Jackrong/GLM5.1-Reasoning-1M-Cleaned | |
| pipeline_tag: text-generation | |
| model-index: | |
| - name: DeepGemma-E4B-Reasoning | |
| results: | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: GSM8K | |
| type: openai/gsm8k | |
| config: main | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 62.0 | |
| name: accuracy | |
| verified: false | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: HellaSwag | |
| type: Rowan/hellaswag | |
| split: validation | |
| metrics: | |
| - type: accuracy | |
| value: 86.0 | |
| name: accuracy | |
| verified: false | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: ARC-Challenge | |
| type: allenai/ai2_arc | |
| config: ARC-Challenge | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 96.0 | |
| name: accuracy | |
| verified: false | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: TruthfulQA | |
| type: truthfulqa/truthful_qa | |
| config: multiple_choice | |
| split: validation | |
| metrics: | |
| - type: accuracy | |
| value: 79.0 | |
| name: accuracy | |
| verified: false | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: MMLU | |
| type: cais/mmlu | |
| config: all | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 69.0 | |
| name: accuracy | |
| verified: false | |
|  | |
| # DeepGemma-E4B-Reasoning | |
| A reasoning fine-tune of `google/gemma-4-E4B-IT` via LoRA (rank 32), trained to produce | |
| explicit step-by-step thinking before every final answer — similar to o1-style chain-of-thought. | |
| **Base model:** google/gemma-4-E4B-IT | |
| **Adapter size:** ~339 MB | |
| **Hardware:** RTX 4090 (24 GB VRAM) | |
| **Framework:** Unsloth + TRL SFTTrainer | |
| --- | |
| ## Evaluation results | |
| Evaluated on 50 samples per benchmark against the unmodified `google/gemma-4-E4B-IT` base. | |
| | Benchmark | Base | DeepGemma | Δ | | |
| |---|---|---|---| | |
| | 🔢 GSM8K (Math) | 44.0% | **62.0%** | ▲ +18.0% | | |
| | 💡 HellaSwag (Commonsense) | 80.0% | **86.0%** | ▲ +6.0% | | |
| | 🔬 ARC-Challenge (Science) | 92.0% | **96.0%** | ▲ +4.0% | | |
| | 🧠 TruthfulQA (Facts) | 70.0% | **79.0%** | ▲ +9.0% | | |
| | 📚 MMLU (Mixed) | 60.0% | **69.0%** | ▲ +9.0% | | |
| | **Overall** | **70.0%** | **79.2%** | **▲ +9.2%** | | |
| DeepGemma-E4B-Reasoning outperforms the base model across **all five benchmarks**. | |
| The largest gain is in **mathematical reasoning** — GSM8K improves by +18 percentage points | |
| (44% → 62%). This is the direct effect of training on chain-of-thought distillation data: | |
| the model learns to decompose multi-step word problems into explicit intermediate steps | |
| rather than jumping to a final answer. When you force a model to write out its reasoning, | |
| arithmetic errors become visible and self-correctable mid-generation. | |
| Commonsense reasoning (HellaSwag +6%) and factual accuracy (TruthfulQA +9%) also benefit | |
| significantly — structured thinking helps the model rule out implausible answer choices | |
| before committing. The MMLU improvement (+9%) across diverse academic subjects suggests | |
| the reasoning fine-tune generalizes well beyond pure math, likely because the training | |
| corpus included science, philosophy, and logic traces in addition to mathematical problems. | |
| ARC-Challenge was already near ceiling at 92%, so the +4% gain there is meaningful given | |
| how little headroom remained. | |
| --- | |
| ## What changed | |
| The adapter teaches the model to route its internal reasoning through a dedicated thinking | |
| channel before outputting the final response. Training data was sourced exclusively from | |
| high-reasoning traces distilled from frontier models. | |
| ### Training data (≈ 30 000 deduplicated pairs) | |
| | Source | Size | | |
| |---|---| | |
| | crownelius/Opus-4.6-Reasoning-3000x | ~3 000 | | |
| | Jackrong/Qwen3.5-reasoning-700x | ~700 | | |
| | TeichAI/claude-4.5-opus-high-reasoning-250x | ~250 | | |
| | Roman1111111/gemini-3.1-pro-hard-high-reasoning | full | | |
| | ianncity/KIMI-K2.5-1000000x (General-Distillation) | 15 000 | | |
| | Roman1111111/claude-opus-4.6-10000x | ~10 000 | | |
| | Jackrong/GLM5.1-Reasoning-1M-Cleaned (PHD-Science) | 3 000 | | |
| | Jackrong/GLM5.1-Reasoning-1M-Cleaned (Math) | 2 000 | | |
| ### Training config | |
| | Parameter | Value | | |
| |---|---| | |
| | Max sequence length | 3 072 | | |
| | LoRA rank / alpha | 32 / 32 | | |
| | Epochs | 2 | | |
| | Learning rate | 2e-4 (cosine) | | |
| | Effective batch size | 8 (batch 1 × grad_accum 8) | | |
| | Optimizer | adamw_8bit | | |
| | BF16 | yes | | |
| --- | |
| ## Output format | |
| When triggered correctly, the model wraps its reasoning in a thinking channel and | |
| then gives the final answer: | |
| ``` | |
| <|channel>thought | |
| 1. First I analyze... | |
| 2. Then I consider... | |
| 3. Therefore... | |
| <channel|> | |
| Final answer here. | |
| ``` | |
| --- | |
| ## Quick start | |
| > **Critical:** include `<|think|>` in the system prompt — without it the thinking | |
| > channel will not activate. | |
| ### With PEFT + transformers | |
| ```python | |
| from peft import PeftModel | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| base = "google/gemma-4-E4B-IT" | |
| adapter = "Zhantas/DeepGemma-E4B-Reasoning" | |
| tokenizer = AutoTokenizer.from_pretrained(base) | |
| model = AutoModelForCausalLM.from_pretrained(base, device_map="auto") | |
| model = PeftModel.from_pretrained(model, adapter) | |
| messages = [ | |
| {"role": "system", "content": "<|think|>"}, | |
| {"role": "user", "content": "How many r's are in strawberry? Think step by step."}, | |
| ] | |
| inputs = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=True, | |
| add_generation_prompt=True, | |
| return_tensors="pt", | |
| ).to("cuda") | |
| out = model.generate( | |
| inputs, | |
| max_new_tokens=512, | |
| temperature=0.7, | |
| top_p=0.95, | |
| do_sample=True, | |
| ) | |
| print(tokenizer.decode(out[0], skip_special_tokens=False)) | |
| ``` | |
| ### With Unsloth (faster inference) | |
| ```python | |
| from unsloth import FastLanguageModel | |
| model, tokenizer = FastLanguageModel.from_pretrained( | |
| "Zhantas/DeepGemma-E4B-Reasoning", | |
| load_in_4bit=True, | |
| ) | |
| FastLanguageModel.for_inference(model) | |
| tok = tokenizer.tokenizer if hasattr(tokenizer, "tokenizer") else tokenizer | |
| prompt = tok.apply_chat_template( | |
| [ | |
| {"role": "system", "content": "<|think|>"}, | |
| {"role": "user", "content": "Prove that sqrt(2) is irrational."}, | |
| ], | |
| tokenize=False, | |
| add_generation_prompt=True, | |
| ) | |
| inputs = tok(prompt, return_tensors="pt").to("cuda") | |
| out = model.generate(**inputs, max_new_tokens=1024, temperature=0.7, top_p=0.95, do_sample=True) | |
| print(tok.decode(out[0], skip_special_tokens=False)) | |
| ``` | |
| --- | |
| ## Limitations | |
| - The adapter was trained on English and Russian data; performance on other languages is untested. | |
| - Very long reasoning chains (> 3 072 tokens total) may be truncated. | |
| - As a LoRA adapter the base model weights are unchanged; all base model limitations apply. | |
| --- | |
| ## License | |
| This adapter inherits the [Gemma license](https://ai.google.dev/gemma/terms). Use is subject | |
| to Google's Gemma terms of service. | |
| --- | |
| Trained with [Unsloth](https://github.com/unslothai/unsloth). |