gemma-4-e2b / README.md
IMvision12's picture
Add Gemma4TextGenerate text-only usage example
e26c6a5 verified
|
Raw
History Blame Contribute Delete
4.83 kB
---
pipeline_tag: any-to-any
license: apache-2.0
base_model: google/gemma-4-E2B
library_name: kerasformers
language:
- en
tags:
- keras
- kerasformers
- gemma4
- gemma-4
- any-to-any
- pytorch
- jax
- tf
---
*See [our collection](https://huggingface.co/kerasformers) for all Gemma 4 sizes and variants.*
# Run Gemma 4 with Keras 3: JAX, PyTorch, or TensorFlow
[![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-181717?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-Gemma_4-1f6feb)](https://imvision12.github.io/KerasFormers/gemma4/) [![HuggingFace](https://img.shields.io/badge/HuggingFace-Gemma_4-ffd21e?logo=huggingface&logoColor=black)](https://huggingface.co/kerasformers)
# kerasformers/gemma-4-e2b
Pure-**Keras 3** conversion of [`google/gemma-4-E2B`](https://huggingface.co/google/gemma-4-E2B) for
[kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on
**TensorFlow / Torch / JAX**. This is the **5B** variant, served here as
**image + audio + text -> text** via `Gemma4Processor`; weights are stored in **bfloat16**.
For model details, license, and usage terms, see Google's
[model card](https://huggingface.co/google/gemma-4-E2B).
## Gemma 4 family
| Property | E2B | E4B | 12B Unified | 31B Dense |
| --- | --- | --- | --- | --- |
| Total Parameters | 2.3B effective (5.1B with embeddings) | 4.5B effective (8B with embeddings) | 11.95B | 30.7B |
| Layers | 35 | 42 | 48 | 60 |
| Sliding Window | 512 tokens | 512 tokens | 1024 tokens | 1024 tokens |
| Context Length | 128K tokens | 128K tokens | 256K tokens | 256K tokens |
| Vocabulary Size | 262K | 262K | 262K | 262K |
| Supported Modalities | Text, Image, Audio | Text, Image, Audio | Text, Image, Audio | Text, Image |
| Vision Encoder Parameters | ~150M | ~150M | - | ~550M |
| Audio Encoder Parameters | ~300M | ~300M | - | No Audio |
## ✨ Quick start
### Text-only
```python
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from kerasformers.models.gemma4 import Gemma4TextGenerate, Gemma4Tokenizer
model = Gemma4TextGenerate.from_weights("kerasformers/gemma-4-e2b")
tokenizer = Gemma4Tokenizer.from_weights("kerasformers/gemma-4-e2b")
inputs = tokenizer([{"role": "user", "content": "Hello, who are you?"}])
outputs = model.generate(**inputs, max_new_tokens=64)
print(tokenizer.decode(outputs[0]))
```
### Image + audio + text
```python
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from PIL import Image
from kerasformers.models.gemma4 import Gemma4ConditionalGenerate, Gemma4Processor
model = Gemma4ConditionalGenerate.from_weights("kerasformers/gemma-4-e2b")
processor = Gemma4Processor.from_weights("kerasformers/gemma-4-e2b")
inputs = processor(conversation=[
{"role": "user", "content": [
{"type": "image", "image": Image.open("cat.jpg")},
{"type": "audio", "path": "clip.wav"},
{"type": "text", "text": "Describe the image and what you hear."},
]}
])
outputs = model.generate(**inputs, max_new_tokens=64)
print(processor.decode(outputs[0]))
```
Load any Gemma 4 variant the same way with `from_weights("kerasformers/<variant>")`:
| Variant | Hub |
| --- | --- |
| `gemma-4-12b` | [kerasformers/gemma-4-12b](https://huggingface.co/kerasformers/gemma-4-12b) |
| `gemma-4-12b-it` | [kerasformers/gemma-4-12b-it](https://huggingface.co/kerasformers/gemma-4-12b-it) |
| `gemma-4-26b-a4b` | [kerasformers/gemma-4-26b-a4b](https://huggingface.co/kerasformers/gemma-4-26b-a4b) |
| `gemma-4-26b-a4b-it` | [kerasformers/gemma-4-26b-a4b-it](https://huggingface.co/kerasformers/gemma-4-26b-a4b-it) |
| `gemma-4-31b` | [kerasformers/gemma-4-31b](https://huggingface.co/kerasformers/gemma-4-31b) |
| `gemma-4-31b-it` | [kerasformers/gemma-4-31b-it](https://huggingface.co/kerasformers/gemma-4-31b-it) |
| `gemma-4-e2b` | [kerasformers/gemma-4-e2b](https://huggingface.co/kerasformers/gemma-4-e2b) |
| `gemma-4-e2b-it` | [kerasformers/gemma-4-e2b-it](https://huggingface.co/kerasformers/gemma-4-e2b-it) |
| `gemma-4-e4b` | [kerasformers/gemma-4-e4b](https://huggingface.co/kerasformers/gemma-4-e4b) |
| `gemma-4-e4b-it` | [kerasformers/gemma-4-e4b-it](https://huggingface.co/kerasformers/gemma-4-e4b-it) |
## Tips
- Set `KERAS_BACKEND` **before** importing Keras / kerasformers.
- Loads in **bfloat16** by default. Pass `load_dtype="float32"` for full precision,
or `quantization="int8"` to shrink further.
- See the [Gemma 4 docs](https://imvision12.github.io/KerasFormers/gemma4/).
- Community / upstream weights still work via the `hf:` prefix:
`Gemma4ConditionalGenerate.from_weights("hf:google/gemma-4-E2B")`.
## Special Thanks
A huge thank you to the Google Gemma authors for creating and releasing these models.
License: Apache 2.0.