alt.freeweights.vision / pplx-decider-v1.1-27b-4bit
From: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.visionSubject:

pplx-decider-v1.1-27b-4bit

Date: 2026-11-15Commit: 66383f2Signed: 2DC28CC7B26A283B ✓

Text classification model with 26.1B parameters. Safetensors weights, 15.4 GB in all. Published by mlx-community under Apache-2.0.

26.1B params15.4GBpplx-decider-v1.1-27b-4bitsafetensorspermissive
FactsParams26.1BSize15.4 GBFormatssafetensorsTasktext classificationLicenseApache-2.0From sourcepermissive
$ fw get mlx-community/pplx-decider-v1.1-27b-4bit
# manifest sha256 11d3b18b5718… · 15.4 GB · 17 files
$ fw verify ./pplx-decider-v1.1-27b-4bit mlx-community/pplx-decider-v1.1-27b-4bit
From sourceHosted (signed)mlx-community/pplx-decider-v1.1-27b-4bitLast check: 2026-11-15 05:14 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of pplx-decider-v1.1-27b.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
15.4 GB
Weights
15.3 GB (safetensors)
Parameters
26.1B
Formats
safetensors
Task
text classification
License
Apache-2.0 (permissive)
Files
17, each with a sha256
Publisher
mlx-community
Added
2026-11-15
Section
alt.freeweights.vision
Lineage

Original release from the publisher.

Base model: perplexity-ai/pplx-decider-v1.1-27b

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 05:14 UTCpassed

Model card

From the publisher at commit 66383f2. Shown as plain text with links; images open at the publisher.

mlx-community/pplx-decider-v1.1-27b-4bit#

An MLX 4-bit conversion of perplexity-ai/pplx-decider-v1.1-27b, for Apple Silicon. It includes a standalone inference script and a llama.cpp-compatible /v1/systemone server.

This is a classifier, not a chat model. Give it a state (text, JSON, chat messages and/or up to 8 images) and a question. One forward pass returns calibrated probabilities over the answer options. There is no generation step.

Question typeCriteriaAnswer
choice{"label": "description", ...}, 1-255 optionschoice, probabilities, confidence
score["lowest level", ..., "highest level"], 2-10 levelsscore (expected level), probabilities, legend, confidence
nouloptional {"true": "...", "false": "..."}noul = P(true)

Why it needs the included code#

mlx_lm.load / mlx_vlm.load will not give correct results with this checkpoint:

  • The 16 full-attention layers are noncausal: every token sees the whole prompt, and only padding is masked. The 48 Gated DeltaNet layers stay causal. Running with a causal mask still picks the same top answer most of the time, but the probabilities are clearly wrong (mean KL 0.038 vs 0.0014).
  • The output is a 255-row decision readout (stored as language_model.lm_head), not a vocabulary head. It reads only the last token, uses calibration temperature 1.00874, and masks options past the question's count.

decider_mlx.py implements all of this. The prompt format and answer logic are copied from the official autojev/model.py.

Quick start#

Requires an Apple Silicon Mac with at least 24 GB of memory (the model uses about 16 GB at runtime), and Python 3.12+.

hf download mlx-community/pplx-decider-v1.1-27b-4bit --local-dir pplx-decider-4bit
cd pplx-decider-4bit
pip install -r requirements.txt     # mlx, mlx-vlm, transformers, pillow (no torch needed)
from decider_mlx import Decider

model = Decider.from_pretrained(".")   # or "mlx-community/pplx-decider-v1.1-27b-4bit"
answers = model.decide(
    "Customer message: I was charged twice for my order last week.",
    {
        "route":   {"type": "choice", "instructions": "Which team should handle this?",
                    "criteria": {"billing": "payments, refunds", "shipping": "delivery", "technical": "bugs, login"}},
        "angry":   {"type": "noul",   "instructions": "Is the customer angry?"},
        "urgency": {"type": "score",  "instructions": "How urgent is this?",
                    "criteria": ["can wait", "this week", "today", "right now"]},
    },
    images=None,  # optional: file paths, data:image/... URLs or PIL images
)
print(answers["route"]["choice"], answers["angry"]["noul"], answers["urgency"]["score"])

