Instructions to use mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit 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("mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit") config = load_config("mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit") # 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 mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit 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 "mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit"
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 mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit
Run Hermes
hermes
- OpenClaw new
How to use mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit"
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 "mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit" \ --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"
diffusiongemma-26B-A4B-it-OptiQ-4bit
Built with mlx-optiq, the MLX-native toolkit to quantize, fine-tune, and serve LLMs locally on Apple Silicon, no PyTorch and no cloud. Try the Lab · All OptiQ quants · Docs
OptiQ data-driven mixed-precision quant of Google's DiffusionGemma-26B-A4B-it, a block/masked-diffusion LLM (image-text-to-text), the first diffusion model in the OptiQ lineup.
Instead of uniform 4-bit, OptiQ measures each layer's quantization sensitivity — KL on the denoising-canvas logits, sampled across the denoising schedule the model actually walks — and spends an 8-bit budget where the measurement says it matters. The SigLIP vision tower is not quantized at all: it rides at bf16 in a sidecar, so the image path keeps full precision and the entire bit budget goes to the language tower.
247 of 299 language tensors at 8-bit, 52 at 4-bit — 4.685 bits-per-weight. Vision: bf16.
⚠️ Requires
mlx-optiq≥ 0.3.2. DiffusionGemma is not loadable by stockmlx-lm/mlx-vlm; OptiQ ships a vendored, dependency-free decoder for it.
Capability Score
Full 6-metric OptiQ Capability Score (optiq eval --task all --score):
| Benchmark | Score |
|---|---|
| MMLU (1000, 5-shot) | 56.1 |
| GSM8K (1000) | 94.4 |
| IFEval (strict) | 72.5 |
| BFCL v3 | 69.0 |
| HumanEval (pass@1) | 87.2 |
| HashHop | 34.0 |
| Capability Score | 68.87 |
| Disk | 16.7 GB (from 51.6 GB bf16) |
Vision
The vision tower is bf16, so image understanding is not degraded by the quant. Asked to describe four photos in one sentence:
| image | output |
|---|---|
| a brown bear | "A close-up portrait of a large brown bear sitting in a grassy field." |
| two cats on a blanket | "Two tabby cats are sleeping on a pink blanket next to two television remotes." |
| a tiled bathroom | "A bathroom features a white floor-level toilet, a large white pipe…" |
| an inverted stop sign | "A red octagonal stop sign is mounted upside down on a metal post." |
Usage
from optiq.vlm.diffusion_gemma import load, generate
model, tokenizer = load("mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit")
# text
print(generate(model, tokenizer, "Write a haiku about Apple Silicon."))
# image + text
from PIL import Image
print(generate(model, tokenizer, "What is in this image?", images=[Image.open("photo.jpg")]))
Best inference config
DiffusionGemma decodes by iteratively un-masking a fixed 256-token canvas. The sampler choice dominates speed:
| sampler | code | prose |
|---|---|---|
entropy-bound (model default) |
12.7 tok/s | 1.8 tok/s |
confidence-threshold (OptiQ default) |
58 tok/s | 9 tok/s |
OptiQ defaults to confidence-threshold (generate(..., sampler="confidence-threshold")), 4.6–5× faster than the model's default, with no quality loss. On code it's comparable to the autoregressive Gemma-4 26B-A4B (~60 tok/s); on prose it's slower (diffusion's strength is structured/parallel-friendly output).
LoRA fine-tuning
OptiQ ships a diffusion-native LoRA trainer (the model's denoising objective, not autoregressive cross-entropy):
from optiq.vlm.diffusion_gemma.lora import train_diffusion_lora, load_diffusion_lora
train_diffusion_lora(model_path, "data/", "adapter/", rank=8) # data/train.jsonl: {prompt, completion}
model, tok = load_diffusion_lora(model_path, "adapter/")
Feature support
| OptiQ feature | DiffusionGemma |
|---|---|
| Mixed-precision quant | ✅ |
| Text + image generation | ✅ (vision tower at bf16) |
| LoRA fine-tuning | ✅ (diffusion-native denoising loss) |
| MTP / speculative / assistant draft | N/A (diffusion is not autoregressive; parallel canvas un-masking is the native analog) |
| KV-cache quant | N/A (fixed 256-token canvas; the cache holds only the prompt) |
How it was made
pip install mlx-optiq
optiq convert google/diffusiongemma-26B-A4B-it --target-bpw 4.66 --candidate-bits 4,8
optiq convert detects the diffusion architecture and routes to the masked-canvas pipeline: it builds a uniform-4-bit reference, measures per-layer KL on the denoising-canvas logits (sampled at several points along the denoising schedule, seeded so the sweep is reproducible), runs the greedy-knapsack allocator, and quantizes. The vision/audio towers are excluded from the bit budget and written to optiq/optiq_vision.safetensors at bf16 — a *.safetensors glob does not descend into the subfolder, so third-party loaders ignore the sidecar while OptiQ loads it.
Built with OptiQ. Vendored DiffusionGemma decoder derived from mlx-vlm (MIT).
Quantize your own
pip install mlx-optiq
optiq convert <hf-model-id> --target-bpw 5.0 --candidate-bits 4,8
optiq lab # full local workbench: chat, compare, quantize, fine-tune
- Downloads last month
- 5,264
4-bit
Model tree for mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit
Base model
google/diffusiongemma-26B-A4B-it