CoolFace
Modelpublic

chaoliangUNSW/Jev-Style-0.8B-Decision-v3-MLX

sourceHugging Faceapache-2.0updated 2m agoView on Hugging Face
1likes
Model Card

Jev-Style-0.8B-Decision-v3-MLX

Jev-Style decision series: v1 · 2B → v2 · 2B → v3 · 0.8B · Website: jevstyle.com · Collection: all v3 builds and demos

Jev-style decisions on your laptop. These are the Apple-silicon (MLX) builds of Jev-Style-0.8B-Decision-v3: 8-bit (0.80 GB) and bf16 (1.50 GB) in one repository, both with the same decision as full precision on 240 of 240 parity rows. The smallest build overall is the 0.53 GB GGUF Q4_K_M. Full results, protocols, training data and licences are on the main model card.

[image]

Beyond its training data**Jev-Style v3 · 0.8B**Best official Laya
Banking77, 77 intents (never trained) ↑68.2%49.2%
MASSIVE intent, 37 held-out languages ↑65.5%36.1%
tweet_topic, zero-shot ↑75.5%63.2%¹
JevBench v1.4.1, 231 public items, zero-shot ↑64.1%58.4%²
Runs on your own machineYes, 0.80 GB (8-bit MLX)Yes
Longest input per call25,600 tokens1,024 by default³

<sub>Laya: the best of its three official checkpoints, re-run by us on identical rows with their shipped temperatures; paired 95% CIs exclude zero for Banking77 and MASSIVE. ¹ English Laya, as published by the elcronos study. ² Laya's score as published on the JevBench board; it lies inside v3's 95% CI, so this lead is a point estimate. ³ Default input budget in the Laya README: 1,024 tokens for the multilingual and typed checkpoints, 512 for English. Jev (API) has higher accuracy than v3 on each of these sets where its accuracy is published. Protocols and confidence intervals: see the main model card.</sub>

Reads long documents in one call. Up to 25,600 tokens of input, 25× Laya's 1,024-token default and 25× our 2B v2's prompt. On 1,280 real 24K-token items v3 answers 98.3% correctly, and accuracy stays flat from 1K to 24K tokens (preregistered claim, passed).

Also: ahead of Laya multilingual in 51 of 51 languages · +2.6 points over Laya's typed checkpoint on typed decisions, trained on the same split (how to read that number).