For raw probabilities on many rows, use model.predict([{"state": ..., "question": ..., "images": [...]}, ...]). It groups rows of similar length into padded batches.

CLI:

python decider_mlx.py --model . --state "Win a FREE iPhone, click now!!!" \
  --question '{"type": "noul", "instructions": "Is this spam?"}'

Server#

python server.py --model . --port 8092    # loads in ~10 s
curl localhost:8092/v1/systemone -H 'Content-Type: application/json' -d '{
  "state": "Customer message: I was charged twice for my order last week.",
  "questions": {
    "route":   {"type": "choice", "instructions": "Which team should handle this?",
                "criteria": {"billing": "payments, refunds", "shipping": "delivery", "technical": "bugs, login"}},
    "angry":   {"type": "noul",   "instructions": "Is the customer angry?"},
    "urgency": {"type": "score",  "instructions": "How urgent is this?", "criteria": ["can wait", "this week", "today", "right now"]}
  }}'

The request and response use the same format as llama.cpp's llama-server /v1/systemone:

  • state: a string, JSON, or chat messages with image_url parts
  • questions
  • images: data URLs, up to 8

The response has answers and usage. Also available: GET /v1/models, /health and /stats. Set DECIDER_API_KEY to require a bearer token.

The server runs MLX on a single GPU worker. Concurrent requests are batched together by similar length. Each question is its own sequence: noncausal attention means questions about the same state can't share a prompt prefix.

Accuracy#

Compared with the official PyTorch implementation (bf16), on 33 test rows covering choice/score/noul, 2-255 options, 100-7k tokens and images:

argmax agreemean KLmax abs Δp
this model (single row)33/330.00140.029
this model (batched, padded)33/330.00140.025
control: reference run with causal attention (the wrong mode)33/330.0380.27

Speed#

Measured on an Apple M5 Max (128 GB) in High Power mode, over HTTP, sustained:

Workloaddecisions/s
~100-token decisions, 32 concurrent clients6.5
mixed 100-1.8k tokens + images (avg ~360), 16 clients1.8

That's 1.4-1.6x faster than llama.cpp Q8_0/Q4_K_M on the same machine. Speed depends on prefill, which is compute-bound: about 975 tok/s with a cool GPU, about 730 tok/s sustained. Tips:

  • Use High Power mode: sudo pmset -a powermode 2. On our machine it roughly doubled the speed.
  • Batch rows of similar length. Padding is the main waste, and small batches run as efficiently as large ones.
  • The default input limit is 8192 tokens per decision (Decider(..., max_tokens=...)). Prompts can't be split into chunks, because each full-attention layer needs every key at once.

Conversion details#

  • Source: perplexity-ai/pplx-decider-v1.1-27b @ 3b45dead, with the Qwen3_5Model backbone mapped to the mlx_vlm.models.qwen3_5 layout and the readout (readout.safetensors, [255, 5120]) stored as language_model.lm_head.
  • Quantization: affine, 4 bits, group size 64, applied to the language backbone. The vision tower and the readout stay in bf16. Total size 15.3 GB.
  • Tested with mlx 0.32.3, mlx-vlm 0.7.6, transformers 5.19.0 (see requirements.txt).

License and credits#

Apache-2.0, the same license as the original model. See LICENSE and NOTICE. All credit for the model goes to Perplexity (original model card). It is built on Qwen3.8-27B, and much of its training data comes from tasksource:

@inproceedings{sileo-2024-tasksource,
    title = "tasksource: A Large Collection of {NLP} tasks with a Structured Dataset Preprocessing Framework",
    author = "Sileo, Damien",
    booktitle = "Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024)",
    year = "2024",
    url = "https://aclanthology.org/2024.lrec-main.1361",
    pages = "15655--15684",
}

Files

