Instructions to use quevirus/Xevn-4B-MLX-4bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use quevirus/Xevn-4B-MLX-4bit with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] hf download quevirus/Xevn-4B-MLX-4bit --local-dir Xevn-4B-MLX-4bit
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
Xevn-4B-MLX-4bit
Transformers | MLX | GGUF | GitHub | Website
4-bit MLX weights of Xevn-4B for Apple silicon. Xevn is a 4B decision model built for Korean, trained for Korean understanding, knowledge, and judgment.
Xevn follows the Jev decision format. It reads a question and its options once and returns the answer together with a probability for every option. There is no text generation, so a request costs one forward pass.
Model overview
- Type: Decision model with one forward pass per question and no text generation
- Parameters: 4B
- Architecture: Hybrid Gated DeltaNet and attention, 32 layers (24 Gated DeltaNet, 8 full attention)
- Hidden size / vocabulary: 2,560 / 248,320
- Question types:
choice,noul,score - Languages: Korean (primary), English
- Format: MLX
- Quantization: 4-bit affine, group size 64
- Size: 2.4 GB
- Speed (p50): 78 ms
Quickstart
pip install -U mlx-lm huggingface_hub
hf download quevirus/Xevn-4B-MLX-4bit --local-dir Xevn-4B-MLX-4bit
import sys
sys.path.insert(0, "Xevn-4B-MLX-4bit") # the repository ships the xevn_mlx.py helper
from xevn_mlx import XevnMLX
model = XevnMLX("Xevn-4B-MLX-4bit")
state = "๊ณ ๊ฐ: ์ด์ ์ฃผ๋ฌธํ ์ด์ดํฐ ๊ฐ์ด ์นด๋์์ ๋ ๋ฒ ๊ฒฐ์ ๋์ด์. ์ค๋ ์์ ํ ๊ฑด ์ทจ์ํด ์ฃผ์ธ์."
# "Customer: the earphones I ordered yesterday were charged to my card twice. Please cancel one today."
questions = {
"team": {"type": "choice", "instructions": "Which team should handle this ticket?",
"criteria": {"billing": "Payments and refunds", "shipping": "Delivery", "account": "Login and account"}},
"charged_twice": {"type": "noul", "instructions": "Was the customer charged more than once?"},
"urgency": {"type": "score", "instructions": "How urgent is this ticket?",
"criteria": ["Low", "Medium", "High"]},
}
result = {key: model.predict(state, q) for key, q in questions.items()}
Output (rounded):
{
"team": {"answer": "billing", "probs": {"billing": 0.998, "shipping": 0.001, "account": 0.001}},
"charged_twice": {"answer": true, "probs": {"yes": 0.993, "no": 0.007}},
"urgency": {"answer": 1.77, "probs": {"0": 0.041, "1": 0.150, "2": 0.809}}
}
Values differ slightly between precisions.
Request format
A request is a state (text or any JSON value) and one or more named questions. Each question has a type, instructions, and criteria.
| Type | Use | criteria |
answer in the result |
|---|---|---|---|
choice |
Pick one of up to 26 options | {"key": "description", ...}, 2 to 26 options |
The key of the most probable option |
noul |
Yes or no | Optional {"true": "...", "false": "..."} |
true or false |
score |
Rate on a graded scale | ["lowest level", ..., "highest level"], 2 to 10 levels |
The expected level (0 is the first level) |
probs holds a probability for every option, yes/no, or level. For noul, a yes probability strictly between 0.2 and 0.8 is moved to 0.2 or 0.8 on the same side, so the model always commits to an answer. Readout temperatures per type are in temps.json (choice 1.1, noul 1.2, score 1.2).
Accuracy by precision
This repository is the 4-bit column. On every benchmark, 8-bit to 5-bit stay within 2 points of 16-bit accuracy and 4-bit within 3 points. 3-bit loses 7 to 21 points and is provided for experimentation.
Accuracy (%)
| Benchmark | 16-bit | 8-bit | 6-bit | 5-bit | 4-bit | 3-bit |
|---|---|---|---|---|---|---|
| KoBEST | 89.7 | 89.7 | 89.6 | 89.5 | 87.4 | 79.7 |
| KorMedMCQA | 69.4 | 69.1 | 69.6 | 68.5 | 66.4 | 50.8 |
| HAE-RAE | 58.3 | 58.3 | 56.5 | 57.5 | 56.3 | 40.2 |
| Belebele | 89.0 | 88.8 | 89.0 | 88.7 | 87.8 | 80.8 |
| KMMLU | 56.3 | 56.1 | 55.8 | 56.8 | 55.3 | 42.3 |
| CSAT-QA | 68.8 | 68.3 | 67.7 | 69.4 | 66.8 | 48.3 |
| CLIcK | 66.5 | 66.2 | 66.9 | 65.9 | 65.8 | 58.8 |
| KMMLU-1035 | 50.1 | 49.9 | 50.5 | 50.9 | 50.1 | 41.5 |
Headline
| Benchmark | 16-bit | 8-bit | 6-bit | 5-bit | 4-bit | 3-bit |
|---|---|---|---|---|---|---|
| KoBEST | 92.0 | 91.9 | 92.4 | 91.4 | 90.8 | 80.6 |
| KorMedMCQA | 78.7 | 78.7 | 79.0 | 77.8 | 75.5 | 65.9 |
| HAE-RAE | 70.2 | 69.9 | 68.9 | 68.2 | 68.1 | 56.9 |
| Belebele | 90.3 | 90.0 | 89.6 | 89.2 | 89.6 | 82.8 |
| KMMLU | 68.5 | 68.7 | 68.1 | 69.7 | 69.1 | 55.8 |
| CSAT-QA | 76.4 | 76.4 | 74.7 | 74.5 | 74.5 | 61.8 |
| CLIcK | 72.5 | 72.2 | 72.6 | 73.1 | 74.5 | 68.0 |
| KMMLU-1035 | 60.1 | 59.9 | 60.8 | 61.3 | 61.1 | 53.4 |
Comparisons with other models are in the Xevn-4B evaluation.
Speed
Latency of a single request over HTTP, bf16, Apple M4 Max, 3,000 requests. MLX runtime, one question per request.
| Input length | p50 | p95 |
|---|---|---|
| up to 64 tokens | 56 ms | 64 ms |
| 65 to 128 tokens | 88 ms | 103 ms |
| 129 to 256 tokens | 156 ms | 188 ms |
Model files
| Format | Precision | Size | Speed (p50) | Repository |
|---|---|---|---|---|
| Transformers | 16-bit | 9.3 GB | Xevn-4B | |
| MLX | 16-bit | 8.4 GB | 88 ms | Xevn-4B-MLX-bf16 |
| MLX | 8-bit | 4.5 GB | 83 ms | Xevn-4B-MLX-8bit |
| MLX | 6-bit | 3.4 GB | 82 ms | Xevn-4B-MLX-6bit |
| MLX | 5-bit | 2.9 GB | 80 ms | Xevn-4B-MLX-5bit |
| MLX | 4-bit | 2.4 GB | 78 ms | Xevn-4B-MLX-4bit |
| MLX | 3-bit | 1.8 GB | 77 ms | Xevn-4B-MLX-3bit |
| GGUF | BF16 | 8.67 GB | Xevn-4B-GGUF | |
| GGUF | Q8_0 | 4.61 GB | Xevn-4B-GGUF | |
| GGUF | Q6_K | 3.56 GB | Xevn-4B-GGUF | |
| GGUF | Q5_K_M | 3.16 GB | Xevn-4B-GGUF | |
| GGUF | Q4_K_M | 2.78 GB | Xevn-4B-GGUF |
Speed is the MLX p50 over an equal mix of the three input lengths in the Speed table, measured in one session on an Apple M4 Max. On every benchmark, MLX 8-bit to 5-bit stay within 2 points of 16-bit accuracy and 4-bit within 3 points. 3-bit loses 7 to 21 points and is provided for experimentation. The Transformers weights keep the original multimodal layout (9.3 GB); the helper uses the text model only.
Intended use and limitations
Xevn is built for decisions: classification, multiple choice, yes/no judgments, and rating. It is not a chat or text-generation model. It is tuned for Korean; English input works but is not the focus.
- Xevn returns probabilities over the options you give it. It does not generate text and cannot answer open questions.
- The bundled helpers run one forward pass per question and accept 2 to 26 options and 2 to 10 score levels.
- Speed figures are for MLX on an Apple M4 Max with inputs up to 256 tokens.
Citation
@misc{xevn2026,
title = {Xevn-4B: a Korean decision model},
author = {Nhahan},
year = {2026},
url = {https://huggingface.co/quevirus/Xevn-4B}
}
License
Apache 2.0. Built on Qwen3.5-4B.
- Downloads last month
- 53
4-bit