[Try it in your browser →](https://huggingface.co/spaces/chaoliangUNSW/jev-style-v3)

Precisions and parity

PrecisionFolderWeightsActivations (runtime default)Same decision as the PyTorch FP32 reference
bf16 (default)`bf16/`1.50 GBfloat32240 of 240 parity rows, 6 of 6 prompts of about 16K and 25.6K tokens
8-bit (affine, group size 64)`8bit/`0.80 GBnative240 of 240 parity rows, 6 of 6 prompts of about 16K and 25.6K tokens
  • —Each folder holds model.safetensors with its config.json and tokenizer. The top level holds the shared runtime jev_style_decision_mlx.py, readout_config.json (fitted temperatures), release_config.json and the sha256 manifest.json. Converted with mlx 0.32.2 and mlx-lm 0.31.3.
  • —--precision bf16 (the default) or --precision 8bit picks the folder, and the runtime applies the validated activation setting of that build automatically.
  • —The 8-bit build makes the same calls at about half the size of the bf16 build (0.80 GB vs 1.50 GB).

<sub>Parity fixture: 240 mixed rows drawn from the training pool (22 categories, English and Chinese). These rows test agreement between formats, not accuracy.</sub>

Quick start

bash
pip install -U huggingface_hub
# both precisions (2.3 GB)
hf download chaoliangUNSW/Jev-Style-0.8B-Decision-v3-MLX --local-dir jev-v3-mlx
# or only one precision, e.g. 8-bit (about 0.8 GB): the shared top-level files, then the 8bit/ folder
#   hf download chaoliangUNSW/Jev-Style-0.8B-Decision-v3-MLX --exclude "*/*" --local-dir jev-v3-mlx
#   hf download chaoliangUNSW/Jev-Style-0.8B-Decision-v3-MLX --include "8bit/*" --local-dir jev-v3-mlx
cd jev-v3-mlx
pip install -r requirements.txt       # mlx, mlx-lm (qwen3_5 support), tokenizers, numpy

python jev_style_decision_mlx.py --precision 8bit \
  --state "The film was excellent." \
  --question "What is the sentiment of this review?" \
  --options '["negative", "positive"]' --category general_sentiment
python
from jev_style_decision_mlx import JevStyleDecisionMLX

m = JevStyleDecisionMLX(".", precision="bf16")   # or "8bit"; the validated activation dtype is picked automatically
r = m.decide(
    {"ticket": "I was charged twice for my subscription this month.", "customer_tier": "pro"},
    "Which team should handle this ticket?",
    options={"billing": "payments, invoices, refunds", "technical": "bugs and outages", "sales": "new purchases"},
    category="theme_routing",
)
print(r["answer"], r["probabilities"])
  • —The API matches the main repository's runtime: decide, decide_many, qtype="noul" / "score", --jsonl batch mode and --verify. --verify checks the shared files and the selected precision folder, so a download of one folder verifies on its own.
  • —The whole input may be up to 25,600 tokens, and the question, options and readout up to 2,048. Over-budget inputs raise an error, and nothing is truncated.
  • —MLX keeps freed buffers in a cache. The runtime caps it at 2 GiB by default (--cache-limit-gib).
  • —The input format, the readout and the temperatures are described on the main card.

<details> <summary><strong>Results</strong></summary>

  • —Ahead of Laya multilingual in 51 of 51 languages on MASSIVE intent: 71.7% vs 40.1% macro accuracy for the official Laya multilingual checkpoint, re-run by us on identical rows.
  • —Up to +30.3 points over the best official Laya checkpoint on five decision tasks, on identical rows: model routing +30.3, toxicity macro-F1 +29.5, 37 held-out MASSIVE locales +29.4, 77-way Banking77 +19.0 and jailbreak balanced accuracy +7.2.
  • —25,600-token inputs, with the preregistered 25K claim passed. At 24K tokens v3 answers 98.3% of the real items correctly, and the controls without the evidence stay at chance.
  • —79.2% on 2,000 typed decisions, +2.6 points over Laya's typed checkpoint trained on the same split (paired 95% CI +1.0 to +4.2) and +5.7 over the 2B v2. In-domain, so it measures agreement with the dataset's teacher labels; see reading the typed number.

[image]

[image]

[image]

[image]

<sub>MASSIVE: 100 test rows per language, 20 options each; v3 in-domain for 14 locales and held out for 37. Laya numbers: official checkpoints re-run by us on identical rows with their shipped temperatures and default token budgets; the best of the three is shown per task; every paired 95% CI excludes zero. Long context: suite longgridplus, preregistered, 320 items per length bin and 1,280 at 24K; v3 only, because longer rows exceed Laya's default budgets (512 / 1,024 tokens). Typed decisions: v3 and Laya typed both in-domain (same train split); the right panel splits the 2,000 decisions by how sure the teacher was. Protocol details are on the main card.</sub>

</details>

Licence

Apache-2.0. Built on Qwen/Qwen3.5-0.8B (Apache-2.0). Some training data has restrictive or unclear terms, and some training rows are outputs of OpenAI and Anthropic models. See "Training data and licences" on the main card. Not affiliated with TypeSafe AI, Jev, the Laya authors or the Qwen team.

Contact

I welcome internship, employment, and research collaboration opportunities. Please contact me at **yanchaoliang369@gmail.com**.

欢迎提供实习、工作及科研合作机会,请邮件联系:yanchaoliang369@gmail.com。