Instructions to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
Use Docker
docker model run hf.co/skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
- Ollama
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with Ollama:
ollama run hf.co/skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
- Unsloth Studio
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF to start chatting
- Docker Model Runner
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with Docker Model Runner:
docker model run hf.co/skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
- Lemonade
How to use skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF-Q4_K_M
List all available models
lemonade list
- Atomic Chat
Ornith-1.0-35B "Frankenstein" MTP
Cross-model MTP head graft β speculative decoding on a model that was never trained with MTP heads.
Available in Q6_K and Q4_K_M quantizations.
What is this?
Ornith-1.0-35B is an agentic-coding MoE (35B-A3B, Qwen3.5 base) with excellent performance but no native MTP (multi-token prediction) support.
This GGUF has 20 MTP head tensors surgically grafted from a sibling finetune of the same architecture β Qwopus3.6-35B-A3B, which does ship with MTP heads. The donor and target share the same qwen35moe architecture, embedding dimensions, and hybrid SSM/Mamba layer structure, making the graft surprisingly effective.
The result: ~20-25% inference speedup via --spec-type draft-mtp self-speculation, with no quality degradation.
Performance
| Metric | Stock (no MTP) | Q6_K MTP | Q4_K_M MTP |
|---|---|---|---|
| Speed | 126 tok/s | 152 tok/s | 158 tok/s |
| MTP acceptance | β | 74.3% | 79.5% |
| VRAM (dual 3090) | 28 GB | 32 GB | 23 GB |
| Quality | Clean | Clean | Clean |
- Hardware: 2Γ RTX 3090 (24 GB each), tensor-split 50/50
- Context: 128K, Q8 KV cache
- Spec params:
--spec-type draft-mtp --spec-draft-n-max 4
Q4 achieves higher acceptance than Q6 β the quantization noise in the target model appears to align better with the MTP draft predictions. Q4 also runs faster (less memory bandwidth) and fits more comfortably in VRAM.
Files in this repo
| File | Size | Description |
|---|---|---|
ornith-1.0-35b-Q6_K-MTP-final.gguf |
28 GB | Full Q6_K grafted model |
ornith-1.0-35b-Q4_K_M-MTP.gguf |
21 GB | Full Q4_K_M grafted model (smaller, faster, higher acceptance) |
ornith-1.0-35b-Q6_K-MTP-donor-heads.gguf |
0.69 GB | Q6_K MTP heads only β for DIY grafting |
ornith-1.0-35b-Q4_K_M-MTP-donor-heads.gguf |
0.55 GB | Q4_K_M MTP heads only β for DIY grafting |
gguf_mtp_graft.py |
7 KB | The graft surgery script β works with any same-architecture model pair |
DIY: Graft onto your own base GGUF
Already have the base Ornith GGUF (or another qwen35moe model)? Skip the big download and graft locally in ~2 minutes:
# 1. Download the donor heads + graft script
hf download skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF \
ornith-1.0-35b-Q6_K-MTP-donor-heads.gguf gguf_mtp_graft.py \
--local-dir .
# 2. Graft onto your base GGUF (Q6 example)
python3 gguf_mtp_graft.py \
your-base-model-Q6_K.gguf \
ornith-1.0-35b-Q6_K-MTP-donor-heads.gguf \
output-MTP.gguf
# 3. Run with draft-mtp speculation
llama-server --model output-MTP.gguf --spec-type draft-mtp --spec-draft-n-max 4 ...
Match donor quant to target quant for best results. Q6 heads on Q6 base, Q4 heads on Q4 base. Cross-quant grafting (e.g. Q6 heads on Q4 base) will load but may have lower acceptance.
The donor heads work on any qwen35moe model with 40 blocks (e.g. Ornith, Qwopus3.6, other Qwen3.5-A3B finetunes).
How it was made
- Parsed the target GGUF header (Ornith: 40 blocks, 733 tensors)
- Identified 20 MTP tensors in the donor (Qwopus3.6 MTP:
blk.40.*) - Grafted donor MTP tensors into the target, appending after the existing data section
- Patched metadata:
qwen35moe.block_count: 40 β 41qwen35moe.nextn_predict_layers: added = 1
- Verified: clean output, no token leakage, 74-80% draft acceptance
The 20 MTP tensors are: attention (q/k/v/output norms), shared + 256-routed experts (gate/up/down), and the nextn projection heads β essentially one full transformer layer's worth of weights.
The Q4 variant was produced by requantizing the Q6 grafted model to Q4_K_M using llama.cpp's --allow-requantize flag. All 20 MTP tensors were preserved and converted to Q4.
How to run
llama-server \
--model ornith-1.0-35b-Q4_K_M-MTP.gguf \
--port 8080 \
--ctx-size 131072 \
--threads 16 \
--batch-size 1024 --ubatch-size 512 \
--n-predict 8192 \
--spec-type draft-mtp --spec-draft-n-max 4 \
--temp 0.6 --top-p 1.0 --top-k 20 \
--flash-attn on \
--cont-batching \
--kv-unified \
-ctk q8_0 -ctv q8_0 \
-ngl 999 --no-mmap --mlock \
--jinja --reasoning off
Single GPU (RTX 3090): Add --n-cpu-moe 12 to offload some expert layers to CPU. Q4 fits more easily than Q6.
Dual GPU: Use --tensor-split 50,50 --main-gpu 0 and everything fits on-GPU.
Requirements
- llama.cpp with
draft-mtpsupport (the--spec-type draft-mtpflag) - Match donor quant to target: Q6_K donor + Q6_K target, Q4_K_M donor + Q4_K_M target
Limitations
- Acceptance rate depends on how similar the donor's weight space is to the target's. RL-trained finetunes (like Ornith) may have more weight drift than SFT-only finetunes.
- If acceptance drops below ~20%, the MTP heads are incompatible for that model pair β don't use MTP, stick with plain inference.
- MTP heads are NOT transferable across architecture families (e.g. Qwen3.5 MoE heads won't work on Qwen2.5 even if embedding dims match).
Credits
- Original model: deepreinforce-ai/Ornith-1.0-35B
- Base GGUF quant: deepreinforce-ai/Ornith-1.0-35B-GGUF
- MTP head donor: Qwopus3.6-35B-A3B-v1-MTP (same qwen35moe architecture)
- Downloads last month
- 530
4-bit
6-bit
Model tree for skinnyctax/Ornith-1.0-35B-Q6_K-Frankenstein-MTP-GGUF
Base model
ornith-ai/Ornith-1.0-35B