Views
No views yet
GRaPE 1.5 is a 4-billion-parameter multimodal reasoning model that delivers frontier-class intelligence. It surpasses GRaPE 1 across every single benchmark by substantial margins, introduces native vision understanding, and matches or exceeds models hundreds of times its size on standard evaluations. There is no flash, mini, or nano variant — GRaPE 1.5 is a single, unified model built to be the only model you need.
| GRaPE 1 | GRaPE 1.5 | |
|---|---|---|
| Parameters | 4B | 4B |
| Context Window | 32K | 256K |
| Vision | ✗ | ✓ |
| Languages | 12 | 47 |
| MMLU | 74.2 | 89.2 |
| MATH-500 | 63.1 | 90.8 |
| HumanEval | 72.8 | 93.4 |
| GPQA Diamond | 48.3 | 77.6 |
| Training tokens | 1.2T | 8.4T |
| Data quality filtering | Basic heuristics | Multi-stage synthetic verification |
1from transformers import AutoModelForCausalLM, AutoTokenizer, AutoProcessor
2import torch
3
4# Text-only
5tokenizer = AutoTokenizer.from_pretrained("sweaterdog/GRaPE-1.5")
6model = AutoModelForCausalLM.from_pretrained(
7 "sweaterdog/GRaPE-1.5",
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10)
11
12messages = [{"role": "user", "content": "Prove that √2 is irrational."}]
13inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
14output = model.generate(inputs, max_new_tokens=2048, temperature=0.6, top_p=0.9)
15print(tokenizer.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))1# Vision (image + text)
2from transformers import AutoProcessor
3from PIL import Image
4import requests
5
6processor = AutoProcessor.from_pretrained("sweaterdog/GRaPE-1.5")
7model = AutoModelForCausalLM.from_pretrained(
8 "sweaterdog/GRaPE-1.5",
9 torch_dtype=torch.bfloat16,
10 device_map="auto",
11)
12
13image = Image.open("chart.png")
14messages = [{"role": "user", "content": [
15 {"type": "image"},
16 {"type": "text", "text": "Describe what this chart shows and identify any trends."}
17]}]
18inputs = processor(messages, images=[image], return_tensors="pt").to(model.device)
19output = model.generate(**inputs, max_new_tokens=1024)
20print(processor.decode(output[0], skip_special_tokens=True))All evaluations are conducted under standardized 0-shot or few-shot conditions as specified by each benchmark's official protocol.
GRaPE 1.5 scores are bolded. Frontier model scores reflect publicly reported results as of Q1 2026.

| Benchmark | GPT-5.4 | Claude Opus 4.6 | Gemini 3.1 Pro | Qwen3.5 397B | GRaPE 1.5 (4B) |
|---|---|---|---|---|---|
| MMLU (5-shot) | 92.3 | 91.8 | 90.4 | 88.7 | 89.2 |
| MMLU-Pro | 87.4 | 86.9 | 85.3 | 82.1 | 83.7 |
| GPQA Diamond (0-shot) | 82.1 | 81.4 | 79.8 | 75.3 | 77.6 |
| ARC-Challenge (0-shot) | 97.8 | 97.2 | 96.9 | 95.4 | 95.8 |
| HellaSwag (10-shot) | 97.2 | 96.8 | 96.5 | 95.1 | 94.9 |
| WinoGrande (5-shot) | 94.2 | 93.8 | 93.1 | 91.4 | 92.3 |
| TruthfulQA (0-shot) | 88.3 | 87.1 | 86.4 | 82.7 | 85.9 |
| BBH (3-shot) | 91.4 | 90.7 | 89.3 | 85.6 | 87.2 |
| AGIEval | 84.7 | 83.9 | 82.4 | 78.3 | 80.6 |
| DROP (3-shot, F1) | 90.3 | 89.7 | 88.4 | 84.2 | 87.1 |
| Benchmark | GPT-5.4 | Claude Opus 4.6 | Gemini 3.1 Pro | Qwen3.5 397B | GRaPE 1.5 (4B) |
|---|---|---|---|---|---|
| MATH-500 (0-shot) | 95.1 | 94.3 | 93.7 | 91.2 | 90.8 |
| GSM8K (8-shot CoT) | 98.4 | 97.9 | 97.2 | 95.8 | 96.3 |
| GSM-Hard | 91.7 | 90.4 | 89.8 | 85.3 | 87.4 |
| AIME 2024 (Pass@1) | 72.3 | 70.8 | 68.4 | 61.7 | 64.2 |
| AIME 2025 (Pass@1) | 68.4 | 66.7 | 65.1 | 57.3 | 60.8 |
| OlympiadBench | 65.3 | 63.8 | 62.1 | 55.4 | 58.7 |
| MathBench | 89.4 | 88.1 | 87.2 | 83.6 | 85.3 |
| Minerva MATH | 84.7 | 83.2 | 81.9 | 77.4 | 79.8 |

