Quill-Gen-1 / README.md
sollamon's picture
Make AI Fly!
9e1a8c3 verified
|
Raw History Blame Contribute Delete
5.91 kB
---
language:
- en
- code
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
base_model: Qwen/Qwen2.5-Coder-0.5B-Base
tags:
- code
- python
- code-generation
- text-generation
- qwen2.5
- qwen
- llama.cpp
- gguf
- unsloth
- qlora
- lora
- small-models
- edge-ai
- local-ai
- minsore
- ukrainian
- experimental
- 0.5b
- generation
model-index:
- name: Quill Gen 1
results:
- task:
type: text-generation
name: Code Generation
dataset:
type: openai_humaneval
name: HumanEval@50
metrics:
- type: pass@1
value: 80.0
name: Pass@1
---
# 🟒 Quill Gen 1
Lightweight Python code generation model built on Qwen2.5-Coder-0.5B.
Quill Gen 1 is a 0.5B parameter experimental model for generating Python functions from natural-language descriptions. It is the younger sibling of Pepper 1 Preview β€” same task, one third the size. Trained as an experiment in small-model code generation, it reaches 80% on HumanEval@50 while running comfortably on consumer hardware.
> ⚠️ **This is NOT a FIM model.** Quill Gen 1 cannot do fill-in-the-middle completion. For autocomplete use [Quill 1 Preview](https://huggingface.co/Minsore/quill-1-preview).
Part of the Minsore family Β· minsore.com
## ✨ Highlights
- 🧠 **Instruction-tuned** β€” writes Python functions from plain descriptions
- πŸ“¦ **Tiny** β€” 0.5B params, ~400 MB in Q4_K_M
- 🎯 **Purpose-built** β€” code generation only, not chat, not FIM
- ⚑ **Fast** β€” designed for low-VRAM setups
- πŸ§ͺ **Experimental** β€” a proof of concept for small-model generation
- πŸ†“ Apache 2.0 β€” same license as base model
## πŸ“Š Benchmarks
![Quill Gen comparison](assets/quill_gen_1_benchmarks.png)
Evaluated against 0.5B–1.5B code models. All runs used `temperature=0.0`, `max_tokens=512`, `--chat-template none`.
| Benchmark | Quill Gen 1 | Pepper 1 Preview | Quill 1 Preview | Qwen2.5-Coder 0.5B |
|---|---|---|---|---|
| HumanEval@50 | **80.0%** | 82.0% | 54.0% | 52.0% |
| HumanEval-Infilling (EditSim) | 0.161 | β€” | **0.423** | 0.045 |
| HumanEval-Infilling (Exact Match) | 0% | β€” | **16%** | 0% |
| Delulu FIM (EditSim) | 0.048 | β€” | **0.318** | 0.035 |
> πŸ“Œ **Key insight:** Quill Gen 1 reaches **80% HumanEval@50** β€” nearly matching Pepper 1 Preview (82%) at **one third the parameter count**. On FIM-specific tasks it underperforms significantly, which is expected: this model was trained for generation, not autocomplete.
## πŸš€ Quick Start
### llama.cpp
```bash
llama-server -m quill-gen-1.Q4_K_M.gguf \
--port 8080 \
-ngl 99 \
-c 768 \
--chat-template none
```
**Requirements:** any GPU with β‰₯2 GB VRAM (full offload), or partial CPU offload as fallback.
### Request
```bash
curl http://localhost:8080/completion \
-H "Content-Type: application/json" \
-d '{
"prompt": "### Instruction:\nWrite a Python function that checks if a number is prime.\n\n### Response:\n",
"n_predict": 256,
"temperature": 0.0
}'
```
### Python
```python
import requests
def generate(instruction, max_tokens=256):
prompt = f"### Instruction:\n{instruction}\n\n### Response:\n"
r = requests.post("http://localhost:8080/completion", json={
"prompt": prompt,
"n_predict": max_tokens,
"temperature": 0.0,
"stop": ["### Instruction:", "<|endoftext|>"],
})
return r.json()["content"]
print(generate("Write a Python function that reverses a string."))
# β†’ def reverse_string(s):
# return s[::-1]
```
## βš™οΈ Recommended Settings
| Parameter | Value | Notes |
|---|---|---|
| `--chat-template` | `none` | Required. Quill Gen 1 is not a chat model |
| `n_predict` | 128–256 | Works best on short completions |
| `temperature` | `0.0` | Deterministic; use `0.2` for variation |
| `repeat_penalty` | `1.1` | Prevents repetition |
| `-c` | `768` | Matches training context length |
## ⚠️ Limitations
- **Generation only** β€” does not support fill-in-the-middle, tool calling, or chat
- **Python-only** β€” trained exclusively on Python code
- **Small context** β€” 768 tokens; long files are truncated
- **Weak on FIM** β€” EditSim 0.16, Exact Match 0% (use Quill 1 instead)
- **Occasional over-explanation** β€” may include comments when only code is requested
- **Number looping** β€” may repeat large integers on some prompts (use `repeat_penalty=1.1`)
## 🧬 Training Details
| | |
|---|---|
| Base model | Qwen2.5-Coder-0.5B-Base |
| Method | QLoRA (r=16, Ξ±=16) |
| Data | FIM-converted Python instruction data |
| Epochs | 1 |
| Context | 768 tokens |
| Optimizer | `paged_adamw_8bit` |
## πŸ“ Files
| File | Size | Description |
|---|---|---|
| `quill-gen-1.Q4_K_M.gguf` | ~400 MB | Ready to use with llama.cpp (recommended) |
| `model.safetensors` | ~1 GB | Full-precision merged weights |
| `config.json` | β€” | Model config |
| `tokenizer.json` | β€” | Tokenizer |
| `tokenizer_config.json` | β€” | Tokenizer config |
| `generation_config.json` | β€” | Generation defaults (optional) |
## πŸ—ΊοΈ Roadmap
- **Quill 2** β€” FIM autocomplete, fixed suffix handling, JS/TS/Rust support
- **Pepper 2** β€” improved MBPP and LiveCodeBench
- **Symphony** β€” flagship agentic code model (3B MoE)
## πŸ“œ License
Apache 2.0 β€” same as the base Qwen2.5-Coder-0.5B model.
## πŸ™ Credits
- Base model: [Qwen2.5-Coder-0.5B-Base](https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B-Base) by Alibaba Cloud
- Training framework: Unsloth
- Inference: llama.cpp
## πŸ“¬ Contact
Minsore β€” Ukrainian AI lab building open language models.
- 🌐 [minsore.com](https://minsore.com)
- πŸ€— [huggingface.co/Minsore](https://huggingface.co/Minsore)
- πŸ’¬ Built by [@Sollamon](https://huggingface.co/Sollamon)
⭐ If Quill Gen 1 is useful, star the repo and share your results.