Views
No views yet
google/gemma-3-270m. This is a starting point for
your own training / fine-tuning, not a trained model: it is the standard copy-init upcycle, so at step
0 it is mathematically identical to the dense Gemma-3-270m. Load it, then train.⚠️ Untrained. Out of the box it behaves exactly likegemma-3-270m(verified: max logit diff0.000e+00). Its value is as a clean MoE init with more capacity to train into.
gemma3moe — Gemma-3 with each dense FFN replaced by a router + 16 Gemma3MLP
experts (softmax top-4, renormalized).llama.cpp.modeling_gemma3_moe.py + auto_map, so it reloads with
trust_remote_code=True.| Total params | Active (top-4) | Vocab | |
|---|---|---|---|
| This checkpoint | ~1.33B | ~481M | 262k (full) |
google/gemma-3-270m (dense) | ~268M | ~268M | 262k |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4repo = "tardellirs/gemma3moe-16x4-270m-starter"
5tok = AutoTokenizer.from_pretrained(repo)
6model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16)
7
8# It's an INIT — fine-tune it on your data before using for generation.llama.cpp, using the
open-source toolkit that built this checkpoint:1# reproduce this checkpoint
2python -m gemma3moe.upcycle --src google/gemma-3-270m --out ./starter --num-experts 16 --top-k 4
3# fine-tune
4python -m gemma3moe.train --init ./starter --train train.jsonl --val val.jsonl --out ./trainedstd=0.02) so gradients can differentiate the experts during
training; all 16 experts are copies of the dense FFN at init.train.py and
docs/NOTES.md).