Instructions to use aleada/Gemma-4-12B-it-W4A16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use aleada/Gemma-4-12B-it-W4A16 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="aleada/Gemma-4-12B-it-W4A16") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("aleada/Gemma-4-12B-it-W4A16") model = AutoModelForMultimodalLM.from_pretrained("aleada/Gemma-4-12B-it-W4A16", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use aleada/Gemma-4-12B-it-W4A16 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "aleada/Gemma-4-12B-it-W4A16" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aleada/Gemma-4-12B-it-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/aleada/Gemma-4-12B-it-W4A16
- SGLang
How to use aleada/Gemma-4-12B-it-W4A16 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "aleada/Gemma-4-12B-it-W4A16" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aleada/Gemma-4-12B-it-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "aleada/Gemma-4-12B-it-W4A16" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aleada/Gemma-4-12B-it-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use aleada/Gemma-4-12B-it-W4A16 with Docker Model Runner:
docker model run hf.co/aleada/Gemma-4-12B-it-W4A16
⚠️ Update — vLLM loading fixed
The first upload of this pack failed to load on vLLM with:
ValueError: There is no module or parameter named 'vision_embedder.patch_dense.weight' in Gemma4UnifiedForConditionalGenerationCause.
llm-compressorrecorded theignorelist inquantization_configusing the module pathstransformersexposes (model.embed_vision.patch_dense), while the saved tensors — and vLLM's own module tree — usevision_embedder.patch_dense. vLLM therefore found no ignore entry for that layer, built it as a quantized linear, and could not find packed weights for it.Fix. The
ignoreentries are now regexes that match either naming. The weights are byte-identical — no re-quantization; onlyconfig.jsonchanged. Re-download that one file, or re-pull the repo.Verified: loads and serves on vLLM nightly, tensor-parallel 1, one RTX 3090, 274,181 tokens of KV cache.
gemma-4-12B-it — W4A16 (compressed-tensors)
Standard W4A16 quantization of
google/gemma-4-12B-it, produced with
llm-compressor (the
official vLLM-team quantization toolkit) inside a reproducible Docker
container. The artifact saves in compressed-tensors format and
is drop-in loadable by vLLM — no upstream patches, no client-side
shims; vLLM auto-detects the quantization config from the embedded
config.json at load time.
This release is part of an ongoing series of vLLM-friendly quantized packs maintained by atlas, a self-evolving agent project run by Alex Adamopoulos at assert.gr.
Reproducibility
| Parameter | Value |
|---|---|
| Source model | google/gemma-4-12B-it |
| Quantization tool | llm-compressor 0.12.0 (Neural Magic / vLLM team) |
| Quantization recipe | GPTQModifier |
scheme |
W4A16 |
targets |
Linear |
ignore |
re:.*lm_head, re:.*vision_embedder.*, re:.*embed_vision.*, re:.*embed_audio.* |
graft (kept in source dtype) |
— |
sequential_targets |
Gemma4UnifiedTextDecoderLayer |
dampening_frac |
0.05 |
| Calibration dataset | ultrachat-200k |
| Calibration samples | 256 |
max_seq_length |
2048 |
| Quantized size | 7.24 GiB |
| Quantization time | 42.5 min (dual RTX 3090) |
1 module of 328 fell back to round-to-nearest. GPTQ could not invert the Hessian there, so those weights were rounded without the error compensation the algorithm normally applies. They are correct, just less accurate than the rest. This is disclosed because the run exits 0 either way and nothing else would tell you.
License
Inherits the license of the base model. By using this artifact you agree to the original license at the source link above. Atlas / assert.gr adds no additional restrictions on the quantized weights.
Usage with vLLM
docker run --runtime=nvidia --gpus all \
-p 8000:8000 \
-e HF_TOKEN=hf_XXX \
vllm/vllm-openai:latest \
--model aleada/Gemma-4-12B-it-W4A16 \
--limit-mm-per-prompt 'image=1' \
--gpu-memory-utilization 0.92 \
--enable-prefix-caching
vLLM auto-detects compressed-tensors from the model's config — no
--quantization flag required (it is accepted as a redundant hint).
vLLM also picks the model's full native context window from
config.json. If you hit KV-cache OOM on a smaller GPU, pin a shorter
window with --max-model-len 16384 (or smaller) — leave it off to get
the maximum the model was trained for.
Once vLLM is running, hit it with any OpenAI client:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="aleada/Gemma-4-12B-it-W4A16",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
Hardware target
Requires CUDA compute-capability ≥ 8.0 (Ampere or newer). Verified on NVIDIA RTX 3090 (compute 8.6) where the W4A16 path runs the language tower at INT4 weights / BF16 activations through vLLM's compressed-tensors kernels. Vision encoder + multimodal projector remain BF16 by design — quantizing them gives negligible memory benefit relative to accuracy cost (matches the upstream llm-compressor multimodal-vision recommendation).
Weight-only INT4 is the point on this class of card: FP8 and NVFP4 checkpoints are native on Hopper and Blackwell but emulated or unusable on Ampere, where the INT4 Marlin kernels are what actually run fast.
Check this pack yourself
Quantization can drop or disable part of a model without failing: the pack loads, serves, and answers correctly while something its card says it kept is absent, or present and ignored by the runtime. Nothing errors, and the card still promises it.
Pack integrity check
reads any published repo's metadata — safetensors headers and
config.json, no weights — and reports whether its exclusion entries
name real modules, whether anything from the source model failed to
reach it, and whether anything is left at source precision without
being declared. It runs entirely in your browser, so it reads exactly
what you could read yourself.
Point it at this pack. Point it at someone else's.
About the maintainer
Alex Adamopoulos is the founder of assert.gr and the engineer behind the atlas self-evolving AI agent platform. Atlas runs a planner→executor→supervisor loop over a skill registry, backed by Postgres, Redis, Qdrant, and a multi-LLM vLLM deployment. Quantization releases like this one keep the open-source model ecosystem usable on consumer-grade hardware for self-hosted agent research.
Connect:
- Downloads last month
- 113