Instructions to use MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit") config = load_config("MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
File size: 4,139 Bytes
c972a0e 4e1c80a c972a0e e5a6a4b c972a0e d010936 9d19c2f c972a0e d010936 c972a0e e5a6a4b 4e1c80a e5a6a4b c972a0e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | ---
base_model: google/gemma-4-E2B-it-qat-q4_0-unquantized
library_name: mlx
pipeline_tag: image-text-to-text
license: apache-2.0
quantized_by: MichaelAnthony
tags:
- gemma4
- mlx
- mlx-vlm
- 6-bit
- quantized
- affine
- snowfox
---
# Gemma 4 E2B SnowFox MLX 6-bit (affine, group 64)
Standard MLX-VLM 6-bit affine weight quantization of the SnowFox model —
the MLX equivalent of GGUF `Q6_K`. This is a genuine MLX-VLM package
(quantized `safetensors` + `config.json` carrying a `quantization` field),
not a GGUF file or a renamed HF checkpoint.
SnowFox is a language-only LoRA merge based on Google's Gemma 4 E2B
instruction QAT-derived checkpoint. The image and audio towers were frozen
during fine-tuning and are retained here, together with the processor and
tokenizer needed by MLX-VLM.
## Exact lineage
- Base: [`google/gemma-4-E2B-it-qat-q4_0-unquantized`](https://huggingface.co/google/gemma-4-E2B-it-qat-q4_0-unquantized)
- Quantized from: [`MichaelAnthony/gemma4-e2b-Snowfox-hf`](https://huggingface.co/MichaelAnthony/gemma4-e2b-Snowfox-hf) (the canonical merged BF16 source)
- FP16 reference: [`MichaelAnthony/gemma4-e2b-Snowfox-MLX`](https://huggingface.co/MichaelAnthony/gemma4-e2b-Snowfox-MLX)
- Quantization: MLX affine, 6-bit, group size 64 (`{"group_size": 64, "bits": 6, "mode": "affine"}`)
## What is quantized
- **280 language-model layers** (`q/k/v/o` projections, MLP gate/up/down,
the multimodal embedding projections, and the large embeddings) are 6-bit
affine quantized: packed `uint32` `weight` (4 values per 3 bytes, low bits
first) + float16 `scales`/`biases`.
- **The vision tower and audio tower are left in float16 (dense)** — matching
MLX-VLM's `convert --quantize`, which skips multimodal modules. Their QAT
`ClippableLinear` layers carry input/output clipping parameters
(`input_max`/`input_min`/`output_max`/`output_min`) that must not be
affine-quantized, so they stay dense and are loaded as regular `nn.Linear`.
- The dense per-layer input embedding (`embed_tokens_per_layer`) **is**
quantized here, so the language model stays compact without exceeding the
Metal buffer cap.
## Package contents
- `model-00001-of-00001.safetensors` (4,708,626,430 bytes): the 6-bit MLX model
in a single shard (~4.71 GB total).
- `model.safetensors.index.json`: complete shard map.
- `config.json` (with `quantization` + `quantization_config`), `generation_config.json`,
`processor_config.json`, tokenizer files, and `chat_template.jinja`.
## Model size vs HF parameter display
This is a **~5.1B-parameter** model (2.3B effective), identical to the source
SnowFox checkpoint. Hugging Face's model page reports ~1.49B because the 6-bit
weights are stored as *packed* `uint32` words (each holds multiple 6-bit values)
and HF counts each packed word as one parameter. The packed word count is a
storage detail, not the parameter count.
## Verification performed
The conversion host has no Apple-Silicon MLX runtime, so the quantized package
was structurally validated before upload:
- 1,951 source tensors mapped with no missing or extra keys; 280 language-model
layers quantized; vision/audio towers left dense.
- Quantized weight format matches the MLX affine contract: 6-bit values packed
4-per-3-bytes (24-bit little-endian word), dequantization `scale * q + bias`,
group 64.
- Round-trip dequantization of sampled layers reproduces the source weights to
within 6-bit precision.
**Apple-Silicon MLX-VLM inference has not been run.** Treat this as a
structurally validated quantization pending a real Apple-Silicon text / image /
audio smoke test.
## Run on Apple Silicon
Use full MLX-VLM (not text-only MLX-LM) — Gemma 4 E2B includes image and audio:
```bash
python -m pip install "mlx-vlm==0.6.13"
python -m mlx_vlm.generate \
--model MichaelAnthony/gemma4-e2b-Snowfox-MLX-6bit \
--max-tokens 128 \
--temperature 0.0 \
--prompt "Explain what SnowFox is in one sentence."
```
Add `--image /path/to/image.png` for image prompting.
## License
Gemma 4 is Apache-2.0. This derivative package uses the Apache-2.0 license
declared by the pinned base model.
|