Coder-Gemma-4-E2B-Uncensored (Post-Mortem)

I tried to build a front-end coding specialist out of Gemma 4 E2B. It failed.

The base model is actually better at front-end development than this finetune is. It is also better at general Python. I am publishing this model and its full benchmark results anyway, because almost nobody publishes their failed runs, and the exact recipe for how I accidentally broke a good model might save you a few hours of compute.

If you just want a good small code model, go download the base llmfan46/gemma-4-E2B-it-ultra-uncensored-heretic. It beats this one on every metric.

The Autopsy (Benchmarks)

Everything below was measured with lm-evaluation-harness using greedy decoding and seed 0. Same harness, same conditions for both models.

General Python Logic

Model HumanEval pass@1 MBPP pass@1
Base (heretic Q8_0) 66.5 43.5
This model (Q8_0) 56.7 40.5

Front-End Gate (12 React/TSX components)

Metric Base (heretic) This model
Structurally sound 12/12 12/12
Passes tsc --noEmit (strict) 10/12 9/12
Renders non-trivial HTML 11/12 10/12

The finetune lost about 10 points on abstract algorithmic logic, and it actually lost 1 point on the exact strict TypeScript compilation gate I trained it to improve.

Why it failed (Negative Transfer)

This is the part that is actually useful if you are training small models.

Gemma 4 E2B is already a highly optimized, very capable small model. When I injected about 700 synthetic front-end rows (Opus 4.6 and Claude Fable 5 distillates) and oversampled them to a third of the training updates, I did not teach it new front-end skills. Instead, I caused negative transfer.

The model learned to mimic the surface-level conversational style of the synthetic front-end data, but the weight updates scrambled the underlying logical routing that made the base model good at TypeScript in the first place. It traded actual reasoning for stylistic mimicry. The lesson here is that you cannot easily finetune a small, already-strong model to be "better" at a specific sub-skill using a tiny dataset of synthetic examples without degrading its general baseline.

Training Recipe (So you don't repeat it)

Property Value
Base model llmfan46/gemma-4-E2B-it-ultra-uncensored-heretic
Method QLoRA 4-bit, merged to full model
LoRA rank / alpha 16 / 32
LoRA targets q, k, v, o, gate, up, down, plus PLE gate and projection
Trainable params ~24M
Data 12,152 rows total (8k KodCode Python, ~700 unique front-end rows oversampled)
Training context 2048 tokens
Learning rate 1.5e-4, cosine schedule, 20 warmup steps
Batch 1 with grad accum 16 (effective 16)
Steps 260 (~47 min on a single RX 6700 XT)

Usage

If you still want to test it yourself, it is a standard Q8_0 GGUF.

llama.cpp:

llama-server -m Coder-Gemma-4-E2B-Uncensored.Q8_0.gguf -c 4096 -ngl 99 --jinja --port 8080
Downloads last month
851
GGUF
Model size
5B params
Architecture
gemma4
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for minas2025/Gemma-4-E2B-Coder-Uncensored

Datasets used to train minas2025/Gemma-4-E2B-Coder-Uncensored

Evaluation results