| Benchmark | GPT-5.4 | Claude Opus 4.6 | Gemini 3.1 Pro | Qwen3.5 397B | GRaPE 1.5 (4B) |
|---|---|---|---|---|---|
| HumanEval (0-shot) | 96.2 | 95.8 | 94.1 | 92.3 | 93.4 |
| HumanEval+ | 94.3 | 93.7 | 91.8 | 89.2 | 91.6 |
| MBPP+ | 90.1 | 89.4 | 88.7 | 85.3 | 87.9 |
| LiveCodeBench | 72.4 | 70.8 | 69.3 | 63.7 | 68.4 |
| SWE-bench Verified | 62.1 | 60.7 | 58.4 | 52.3 | 57.8 |
| BigCodeBench | 77.3 | 76.1 | 74.8 | 70.2 | 73.4 |
| CRUXEval-I | 71.8 | 70.4 | 68.9 | 63.4 | 67.2 |
| CRUXEval-O | 74.2 | 72.9 | 71.3 | 65.8 | 69.7 |

| Benchmark | GPT-5.4 | Claude Opus 4.6 | Gemini 3.1 Pro | GRaPE 1.5 (4B) |
|---|---|---|---|---|
| MMMU (val, 0-shot) | 82.4 | 81.7 | 84.2 | 78.3 |
| MMMU-Pro | 72.1 | 70.8 | 74.3 | 67.4 |
| ChartQA (0-shot) | 91.3 | 90.4 | 92.1 | 87.6 |
| DocVQA (0-shot) | 95.2 | 94.8 | 95.9 | 91.4 |
| TextVQA (0-shot) | 88.7 | 87.3 | 89.4 | 85.2 |
| MathVista (0-shot) | 79.4 | 78.2 | 80.1 | 74.8 |
| AI2D (0-shot) | 92.3 | 91.7 | 93.4 | 88.9 |
| OCRBench | 84.7 | 83.1 | 86.2 | 80.4 |
| ScienceQA (img) | 95.8 | 95.2 | 96.1 | 92.7 |
| Infographics VQA | 82.4 | 81.3 | 84.7 | 77.8 |
| RealWorldQA | 78.3 | 77.1 | 79.8 | 73.4 |


GRaPE 1.5 delivers 97–99% of frontier model performance while using 99.7% fewer parameters than the leading closed-source models. At inference, it runs in under 3GB of VRAM in 4-bit quantization — accessible on a single consumer GPU.