17 files · 15.4 GBWeights 15.3 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 17 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE11.5 KBbbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a
NOTICE1.20 KBec6f3d4acc9bc041ed6dd2bf28ebce04be22e971e864f01deee56592cbfe92ee
README.md7.33 KB22803744f1cef5773dee44e5bb044f4c9a6e88090b04661349a596661dbdf9a9
chat_template.jinja8.95 KBc3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
config.json3.83 KB42b69f35566ba49569cb6472b8a01bd94f8029c49f71ec173ab8a0e4e0df27c9
decider_mlx.py14.3 KB6b3f05e0515743442a8489508b8ef147cbef03a89a0bc180f099bc5917438688
decision_config.json6.71 KB68d4a4c704a0c42837f749b0287bd80f70d186ed3be4dc6a90802e78223925e8
model-00001-of-00003.safetensors5.34 GBfe75eb40532469a5bf2e6ef3facb51b63191d6d520efc07aec0a82102b110ecf
model-00002-of-00003.safetensors5.35 GBfc274d02fd09dc4fa38c80afafe002fcec76ec0960d902c51e9761b2bac4dd64
model-00003-of-00003.safetensors4.65 GBc48129b4d4bc0407931928c6bb75dd723af61a80933deccc7fbe2a12636ed83f
model.safetensors.index.json209 KBd88ccc30213aaf85097ba27fbf7c8a30d9da2d03c7d8b544e2f1adb20823cf80
processor_config.json1.22 KBabb488b9a03a53407dc9c8e43c0a2caec9142e5fc7a1203807fdf54b2149cc8f
requirements.txt150 B520e6907f3942fb07a69863c7ea69afc4e849816ab7df85ef2abb1fc83a2b970
server.py12.5 KB258f06d567eb3dc11bcdd6ca2c32950741a8e8b86859626cc04562f9f7f8a804
tokenizer.json20.0 MB6f32ce20dc35f57a7f9ad1eac03525bd7d30f9df8cea6507e958279cc3657706
tokenizer_config.json1.17 KB09564f0b57b433b55d536630be3044b4183dbe04d0cbc7b1e9b1154db3671b0b
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
66383f28b3 pinned now2026-11-15 05:14 UTC17 files · 15.4 GB

Use it

$ fw get mlx-community/pplx-decider-v1.1-27b-4bit
# manifest sha256 11d3b18b5718… · 15.4 GB · 17 files
$ fw verify ./pplx-decider-v1.1-27b-4bit mlx-community/pplx-decider-v1.1-27b-4bit
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/mlx-community/pplx-decider-v1.1-27b-4bit.json --dir ./pplx-decider-v1.1-27b-4bit $ python3 fw.py verify ./pplx-decider-v1.1-27b-4bit ./mlx-community__pplx-decider-v1.1-27b-4bit.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mlx-community/pplx-decider-v1.1-27b-4bit --revision 66383f28b37637658b02b8e82b1029598b138642 --local-dir ./pplx-decider-v1.1-27b-4bit

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.visionSubject: pplx-decider-v1.1-27b-4bitDate: 2026-11-15Commit: 66383f2Signed: 2DC28CC7B26A283B ✓
Upstream
mlx-community/pplx-decider-v1.1-27b-4bit
Pinned commit
66383f28b37637658b02b8e82b1029598b138642
Manifest
pplx-decider-v1.1-27b-4bit.json · .minisig
Manifest sha256
11d3b18b5718124d3c0be4c1240c1e6f6a9cebf08d36eb9196426f41cd443372
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 05:14 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/mlx-community/pplx-decider-v1.1-27b-4bit.json $ curl -O https://freeweights.allternit.com/manifests/mlx-community/pplx-decider-v1.1-27b-4bit.json.minisig $ minisign -Vm pplx-decider-v1.1-27b-4bit.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

perplexity-ai/pplx-decider-v1.1-27b · this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mlx-community/pplx-decider-v1.1-27b-4bit
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. pplx-decider-v1.1-27b-4bit.json. Provenance. Takedown history: none.
From: dima806 <huggingface.co/dima806>Subject: ai_vs_real_image_detection
From: legekka <huggingface.co/legekka>Subject: AI-Anime-Image-Detector-ViT
From: onnx-community <huggingface.co/onnx-community>Subject: AI-Anime-Image-Detector-ViT-ONNX
From: AICodexLab <huggingface.co/AICodexLab>Subject: answerdotai-ModernBERT-base-ai-detector
From: onnx-community <huggingface.co/onnx-community>Subject: answerdotai-ModernBERT-base-ai-detector-ONNX
From: onnx-community <huggingface.co/onnx-community>Subject: bart-large-cnn-ONNX