--- pipeline_tag: any-to-any license: apache-2.0 base_model: google/gemma-4-E4B-it 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-e4b-it Pure-**Keras 3** conversion of [`google/gemma-4-E4B-it`](https://huggingface.co/google/gemma-4-E4B-it) for [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on **TensorFlow / Torch / JAX**. This is the **8B** 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-E4B-it). ## 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-e4b-it") tokenizer = Gemma4Tokenizer.from_weights("kerasformers/gemma-4-e4b-it") 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-e4b-it") processor = Gemma4Processor.from_weights("kerasformers/gemma-4-e4b-it") 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 | 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-E4B-it")`. ## Special Thanks A huge thank you to the Google Gemma authors for creating and releasing these models. License: Apache 2.0.