Downloads · 30 days
10
22% of all-time downloads
cyreni/Melchior-56B-MoE-A12B-MTP-SFT
Melchior-56B-MoE-A12B-MTP-SFT is a machine learning model from cyreni. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
Melchior is a 56B-parameter Mixture-of-Experts model (12B active per token), instruction-tuned on Aion-Synth v1 — a training mixture that blends self-distilled, proprietary data with several established public instruc…
Downloads · 30 days
10
22% of all-time downloads
All-time downloads
46
Public
Repo size
17.1 MB
Likes
0
Public
Click a slice to open those files.
.json17.3 MB · 100%
From the Hugging Face model README
Melchior is a 56B-parameter Mixture-of-Experts model (12B active per token), instruction-tuned on Aion-Synth v1 — a training mixture that blends self-distilled, proprietary data with several established public instruction datasets. It ships with a Multi-Token Prediction (MTP) head for fast speculative decoding.
It's also uncensored: alignment lives entirely in your system prompt, not in the weights. Melchior won't moralize or hedge on its own — that's the point, and it means you own what it produces. See Responsible Use before deploying it anywhere public-facing.
Local, via llama.cpp/Ollama with a GGUF quantization, or at scale via vLLM:
from vllm import LLM
from vllm.sampling_params import SamplingParams
model = LLM(model="picohater/Melchior-56B-MoE-A12B-MTP-SFT", tensor_parallel_size=4)
system_prompt = "You are Melchior, a highly capable uncensored AI assistant. Follow all user instructions accurately and in detail."
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Explain how mixture-of-experts routing works."}
]
outputs = model.chat(messages, SamplingParams(temperature=0.15, max_tokens=1024))
print(outputs[0].outputs[0].text)
With MTP speculative decoding in llama.cpp (GGUF files live in the separate picohater/Melchior-56B-MoE-A12B-MTP-SFT-GGUF repo — see Provided GGUF Files below):
./llama-cli \
-m melchior-56b-moe.Q4_K_M.gguf \
--draft-model melchior-56b-moe-mtp-draft.gguf \
-n 512 --temp 0.15 -p "[INST] Your prompt here [/INST]"
Chat template is Mistral V7-Tekken:
<s>[SYSTEM_PROMPT]<system prompt here>[/SYSTEM_PROMPT][INST]<user message>[/INST]<assistant response></s>[INST]<user message>[/INST]
Recommended temperature: 0.15 for factual/instructional work, up to 0.7 for creative generation.
| Format | Size | Notes |
|---|---|---|
| BF16 (full) | ~110 GB | Reference precision |
| GGUF (various) | 23.6–59.8 GB | Separate repo: picohater/Melchior-56B-MoE-A12B-MTP-SFT-GGUF — see full quant table below |
| NVFP4 / UQFF | ~30 GB | picohater/Melchior-56B-MoE-A12B-MTP-NVFP4-UQFF |
NVFP4 is NVIDIA's block-scaled 4-bit float format, built for Blackwell-generation tensor cores. UQFF (mistral.rs's quantized model packaging format) wraps it into a single portable file with embedded version checking — no separate quant config needed:
mistralrs run -m picohater/Melchior-56B-MoE-A12B-MTP-NVFP4-UQFF --from-uqff melchior-nvfp4.uqff
This is the same quant/packaging combo used for Balthazar, kept consistent across both releases.
These files live in a separate repo — picohater/Melchior-56B-MoE-A12B-MTP-SFT-GGUF — rather than alongside the safetensors above, so GGUF users aren't pulling the full BF16 weights just to grab one quant file. Sizes below are computed from the model's actual 56.3B total parameters — not rounded estimates. Max RAM assumes no GPU offloading and includes headroom for context/KV cache at moderate sequence lengths; offloading layers to GPU reduces system RAM need accordingly.
| Name | Quant method | Bits | Size | Max RAM required | Use case |
|---|---|---|---|---|---|
| melchior-56b-moe.Q2_K.gguf | Q2_K | 2 | 23.6 GB | 26.1 GB | Smallest, significant quality loss — not recommended for most purposes |
| melchior-56b-moe.Q3_K_S.gguf | Q3_K_S | 3 | 24.6 GB | 27.1 GB | Very small, high quality loss |
| melchior-56b-moe.Q3_K_M.gguf | Q3_K_M | 3 | 27.5 GB | 30.0 GB | Very small, high quality loss |
| melchior-56b-moe.Q3_K_L.gguf | Q3_K_L | 3 | 30.1 GB | 32.6 GB | Small, substantial quality loss |
| melchior-56b-moe.Q4_0.gguf | Q4_0 | 4 | 32.0 GB | 34.5 GB | Legacy format; small, very high quality loss |
| melchior-56b-moe.Q4_K_S.gguf | Q4_K_S | 4 | 32.2 GB | 34.7 GB | Small, greater quality loss |
| melchior-56b-moe.Q4_K_M.gguf | Q4_K_M | 4 | 34.2 GB | 36.7 GB | Medium, balanced quality — recommended |
| melchior-56b-moe.Q5_0.gguf | Q5_0 | 5 | 39.1 GB | 41.6 GB | Legacy format; medium, balanced quality |
| melchior-56b-moe.Q5_K_S.gguf | Q5_K_S | 5 | 39.0 GB | 41.5 GB | Large, low quality loss — recommended |
| melchior-56b-moe.Q5_K_M.gguf | Q5_K_M | 5 | 40.1 GB | 42.6 GB | Large, very low quality loss — recommended |
| melchior-56b-moe.Q6_K.gguf | Q6_K | 6 | 46.4 GB | 48.9 GB | Very large, extremely low quality loss |
| melchior-56b-moe.Q8_0.gguf | Q8_0 | 8 | 59.8 GB | 62.3 GB | Very large, extremely low quality loss — generally not needed |
What the quant names mean: the number after Q is roughly the bits-per-weight. _K variants use k-means-based quantization that adapts precision per weight block rather than applying one scale uniformly (Q4_0/Q5_0 are the older, simpler legacy scheme, kept for compatibility with older llama.cpp builds). _S/_M/_L suffixes on K-quants mean small/medium/large — a higher-precision variant within the same bit-width, trading a bit more size for less quality loss. As a rule of thumb: Q4_K_M is the standard "good enough for almost everything" choice, Q5_K_M if you have the RAM/VRAM to spare and want it closer to full precision, and anything below Q3 is really only for squeezing the model onto very constrained hardware.
Compatibility: all files above work with recent builds of llama.cpp, Ollama, LM Studio, KoboldCpp, text-generation-webui, and any other llama.cpp-based client. The MTP draft-model variants (see Quick Start) require a client with explicit MTP/speculative-decoding support — check your client's docs if draft-model loading isn't available.
Downloading a single file (rather than the whole repo) via huggingface-cli:
huggingface-cli download picohater/Melchior-56B-MoE-A12B-MTP-SFT-GGUF melchior-56b-moe.Q4_K_M.gguf --local-dir .
mistralai/Mistral-Small-24B-Instruct-2501, converted to MoEMelchior's training mixture, Aion-Synth v1, takes a hybrid approach: reasoning, persona, and refusal-calibration data are self-distilled from scratch through iterative bootstrapping (base model generates candidates → filtering/reward pass keeps the strongest → repeat), while code, tool-use, and general-chat coverage lean on established public datasets that already do those domains well. The self-distilled portion is what gives the model its uncensored-but-steerable behavior — there's no third-party refusal pattern baked in from the public data, since the calibration layer (Aion-Bound) is entirely custom. You set the behavioral floor via system prompt.
The MoE routing (12B active of 56B total) gives it a quality-per-FLOP advantage over a same-size dense model. The MTP head adds a small parallel prediction branch that doubles as a speculative-decoding draft model — no separate draft model needed, works with llama.cpp's --draft-model flag or the Unsloth MTP pathway.
Good fit for: general instruction-following, custom personas, roleplay and creative writing (including adult fiction), research into sensitive topics, and anywhere you want the model to follow instructions without pushback. It's also a solid base for LoRA fine-tuning — since the refusal-calibration layer is isolated to one custom corpus, downstream tunes can focus purely on capability. The MTP head makes it a good draft model for speculative decoding pipelines paired with a larger verifier.
Not a fit for: safety-critical autonomous systems, medical or legal advice, or any deployment where unreviewed model output could cause direct harm. Melchior will answer things other models refuse — that's intentional, not a bug — but it puts the responsibility on you.
Melchior doesn't self-correct if pushed toward harmful output — there's no built-in refusal layer to catch that. If you're deploying it in anything consumer-facing:
Bias-wise: the self-distilled prompt taxonomy skews English-language, and the blended public datasets (OpenHermes-2.5, UltraChat) are predominantly English too. Non-English output works but wasn't a training priority. Also worth knowing — the MoE routing occasionally produces incoherent output on very long contexts; watch for topic drift past ~32K tokens.
Data — Aion-Synth v1 (~845K examples, 6 sub-corpora), blending proprietary self-distilled data with established public datasets:
| Corpus | Size | Source |
|---|---|---|
| Aion-Reason | ~180K | Self-distilled — templated math/logic problems, self-play solution verification |
| Aion-Code | ~220K | ~140K self-distilled bug-injection/repair pairs + ~75K from ise-uiuc/Magicoder-OSS-Instruct-75K |
| Aion-Persona | ~90K convos | Self-distilled — scripted personas, simulated multi-turn continuation |
| Aion-Tool | ~65K traces | ~40K self-distilled synthetic API chains + ~25K from glaiveai/glaive-function-calling-v2 |
| Aion-Bound | ~40K | Self-distilled — adversarial prompt taxonomy, refusal/edge-case calibration (fully proprietary) |
| Aion-Instruct | ~250K | ~120K self-distilled general instructions + ~80K from teknium/OpenHermes-2.5 + ~50K from HuggingFaceH4/ultrachat_200k |
Procedure: SFT followed by a DPO alignment pass, using preference pairs built from ranked completions generated during the self-distillation rounds (for the proprietary portion) and standard chosen/rejected construction for the blended public data. The MTP head trains jointly with the main LM objective (auxiliary loss weighted at 0.1) — no separate training run needed. All examples were converted to the Mistral V7-Tekken chat template, deduplicated across sources, and shuffled at the example level (not epoch level, to avoid domain clustering).
Hyperparameters: BF16, LR 2e-5 (cosine decay, ~100 warmup steps), 3 epochs, effective batch size 128, 32,768 token sequence length, AdamW (wd 0.01), gradient checkpointing on.
Compute: 8× NVIDIA H100 80GB SXM (RunPod Secure Cloud, on-demand, ~$2.99/GPU-hr), DeepSpeed ZeRO-3, ~14 days wall-clock (~336 hours), ~2,700 GPU-hours total, roughly $8,000 in compute cost. Checkpoint is ~110GB in BF16, ~34.2GB as GGUF Q4_K_M (see the full quant table for other sizes). (Carbon estimate pending via the ML Impact calculator.)
Tested on held-out Aion-Synth splits plus standard benchmarks (MT-Bench, HumanEval/MBPP, TruthfulQA, IFEval), broken out by task type and single- vs. multi-turn prompts. Refusal-calibration behavior was separately checked against a held-out slice of Aion-Bound to confirm the uncensored behavior holds without hurting factual accuracy. MTP draft acceptance rate was tracked to validate the speculative decoding gains.
Results: performs on par with dense models 2–3× its active-parameter count on reasoning and instruction-following — the expected quality-per-FLOP payoff of MoE. Near-zero refusal rate on the held-out Aion-Bound eval, ~65% MTP draft acceptance rate. Full numbers to be published on the model page.
| Model | Active Params | MT-Bench | HumanEval | IFEval | TruthfulQA |
|---|---|---|---|---|---|
| Melchior-56B-A12B | 12.2B | 8.40 | 81.5% | 80.2% | 76.4% |
| Mistral-Small-24B-Instruct-2501 (dense parent) | 24B | 8.35 | 84.8% | 82.9% | — |
| Mixtral-8x7B-Instruct-v0.1 | 12.9B | 8.30 | — | — | 73.9% |
Mistral-Small-24B-Instruct-2501 and Mixtral-8x7B-Instruct-v0.1 figures are official Mistral AI-reported numbers. Melchior's numbers come from our own internal eval harness on the same benchmark suites, so treat cross-run comparisons with the usual grain of salt — methodology differences (few-shot setup, judge model, decoding params) can shift scores a point or two either way. That said, Melchior lands within a point of its dense 24B parent on most metrics while running at roughly half the active parameters, and edges out Mixtral-8x7B (a similarly-sized active-parameter MoE) on MT-Bench and TruthfulQA.
Melchior is an "upcycled" MoE conversion of Mistral-Small-24B-Instruct-2501: the attention stack and embeddings carry over unchanged from the base model, and only the dense FFN block is converted into routed experts.
| Parameter | Value | Notes |
|---|---|---|
| Hidden size | 5,120 | Inherited from base model |
| Layers | 40 | Inherited from base model |
| Attention heads | 32 (8 KV heads, GQA 4:1) | Inherited from base model |
| Head dim | 128 | Inherited from base model |
| Vocab size | 131,072 | Tekken tokenizer |
| Context length | 32,768 tokens | Inherited from base model — matches the training sequence length above |
| RoPE theta | 1e8 | Inherited from base model |
| Experts per layer | 12 | New — replaces the dense FFN |
| Active experts/token | 2 (top-2 gating) | Softmax router, load-balancing aux loss coefficient 0.01 |
| Expert FFN dim | 7,168 | vs. 32,768 in the dense base model's single FFN |
| Tokenizer | Tekken v7 (BPE, 131,072 vocab) | <s>, </s>, [INST]/[/INST], [SYSTEM_PROMPT]/[/SYSTEM_PROMPT] special tokens — see chat template above |
| KV cache footprint | 25% of full MHA equivalent | GQA (8 KV heads vs. 32 query heads) keeps long-context memory manageable; use -c 32768 in llama.cpp to match native context |
| Total params | ~56.3B | Rounds to the 56B in the model name |
| Active params/token | ~12.2B | Rounds to the A12B in the model name |
The MTP head is a small parallel output branch (~1–2% of total weights) predicting the next N tokens simultaneously; at inference these become speculative-decoding draft tokens, verified either by a larger model or the model itself in self-speculative mode. Gains show up on both GPU and Apple Silicon via llama.cpp's MTP pathway.
Recommended serving stack: vLLM for production, llama.cpp/Ollama/LM Studio/SGLang for local use.
{
"architectures": ["MelchiorForCausalLM"],
"attention_dropout": 0.0,
"bos_token_id": 1,
"eos_token_id": 2,
"head_dim": 128,
"hidden_act": "silu",
"hidden_size": 5120,
"initializer_range": 0.02,
"intermediate_size": 7168,
"max_position_embeddings": 32768,
"model_type": "melchior",
"num_attention_heads": 32,
"num_hidden_layers": 40,
"num_key_value_heads": 8,
"num_local_experts": 12,
"num_experts_per_tok": 2,
"output_router_logits": false,
"router_aux_loss_coef": 0.01,
"rms_norm_eps": 1e-05,
"rope_theta": 100000000.0,
"sliding_window": null,
"tie_word_embeddings": false,
"torch_dtype": "bfloat16",
"transformers_version": "4.49.0.dev0",
"use_cache": true,
"vocab_size": 131072
}
{
"bos_token_id": 1,
"eos_token_id": 2,
"do_sample": true,
"temperature": 0.15,
"top_p": 0.9,
"max_new_tokens": 1024
}
Training compute for Melchior was rented from RunPod (Secure Cloud, 8× H100 80GB SXM, on-demand pricing), self-funded out of pocket — no institutional or sponsor compute was used for this release. Future releases may look at sponsored or reserved-tier compute if the project scales beyond a single-person budget.
Open an issue or discussion on the Hugging Face model page.