Instructions to use zeromodels/gemma-4-e2b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ZeroModels
How to use zeromodels/gemma-4-e2b with ZeroModels:
# pip install -U zeromodels # ZeroModels is pure Keras 3, so pick a backend: "jax", "torch" or "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" from zeromodels import AutoZModel # AutoZModel reads the repo's model_type and loads the matching class. # For a task head use the matching loader, e.g. AutoZMImageClassify / AutoZMDetect / # AutoZMSemanticSegment / AutoZMTextGenerate (see zeromodels.auto). model = AutoZModel.from_weights("zeromodels/gemma-4-e2b") - Keras
How to use zeromodels/gemma-4-e2b with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://zeromodels/gemma-4-e2b") - Notebooks
- Google Colab
- Kaggle
Migrate to zeromodels (rename kf_*.json -> zm_*.json, fix refs in config + README, ensure tag + badge)
b51e234 verified |
Download README.md from zeromodels/gemma-4-e2b: direct link, hf CLI and curl.
- Browser
- Download file 4.75 kB
-
https://huggingface.co/zeromodels/gemma-4-e2b/resolve/main/README.md
- Command line
-
hf download hf://zeromodels/gemma-4-e2b/README.md
-
curl -L -o README.md https://huggingface.co/zeromodels/gemma-4-e2b/resolve/main/README.md
4.75 kB
| pipeline_tag: any-to-any | |
| license: apache-2.0 | |
| base_model: google/gemma-4-E2B | |
| library_name: zeromodels | |
| language: | |
| - en | |
| tags: | |
| - keras | |
| - zeromodels | |
| - gemma4 | |
| - gemma-4 | |
| - any-to-any | |
| - pytorch | |
| - jax | |
| - tf | |
| *See [our collection](https://huggingface.co/zeromodels) for all Gemma 4 sizes and variants.* | |
| # Run Gemma 4 with Keras 3: JAX, PyTorch, or TensorFlow | |
| [](https://github.com/IMvision12/ZeroModels) [](https://imvision12.github.io/ZeroModels/gemma4/) [](https://huggingface.co/zeromodels) | |
| # zeromodels/gemma-4-e2b | |
| Pure-**Keras 3** conversion of [`google/gemma-4-E2B`](https://huggingface.co/google/gemma-4-E2B) for | |
| [zeromodels](https://github.com/IMvision12/ZeroModels). 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 zeromodels.models.gemma4 import Gemma4TextGenerate, Gemma4Tokenizer | |
| model = Gemma4TextGenerate.from_weights("zeromodels/gemma-4-e2b") | |
| tokenizer = Gemma4Tokenizer.from_weights("zeromodels/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 zeromodels.models.gemma4 import Gemma4ConditionalGenerate, Gemma4Processor | |
| model = Gemma4ConditionalGenerate.from_weights("zeromodels/gemma-4-e2b") | |
| processor = Gemma4Processor.from_weights("zeromodels/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("zeromodels/<variant>")`: | |
| | Variant | Hub | | |
| | --- | --- | | |
| | `gemma-4-12b` | [zeromodels/gemma-4-12b](https://huggingface.co/zeromodels/gemma-4-12b) | | |
| | `gemma-4-12b-it` | [zeromodels/gemma-4-12b-it](https://huggingface.co/zeromodels/gemma-4-12b-it) | | |
| | `gemma-4-26b-a4b` | [zeromodels/gemma-4-26b-a4b](https://huggingface.co/zeromodels/gemma-4-26b-a4b) | | |
| | `gemma-4-26b-a4b-it` | [zeromodels/gemma-4-26b-a4b-it](https://huggingface.co/zeromodels/gemma-4-26b-a4b-it) | | |
| | `gemma-4-31b` | [zeromodels/gemma-4-31b](https://huggingface.co/zeromodels/gemma-4-31b) | | |
| | `gemma-4-31b-it` | [zeromodels/gemma-4-31b-it](https://huggingface.co/zeromodels/gemma-4-31b-it) | | |
| | `gemma-4-e2b` | [zeromodels/gemma-4-e2b](https://huggingface.co/zeromodels/gemma-4-e2b) | | |
| | `gemma-4-e2b-it` | [zeromodels/gemma-4-e2b-it](https://huggingface.co/zeromodels/gemma-4-e2b-it) | | |
| | `gemma-4-e4b` | [zeromodels/gemma-4-e4b](https://huggingface.co/zeromodels/gemma-4-e4b) | | |
| | `gemma-4-e4b-it` | [zeromodels/gemma-4-e4b-it](https://huggingface.co/zeromodels/gemma-4-e4b-it) | | |
| ## Tips | |
| - Set `KERAS_BACKEND` **before** importing Keras / zeromodels. | |
| - 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/ZeroModels/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. | |