Text Generation
Transformers
Safetensors
English
gemma4_unified
image-text-to-text
gemma
gemma4
antidoom
ftpo
anti-repetition
int4
w4a16
gptq
llmcompressor
compressed-tensors
quantization
speculative-decoding
dspark
vllm
blackwell
conversational
Instructions to use Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark") 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("Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark") model = AutoModelForMultimodalLM.from_pretrained("Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark", 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 Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark
- SGLang
How to use Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark 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 "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark" \ --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": "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark" \ --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": "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark with Docker Model Runner:
docker model run hf.co/Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark
File size: 4,746 Bytes
f252dd7 | 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 105 106 107 108 109 110 111 112 113 114 115 116 | ---
base_model: google/gemma-4-12B-it
license: gemma
library_name: transformers
pipeline_tag: text-generation
language:
- en
tags:
- gemma
- gemma4
- antidoom
- ftpo
- anti-repetition
- int4
- w4a16
- gptq
- llmcompressor
- compressed-tensors
- quantization
- speculative-decoding
- dspark
- vllm
- blackwell
---
# gemma-4-12B-it — Antidoom + W4A16 GPTQ (group=32) · DSpark-verified
A **[Antidoom](https://github.com/Liquid4All/antidoom)** (FTPO anti-repetition) version of
[`google/gemma-4-12B-it`](https://huggingface.co/google/gemma-4-12B-it), quantized post-training to
**GPTQ int4 (W4A16, group=32, symmetric)** and verified as a
**[DSpark](https://github.com/deepseek-ai/DeepSpec) speculative-decoding target**
(draft head: [`deepseek-ai/dspark_gemma4_12b_block7`](https://huggingface.co/deepseek-ai/dspark_gemma4_12b_block7)).
**TL;DR: 207 tok/s single-stream on one RTX 5090 (32 GB)** — the fastest gemma-4-12B configuration we
have measured on that card (beats our non-antidoom GPTQ at 198), at 7.8 GB of weights.
## What was done
1. **Antidoom FTPO pass**: 152 preference pairs mined at temperature 0.01 from the
[LiquidAI/antidoom-mix-v1.0](https://huggingface.co/datasets/LiquidAI/antidoom-mix-v1.0) prompt mix;
QLoRA (r=128, 4-bit training pass, max_seq 2048, lr 3e-5), early-stopped at **chosen_win 0.575**
(epoch ~1.9) — the strongest anti-loop convergence of our 4-model antidoom family; adapter merged
into the bf16 base on CPU.
2. **Post-training GPTQ**: identical recipe to
[gemma-4-12B-it-W4A16-GPTQ-g32-DSpark](https://huggingface.co/Danny-Dasilva/gemma-4-12B-it-W4A16-GPTQ-g32-DSpark).
**DSpark acceptance survived and improved**: 35.6% (non-antidoom GPTQ) → **38.3%** (this model).
The FTPO patch suppresses exactly the degenerate repetition the draft also fails on, so speculation
gets slightly *better*.
## Measured speed — RTX 5090 (32 GB, Blackwell), single stream, greedy, 256-tok gens
| config | tok/s | DSpark accept |
|---|---|---|
| **this model + DSpark k=7 + CUDA graphs + autotune** | **207.5** (peaks 260) | 38.3% |
| this model, native (no speculation) | 119 | — |
| reference: non-antidoom GPTQ + DSpark k=7 + autotune | 198.2 | 35.6% |
| reference: official QAT w4a16-ct + DSpark | *slower than native* | 2.1% |
## Usage (vLLM + DSpark)
```python
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
MODEL = "Danny-Dasilva/gemma-4-12B-it-antidoom-W4A16-GPTQ-g32-DSpark"
DRAFT = "deepseek-ai/dspark_gemma4_12b_block7"
llm = LLM(
model=MODEL,
max_model_len=8192,
attention_backend="FLASHINFER", # gemma-4 full-attn layers have head_dim 512
enable_flashinfer_autotune=True, # +2% in our runs
speculative_config={
"method": "dspark",
"model": DRAFT,
"num_speculative_tokens": 7, # = draft block size; k<7 or k=14 are both slower
"attention_backend": "TRITON_ATTN",
},
)
tok = AutoTokenizer.from_pretrained(MODEL)
prompt = tok.apply_chat_template(
[{"role": "user", "content": "Explain transformers step by step."}],
add_generation_prompt=True, tokenize=False,
)
print(llm.generate([prompt], SamplingParams(temperature=0.0, max_tokens=256))[0].outputs[0].text)
```
Notes:
- **Always apply the chat template** — gemma-4-it uses `<|turn>`-style tokens and
`add_bos_token=False`; raw prompts produce garbage on any backend.
- `num_speculative_tokens` must be ≤ 7 or a multiple of 7 (draft block size). 7 is optimal.
- Works without DSpark too, as a normal compressed-tensors W4A16 checkpoint
(kernel path identical to the official QAT release: group=32, symmetric, pack-quantized).
- `kv_cache_dtype="fp8"` measured *slower* (−3%) at short context on this card.
## Quantization recipe
[llm-compressor](https://github.com/vllm-project/llm-compressor) 0.12 GPTQ, one-shot:
- 256 calibration samples from `HuggingFaceH4/ultrachat_200k` (train_sft), chat template applied,
max_seq_length 2048
- scheme: int4, **group_size=32**, symmetric, weights-only (W4A16), `pack-quantized` format —
mirrors the official QAT checkpoint's config so every vLLM kernel path is identical
- `sequential_targets=["Gemma4UnifiedTextDecoderLayer"]`; lm_head and vision/audio embedder
projections kept in bf16 (same 17-entry ignore list as the official QAT release, spelled so both
HF *and* vLLM module names match)
- `processor_config.json` included (vLLM's multimodal processor init requires it)
## Provenance
- Base: `google/gemma-4-12B-it` @ `5926caa4` → antidoom FTPO LoRA merge → GPTQ W4A16 g32
- Built 2026-07-11 on a single RTX 5090; outputs verified coherent
- Gemma is provided under and subject to the Gemma Terms of Use: https://ai.google.dev/gemma/terms
|