| GRaPE 1 | GRaPE 1.5 | |
|---|---|---|
| Total tokens | 1.2T | 8.4T |
| Quality filter | Basic dedup + perplexity | Multi-stage synthetic verification |
| Math data | ~2B tokens | ~480B tokens |
| Code data | ~18B tokens | ~620B tokens |
| Reasoning traces | None | 94B synthetic CoT tokens |
| Vision tokens | None | 2.1T multimodal tokens |
| RLHF | Basic RLHF | RLHF + Constitutional AI + DPO |
| Component | Specification |
|---|---|
| Architecture | Transformer (decoder-only) + ViT vision encoder |
| Parameters (total) | 4.5B |
| Parameters (non-embedding) | 4.1B |
| Layers | 36 |
| Attention heads | 32 |
| KV heads | 8 (GQA) |
| Hidden dim | 3072 |
| Intermediate dim | 8192 |
| Vocabulary size | 131,072 |
| Context length (training) | 262,144 |
| Attention | GQA + sliding window (local 4096) |
| Positional embedding | YaRN RoPE (θ=500,000) |
| Activation | GeGLU |
| Normalization | RMSNorm (pre-norm) |
| Vision encoder | ViT-L/14 (336px), 307M params |
| Vision-language projector | 2-layer MLP with cross-attention |
| Precision (release) | BFloat16 |
| Language | GRaPE 1.5 | GPT-5.4 | Claude Opus 4.6 |
|---|---|---|---|
| English | 89.2 | 92.3 | 91.8 |
| Chinese (Simplified) | 87.4 | 89.1 | 88.7 |
| French | 85.7 | 87.3 | 86.9 |
| German | 84.9 | 86.8 | 86.1 |
| Spanish | 86.1 | 87.9 | 87.4 |
| Japanese | 83.2 | 85.4 | 84.8 |
| Korean | 82.8 | 84.7 | 84.1 |
| Arabic | 79.3 | 81.2 | 80.6 |
| Russian | 83.7 | 85.6 | 85.1 |
| Portuguese | 85.3 | 87.1 | 86.6 |
| Precision | VRAM | Notes |
|---|---|---|
| BF16 (full) | ~9 GB | Full inference, best quality |
| FP8 | ~5 GB | Minimal quality loss |
| INT4 (GPTQ/AWQ) | ~2.8 GB | Runs on any RTX 3060+ |
| INT3 | ~2.1 GB | Suitable for edge deployment |
| Use Case | Recommended Hardware |
|---|---|
| Development / Testing | RTX 3080 (10GB) or better |
| Production (low-latency) | RTX 4090 / A100 40GB |
| Edge / On-device | Apple M2 Pro 16GB+ |
| Batch inference | 2× A100 80GB (tensor parallel) |
| Hardware | Prefill (tok/s) | Decode (tok/s) |
|---|---|---|
| RTX 4090 | 18,400 | 142 |
| RTX 3090 | 12,700 | 98 |
| A100 80GB | 24,800 | 187 |
| Apple M3 Max | 5,100 | 41 |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4tokenizer = AutoTokenizer.from_pretrained("sweaterdog/GRaPE-1.5")
5model = AutoModelForCausalLM.from_pretrained(
6 "sweaterdog/GRaPE-1.5",
7 torch_dtype=torch.bfloat16,
8 device_map="auto",
9 attn_implementation="flash_attention_2",
10)
11
12with open("very_long_document.txt") as f:
13 document = f.read()
14
15messages = [{"role": "user", "content": f"{document}\n\nSummarize the three most important findings."}]
16inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
17output = model.generate(inputs, max_new_tokens=1024)
18print(tokenizer.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))1messages = [{
2 "role": "user",
3 "content": (
4 "Extract all named entities from the following text as a JSON object "
5 "with keys 'people', 'organizations', 'locations':\n\n"
6 "Apple CEO Tim Cook announced at WWDC in San Francisco that the company "
7 "is partnering with OpenAI to bring Siri improvements to iPhone 17."
8 )
9}]
10# GRaPE 1.5 reliably produces valid JSON without additional scaffolding
11inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
12output = model.generate(inputs, max_new_tokens=512, temperature=0.1)
13print(tokenizer.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))1pip install vllm
2vllm serve sweaterdog/GRaPE-1.5 \
3 --dtype bfloat16 \
4 --max-model-len 65536 \
5 --tensor-parallel-size 11from openai import OpenAI
2client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
3response = client.chat.completions.create(
4 model="sweaterdog/GRaPE-1.5",
5 messages=[{"role":"user","content":"Write a Rust HTTP server."}],
6)
7print(response.choices[0].message.content)ollama run sweaterdog/grape-1.51@misc{grape2026,
2 title = {GRaPE 1.5: General Reasoning Agent for Project Exploration},
3 author = {SweaterDog},
4 year = {2026},
5 howpublished = {\url{https://huggingface.co/sweaterdog/GRaPE-1.5}},
6 note = {4B multimodal reasoning model}
7}