Text Generation
PEFT
Safetensors
GGUF
English
qwen
lora
qlora
instruction-tuning
conversational
How to use from
Pi
Start the llama.cpp server
# Install llama.cpp:
brew install llama.cpp
# Start a local OpenAI-compatible server:
llama serve -hf namanadep/Qwen2.5-7B-Manus-Distill
Configure the model in Pi
# Install Pi:
npm install -g @mariozechner/pi-coding-agent
# Add to ~/.pi/agent/models.json:
{
  "providers": {
    "llama-cpp": {
      "baseUrl": "http://localhost:8080/v1",
      "api": "openai-completions",
      "apiKey": "none",
      "models": [
        {
          "id": "namanadep/Qwen2.5-7B-Manus-Distill"
        }
      ]
    }
  }
}
Run Pi
# Start Pi in your project directory:
pi
Quick Links

Qwen2.5-7B QLoRA Fine-Tune on a Large Mixed-Source Instruction Dataset

Fine-tunes Qwen/Qwen2.5-7B-Instruct with QLoRA on 15,000 instruction/response pairs sampled from a large public dataset aggregation, then evaluates the result against the untouched base model on 100 held-out prompts.

Full code and write-up: github.com/namanadep/qwen2.5-7b-manus-distill.

What this model was actually trained on

An earlier version of this project's documentation described it as distilled from six named frontier models (GPT-5.5, Gemini 3.1 Pro, Grok 4, Claude Fable 5, Mythos 5, Qwen 3.7 Max). That framing does not hold up:

  • The training data comes from Manusagents/GPT-5.5-Gemini-3.1-Pro-Grok-4-Claude-Fable-5-Mythos-5-Qwen-3.7-Max-and-more-Distillation-Dataset. That dataset's own card describes itself as "The Open Distillation Codex": an aggregation of 18M+ samples from 73 different open-source datasets across 8 categories (coding, science, cybersecurity, math, general instruction), 76 GB total. Its card lists a different, larger set of source models than this project's name suggests (Claude Opus 4.8, GPT-5.5, Gemini 3.5 and Pro 3.2, Grok 4.4, DeepSeek v4, Fable-5), and never mentions "Mythos 5" or "Qwen 3.7 Max" at all.
  • src/prepare_dataset.py, the script that built this project's training set, reads whatever JSONL shards were cached from that aggregation and takes the first 15,000 valid instruction/response records it finds. It does not check, record, or filter by which of the 73 upstream sources or which model produced any given example.
  • The actual 100 evaluation prompts (see 100_PROMPTS_BASE_VS_FINE_TUNED_MANUS_DISTILL_COMPARISON.md) are generic instruction-following tasks: "write some code that stores data in a dictionary," "name the four types of teeth humans have," "what is the latest information about the upcoming iPhone 12." These read as standard instruction-tuning-dataset content, not curated frontier-model reasoning traces.

What's accurate: this is a QLoRA fine-tune of Qwen2.5-7B-Instruct on 15,000 general-purpose instruction/response examples drawn from a large, unfiltered public aggregation. Whether any specific example originated from one of the named frontier models is unverified and, per the pipeline itself, unverifiable after the fact.

What the evaluation actually shows

The fine-tuned model answers in a noticeably more concise, direct style that matches the gold reference format, where the base model tends to over-explain. Example (prompt 1, "write some code that stores the following data in a dictionary"):

  • Base model: writes a full explanation, invents example data (name/age/city/occupation), and prints the result with commentary.
  • Fine-tuned model: person = {"name": "John", "age": 30, "gender": "male"}, nothing else.
  • Gold reference: dict = {"author": "Shakespeare", "title": "Romeo and Juliet"}, also nothing else.

That pattern (short, direct, format-matching answers replacing verbose explanations) holds across most of the 100 prompts. It's a real, consistent training effect. It's also a much more modest finding than "80-90% parity with frontier models," a claim with no computation behind it anywhere in this codebase; that table has been removed. Full account: docs/LIMITATIONS_AND_HONESTY.md on the GitHub repo.

Training (verified against the real training log)

  • Base model: Qwen/Qwen2.5-7B-Instruct (7.61B parameters).
  • Method: QLoRA, rank 16, alpha 32, targeting all linear projections, via TRL's SFTTrainer.
  • Data: 13,500 training / 1,500 validation records, 3 epochs, 5,064 steps, effective batch size 16.
  • Hardware: 2x NVIDIA H200 SXM NVL GPUs, 61.31 minutes total training time.
  • Loss: 3.4970 at step 10 to 1.6724 at step 5,064 (final). Final validation loss 1.1943.

training_metrics.json in this repository is the real Trainer log (510 entries). I checked the loss-table values published in the original README against it: the values at steps 50, 300, 840, and the final step all match to full float precision. One row didn't: the original table listed a loss of 1.6980 at "epoch 2.00, step 3,376," but that exact loss value actually occurs at step 2,400 (epoch 1.42) in the log. It's a real logged number, just attached to the wrong step, likely a labeling bug rather than an invented figure. This version's numbers are pulled directly from training_metrics.json.

Data provenance and terms

Training data is drawn from a large, unfiltered public aggregation (Manusagents/...-Distillation-Dataset) whose own documentation states it aggregates model-generated content from multiple frontier LLMs, but this project's pipeline does not track or verify which model produced any specific example it used. If any of that upstream content originates from providers whose usage policies restrict training competing models on their outputs, those terms would apply regardless of whether this project's own code can identify which examples they affect. Review the source dataset's documentation before redistributing or commercializing a model trained this way.

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch

base_id = "Qwen/Qwen2.5-7B-Instruct"
adapter_id = "namanadep/Qwen2.5-7B-Manus-Distill"

tok = AutoTokenizer.from_pretrained(base_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    base_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True
)
model = PeftModel.from_pretrained(model, adapter_id)

Repository contents

  • adapter_model.safetensors, adapter_config.json, chat_template.jinja, tokenizer.json, tokenizer_config.json: LoRA adapter and tokenizer files.
  • qwen2.5-7b-manus-distill.gguf: F16 GGUF export for Ollama and llama.cpp (15.2 GB).
  • 100_PROMPTS_BASE_VS_FINE_TUNED_MANUS_DISTILL_COMPARISON.md: the real 100-prompt base/fine-tuned/gold comparison.
  • training_metrics.json: the real training log this README's numbers are drawn from.
  • src/: training, evaluation, and export scripts, mirrored and kept current on GitHub.

License

Apache 2.0 for the code and documentation in this repository. The base Qwen2.5 model and the upstream dataset keep their own terms; see the data provenance note above.

Downloads last month
147
GGUF
Model size
8B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for namanadep/Qwen2.5-7B-Manus-Distill

Base model

Qwen/Qwen2.5-7B
Adapter
(2557)
this model

Dataset used to train namanadep/Qwen2.5-7B-Manus-Distill