What we built
- A real training pipeline (all config-driven, reproducible): data
cleaning → QLoRA/SFT → evaluation → publish.
- Our own data recipe: cleaned, deduplicated, high-signal coding + general
instruction mixes; iterated between v1 and v2.
- A proper fine-tune: 4-bit QLoRA + LoRA r=16/alpha=32, assistant-only loss
masking, cosine lr 2e-4, on HF GPU jobs. Not a rename — trained weights.
- Honest evaluation: HumanEval (164 unseen problems), greedy pass@1 with
real unit-test execution in a sandbox.
Results (HumanEval, unseen, greedy pass@1)
Table with columns: Model, pass@1| Model | pass@1 |
|---|
| Base (before our tuning) | 29.3% (48/164) |
| Pyrut 8B — previous release | 42.1% (69/164) |
| Pyrut 8B Inferno (current) | 41.5% (68/164) |
Our tuning lifts coding performance well above the base on unseen problems —
~+12 points HumanEval pass@1 over the stock model.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizertok = AutoTokenizer.from_pretrained("ImposterOnline/Pyrut")model = AutoModelForCausalLM.from_pretrained("ImposterOnline/Pyrut")
Chat format: chatml (<|im_start|>user / <|im_end|>). Uncensored by design.
GGUF (for local use)
Quantized GGUF builds live in a separate repo:
ImposterOnline/Pyrut-8B-Instruct-Uncensored-GGUF
— pyrut-f16.gguf (15.2 GB) and pyrut-q8_0.gguf (8.1 GB), runnable in
llama.cpp / Ollama / LM Studio.
Release
- Pyrut 8B Inferno (current) — 38k-example OpenCoder + tool-use recipe, 4096
context, HumanEval 41.5% (68/164).
- Pyrut 8B — previous release — 8k-example recipe, HumanEval 42.1%.
LoRA checkpoints, dataset and eval results live in private companion repos
(Pyrut-checkpoints, Pyrut-data); the merged weights are here.
License
Apache-2.0.