Le Chaton Slim V0.1 — 23.3B Mixtral-MoE Agentic/Coding Model

#DO NOT USE. DOESN'T WORK + IN PROGRESS. ITS SHITE AS FUCK

GGUF: https://huggingface.co/HavocK1/Le-Chaton-Slim-23B-GGUF

A Mixtral-style mixture-of-experts model built by fine-tuning 10 experts from Ministral-3B-Instruct (text-only, vision stripped) and merging with mergekit-moe. Intended as a coding assistant and agentic-tool-use backbone.

⚠️ EXPERIMENTAL. Model quality evaluation is pending. This is a hobby project by someone who barely knows what they're doing. It might be terrible. If you're brave enough to test it, please drop notes

Eval ran by user simonko912 (https://huggingface.co/simonko912)

Tasks Version Filter n-shot Metric Value Stderr
mmlu 2 none acc 0.2521 _ 0.0037
- humanities 2 none 0 acc _ 0.2618 _ 0.0064
- formal_logic 1 none 0 acc _ 0.3492 _ 0.0426
- high_school_european_history 1 none 0 acc _ 0.2242 _ 0.0326
- high_school_us_history 1 none 0 acc _ 0.2794 _ 0.0315
- high_school_world_history 1 none 0 acc _ 0.2785 _ 0.0292
- international_law 1 none 0 acc _ 0.1818 _ 0.0352
- jurisprudence 1 none 0 acc _ 0.3056 _ 0.0445
- logical_fallacies 1 none 0 acc _ 0.2822 _ 0.0354
- moral_disputes 1 none 0 acc _ 0.2399 _ 0.0230
- moral_scenarios 1 none 0 acc _ 0.2737 _ 0.0149
- philosophy 1 none 0 acc _ 0.2154 _ 0.0234
- prehistory 1 none 0 acc _ 0.2716 _ 0.0247
- professional_law 1 none 0 acc _ 0.2549 _ 0.0111
- world_religions 1 none 0 acc _ 0.3099 _ 0.0355
- other 2 none 0 acc _ 0.2533 _ 0.0078
- business_ethics 1 none 0 acc _ 0.2800 _ 0.0451
- clinical_knowledge 1 none 0 acc _ 0.2491 _ 0.0266
- college_medicine 1 none 0 acc _ 0.2717 _ 0.0339
- global_facts 1 none 0 acc _ 0.2400 _ 0.0429
- human_aging 1 none 0 acc _ 0.2735 _ 0.0299
- management 1 none 0 acc _ 0.2039 _ 0.0399
- marketing 1 none 0 acc _ 0.2521 _ 0.0284
- medical_genetics 1 none 0 acc _ 0.2600 _ 0.0441
- miscellaneous 1 none 0 acc _ 0.2593 _ 0.0157
- nutrition 1 none 0 acc _ 0.2190 _ 0.0237
- professional_accounting 1 none 0 acc _ 0.2376 _ 0.0254
- professional_medicine 1 none 0 acc _ 0.2279 _ 0.0255
- virology 1 none 0 acc _ 0.3373 _ 0.0368
- social sciences 2 none 0 acc _ 0.2340 _ 0.0076
- econometrics 1 none 0 acc _ 0.2895 _ 0.0427
- high_school_geography 1 none 0 acc _ 0.2273 _ 0.0299
- high_school_government_and_politics 1 none 0 acc _ 0.2124 _ 0.0295
- high_school_macroeconomics 1 none 0 acc _ 0.2359 _ 0.0215
- high_school_microeconomics 1 none 0 acc _ 0.2521 _ 0.0282
- high_school_psychology 1 none 0 acc _ 0.2330 _ 0.0181
- human_sexuality 1 none 0 acc _ 0.2443 _ 0.0377
- professional_psychology 1 none 0 acc _ 0.2255 _ 0.0169
- public_relations 1 none 0 acc _ 0.2364 _ 0.0407
- security_studies 1 none 0 acc _ 0.2327 _ 0.0270
- sociology 1 none 0 acc _ 0.2040 _ 0.0285
- us_foreign_policy 1 none 0 acc _ 0.2800 _ 0.0451
- stem 2 none 0 acc _ 0.2540 _ 0.0077
- abstract_algebra 1 none 0 acc _ 0.2000 _ 0.0402
- anatomy 1 none 0 acc _ 0.2519 _ 0.0375
- astronomy 1 none 0 acc _ 0.2500 _ 0.0352
- college_biology 1 none 0 acc _ 0.3125 _ 0.0388
- college_chemistry 1 none 0 acc _ 0.2900 _ 0.0456
- college_computer_science 1 none 0 acc _ 0.3400 _ 0.0476
- college_mathematics 1 none 0 acc _ 0.2900 _ 0.0456
- college_physics 1 none 0 acc _ 0.2647 _ 0.0439
- computer_security 1 none 0 acc _ 0.1800 _ 0.0386
- conceptual_physics 1 none 0 acc _ 0.2596 _ 0.0287
- electrical_engineering 1 none 0 acc _ 0.3034 _ 0.0383
- elementary_mathematics 1 none 0 acc _ 0.2566 _ 0.0225
- high_school_biology 1 none 0 acc _ 0.2774 _ 0.0255
- high_school_chemistry 1 none 0 acc _ 0.2266 _ 0.0295
- high_school_computer_science 1 none 0 acc _ 0.2300 _ 0.0423
- high_school_mathematics 1 none 0 acc _ 0.2296 _ 0.0256
- high_school_physics 1 none 0 acc _ 0.2252 _ 0.0341
- high_school_statistics 1 none 0 acc _ 0.1991 _ 0.0272
- machine_learning 1 none 0 acc _ 0.2768 _ 0.0425
arc_challenge 1 none 0 acc _ 0.2099 _ 0.0119
none 0 acc_norm _ 0.2509 _ 0.0127
boolq 2 none 0 acc _ 0.5859 _ 0.0086
gsm8k 3 flexible-extract 5 exact_match _ 0.0000 _ 0.0000
strict-match 5 exact_match _ 0.0000 _ 0.0000
hellaswag 1 none 0 acc _ 0.2542 _ 0.0043
none 0 acc_norm _ 0.2663 _ 0.0044
winogrande 1 none 0 acc _ 0.4909 _ 0.0141
Groups Version Filter n-shot Metric Value Stderr
------------------ ------: ------ -----: ------ --- -----: --- -----:
mmlu 2 none acc 0.2521 _ 0.0037
- humanities 2 none 0 acc _ 0.2618 _ 0.0064
- other 2 none 0 acc _ 0.2533 _ 0.0078
- social sciences 2 none 0 acc _ 0.2340 _ 0.0076
- stem 2 none 0 acc _ 0.2540 _ 0.0077

Quick facts

Architecture Mixtral-style MoE
Parameters 23.3B (much smaller than planned — MoE layers replaced, vision encoder stripped)
Base model mistralai/Ministral-3-3B-Instruct-2512 (text-only)
Experts 10 routed, top-2 active per token
Training Full fine-tune per expert, ~25k samples each (I'm broke)
Context length 128k (Ministral native)
Merge tool mergekit-moe, hidden gate mode
Format Ministral chat template ([INST]...[/INST])

Why it's only 23.3B instead of ~40B

Honestly I aimed for 35-40B. The MoE merge strips the base model's dense MLP layers and replaces them with a router + shared expert MLPs. On top of that I ripped out the vision encoder since this model doesn't need images. Result: smaller. If I make a V2 I might bump the expert count and switch to DeepSeek MoE (shared + routed experts) to hit the size target.

Experts

Each expert was full fine-tuned on its own dataset mix so the router has something meaningful to route toward. Only 25k samples/epoch because GPU time costs money and I'm not made of it.

# Expert Specialty
1 Captain General instruction following + safety boundaries
2 Python Coding Core Python SFT (Magicoder OSS/Evol-Instruct)
3 Verified Python Execution-filtered code + OPC educational instruct
4 Code Reasoning Step-by-step algorithm design, CoT (OpenCodeReasoning + OpenThoughts)
5 Tool Calling Function calling + structured JSON (Hermes-fc + ToolACE + xLAM)
6 Agentic Workflows Multi-step agent planning, ReAct loops (Hermes-agent + Nemotron-agentic)
7 Code Editing Diff generation, refactoring (commitpackft)
8 Code Review Code critique + iterative improvement (CodeFeedback)
9 General Reasoning Math, logic, non-code problem solving
10 Safety Net Untuned base model — catch-all for chitchat, greetings, refusals

The captain (expert #1) donates self-attention and layer norms to the whole model. The safety net (expert #10) is the raw bf16 base with no fine-tuning at all — it catches prompts that don't match any specialty so you don't get the tool-calling expert trying to process "hello".

Limitations (there are many)

  • Not evaluated. I ran a local smoke test (3k samples/expert, q8_0 GGUF) and it spits out text, but I haven't done any real benchmarks. The production run trains at 25k or 75k samples per expert and I haven't tested the final merge yet.
  • Low sample counts. 25k samples per expert is tiny by modern standards. Quality is likely mediocre.
  • Training quality unknown. The local smoke run used 3k samples each (seq_len 1024) — results were... not great. May be the tiny dataset, may be the idea itself is bad. Production run on a RunPod A40 might fix it, might not. ¯\(ツ)
  • No RLHF/DPO. This is SFT-only. No preference optimization, no reward modeling. It will not be aligned beyond what the datasets provide.
  • No vision. The vision encoder was completely stripped. This is text-only.

Planned V2 (if this isn't terrible)

  • DeepSeek MoE architecture: shared experts (always active) + routed experts, which should handle overlapping domains better.
  • ~14 experts instead of 10, for more granular specialization.
  • Proper eval harness before shipping.
  • Maybe a separate "fanfiction" ( ͡° ͜ʖ ͡°) creative writing fine-tune if I feel like it. No promises.

How to use

This is a standard transformers model with a Mixtral architecture. The chat template is the Ministral format:

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "HavocK1/Le-Chaton-Slim-MoE",
    torch_dtype="auto",
    device_map="auto",
)

tokenizer = AutoTokenizer.from_pretrained("HavocK1/Le-Chaton-Slim-MoE")

messages = [
    {"role": "user", "content": "Write a Python function to reverse a linked list."},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

For GGUF (llama.cpp):

llama-server le_chaton_slim.gguf --n-gpu-layers 99

Datasets

The training datasets (deduped JSONL) are available at HavocK1/Le-Chaton-Slim-Experts.

Source datasets used:

  • HuggingFaceTB/smoltalk, HuggingFaceH4/no_robots, Magpie-Align/Magpie-Pro-300K-Filtered, teknium/OpenHermes-2.5, HuggingFaceH4/ultrachat_200k
  • ise-uiuc/Magicoder-OSS-Instruct-75K, ise-uiuc/Magicoder-Evol-Instruct-110K
  • bigcode/self-oss-instruct-sc2-exec-filter-50k, OpenCoder-LLM/opc-sft-stage2
  • nvidia/OpenCodeReasoning, open-thoughts/OpenThoughts-114k
  • NousResearch/hermes-function-calling-v1, Team-ACE/ToolACE, Salesforce/xlam-function-calling-60k
  • lambda/hermes-agent-reasoning-traces, nvidia/Nemotron-SFT-Agentic-v2
  • bigcode/commitpackft
  • m-a-p/CodeFeedback-Filtered-Instruction, m-a-p/Code-Feedback
  • QuixiAI/dolphin-r1, HuggingFaceTB/smoltalk (NuminaMath-CoT)

Credits

Built with:

  • Ministral-3B (Mistral AI)
  • mergekit (Arcee AI)
  • HuggingFace transformers + TRL + PEFT
  • All the amazing dataset authors above 🙏
  • An A40 GPU on RunPod that I paid for with actual money
  • Shout out to my homies Mistral 3.5 128B, GLM 5.2 and DS V4 pro. Couldn't have done it without them
Downloads last month
1,507
Safetensors
Model size
23B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for HavocK1/Le-Chaton-Slim-23B

Finetuned
(30)
this model
Quantizations
2 models