Instructions to use DRUPEs/CherryPit-1.1-2B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use DRUPEs/CherryPit-1.1-2B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="DRUPEs/CherryPit-1.1-2B") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("DRUPEs/CherryPit-1.1-2B") model = AutoModelForCausalLM.from_pretrained("DRUPEs/CherryPit-1.1-2B", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.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=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use DRUPEs/CherryPit-1.1-2B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "DRUPEs/CherryPit-1.1-2B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "DRUPEs/CherryPit-1.1-2B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/DRUPEs/CherryPit-1.1-2B
- SGLang
How to use DRUPEs/CherryPit-1.1-2B 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 "DRUPEs/CherryPit-1.1-2B" \ --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": "DRUPEs/CherryPit-1.1-2B", "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 "DRUPEs/CherryPit-1.1-2B" \ --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": "DRUPEs/CherryPit-1.1-2B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use DRUPEs/CherryPit-1.1-2B with Docker Model Runner:
docker model run hf.co/DRUPEs/CherryPit-1.1-2B
CherryPit-1.1-2B
CherryPit-1.1-2B is the second release of CherryPit from DRUPEs (Dense Representation & Unified Parameter Encoding Systems), built on MiniCPM5-2B. It reasons much better inside a fixed thinking budget: with the same 8K thinking tokens it solves far more competition-math and coding problems than CherryPit-1.0, and it can now build React web apps from tests. Same size, architecture and speed as 1.0.
Results vs CherryPit-1.0
Both models were run on the same harness, items, prompts and seeds (bf16 weights in vLLM). "Thinking, 8K" means the model may think for up to 8,192 tokens before it answers; "โ" = not measured for that model.
| Benchmark | Setting | CherryPit-1.0 | CherryPit-1.1 | ฮ |
|---|---|---|---|---|
| Math | ||||
| AIME 2025 | thinking, 8K, avg of 4 | โ | 47.5 | โ |
| AIME 2026 | thinking, 8K, avg of 4 | โ | 56.7 | โ |
| HMMT Feb 2025 | thinking, 8K, avg of 4 | โ | 29.2 | โ |
| HMMT Feb 2026 | thinking, 8K, avg of 4 | โ | 27.3 | โ |
| AMC 2023 | thinking, 8K, avg of 4 | โ | 88.1 | โ |
| MATH-500 | no thinking, greedy | 78.2 | 87.8 | +9.6 |
| Coding | ||||
| LiveCodeBench v6 | thinking, 8K | 29.1 | 46.3 | +17.2 |
| โ hard problems | thinking, 8K, 80-problem probe | 4.2 | 24.2 | +20.0 |
| LiveCodeBench v6 | no thinking, avg of 4 | 31.7 | 31.0 | โ0.7 |
| HumanEval+ | no thinking, greedy | 85.4 | 82.9 | โ2.5 |
| MBPP+ | no thinking, greedy | 64.5 | 67.2 | +2.7 |
| Web development | ||||
| WebApp1K-React | no thinking, 1,000 tasks | 1.6 | 79.9 | +78.3 |
| FullStack Bench (web slice) | no thinking, 98 items x5 | 47.2 | 46.6 | โ0.6 |
| Instruction following | ||||
| IFEval | strict, prompt level | 85.2 | 83.2 | โ2.0 |
Pooled over the 163 competition problems: 51.7. It also gets there with fewer tokens: on LiveCodeBench with thinking it uses 6,176 tokens per problem on average vs 7,454 for CherryPit-1.0.
Quantization
The Q4_K_M file was unpacked back to bf16 and re-run on the same harness, so this is what 4-bit costs. Thinking-mode coding is the most sensitive; if you have the memory, Q5_K_M or larger keeps more of it.
| Benchmark | bf16 | Q4_K_M | ฮ |
|---|---|---|---|
| LiveCodeBench v6, thinking 8K | 46.3 | 41.1 | โ5.2 |
| LiveCodeBench v6, no thinking | 31.0 | 29.6 | โ1.4 |
| HumanEval+ | 82.9 | 84.8 | +1.9 |
| MBPP+ | 67.2 | 63.8 | โ3.4 |
| MATH-500 | 87.8 | 84.8 | โ3.0 |
| IFEval | 83.2 | 81.9 | โ1.3 |
What's new in 1.1
- Budget-aware reasoning: reinforcement learning under a fixed thinking budget, so the model reaches an answer inside 8K tokens instead of running out of room.
- Ladder training on hard problems: the model starts from hints taken from its own long correct solutions, and the hints are removed step by step until it solves the problem on its own (math and code).
- Knowing when to stop: once it has found the answer it commits to it instead of thinking on.
- Web apps: React components written to pass a given set of tests (from the 1.1 WebDev preview).
Model Details
- Developed by: DRUPEs
- Model type: Causal language model
- Parameters: ~2B
- Base model: MiniCPM5-2B
- Previous version: CherryPit-1.0-2B-GGUF
- Architecture: Standard Llama
- Context length: 128K tokens (131,072)
- Tool calling: Supported (via the built-in chat template)
- Language(s): English
- License: Apache 2.0
- Version: 1.1
How to Use
Full-precision (bf16) weights for transformers, vLLM and further fine-tuning. For llama.cpp, Ollama or LM Studio use DRUPEs/CherryPit-1.1-2B-GGUF.
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("DRUPEs/CherryPit-1.1-2B")
model = AutoModelForCausalLM.from_pretrained("DRUPEs/CherryPit-1.1-2B", torch_dtype="bfloat16", device_map="auto")
msgs = [{"role": "user", "content": "How many primes are there below 100?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=8192, do_sample=True, temperature=1.0, top_p=0.95)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
vllm serve DRUPEs/CherryPit-1.1-2B --max-model-len 32768
Recommended sampling: temperature 1.0, top_p 0.95. The template starts in thinking mode; pass
enable_thinking=False to apply_chat_template (vLLM: chat_template_kwargs) for short, direct answers. With no
system prompt the model introduces itself as CherryPit.
Limitations
- It is a 2B model: it can be confidently wrong, so check answers that matter.
- Instruction following (IFEval) and HumanEval+ are slightly below 1.0, see the table.
- Tested in English only.
- Downloads last month
- 488