REAP (Router-weighted Expert Activation Pruning) removes 20% of MoE experts while keeping the same active parameters per token (8 of 103 experts selected). Combined with PLE-safe 4-bit quantization, this model runs in
13.9 GB — fits on 24GB+ Macs.
0-shot generative, thinking enabled, 50 samples per task, identical eval harness. Apple M4 Max 36GB.
Extraction failures (unparseable responses) are counted as incorrect. REAP-21B: 38/350 (11%). True accuracy may be higher. Full methodology:
GitHub.
1from mlx_vlm import load, generate
2
3model, processor = load("ukint-vs/gemma-4-21b-a4b-it-REAP-MLX-4bit")
4tokenizer = processor.tokenizer
5
6messages = [{"role": "user", "content": [
7 {"type": "image", "url": "photo.jpg"},
8 {"type": "text", "text": "Describe this image in detail."},
9]}]
10prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
11out = generate(model, processor, prompt, ["photo.jpg"],
12 max_tokens=200, repetition_penalty=1.2, temperature=0.7)
13print(out.text)
1messages = [{"role": "user", "content": "What is the capital of France?"}]
2prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
3out = generate(model, processor, prompt, max_tokens=100, temperature=0.0)
4print(out.text)
Trimodal validation: 10/10 vision, 3/3 chat (EN/ZH/JA). Full results:
GitHub.
Model weights:
Google Gemma License. Quantization scripts: MIT.