Skip to content

Exporting Decision Models: GGUF, ONNX, and Device Runtimes

Taking a decision checkpoint out of Python: what the GGUF and browser WebGPU exports preserve, what they change, and the parity evidence the model cards publish.

Published
Category
Jev Tools & CLIs
Resources cited
10
Reading time
3 min
Tags#open-models#local#onnx#gguf

An exported checkpoint is a promise that the model still answers the same way outside the Python stack it was trained in. The open decision ecosystem has settled on three export targets — GGUF, ONNX, and device runtimes like CoreML and MLX — and each one trades something different for portability.

GGUF and llama.cpp

Jev-Style v3 is the best-documented case. Its Q4_K_M file is 0.53 GB, and the card reports it decision-identical to PyTorch FP32 on 240 of 240 parity rows plus 6 of 6 long prompts. The catch is that decisions do not come from llama.cpp's own server: the project builds a one-time jev-score binary against a pinned llama.cpp commit, and plain chat completion will not produce typed answers.

Drex follows the same route at 8B with a Q8_0 GGUF and its own llama.cpp and Ollama forks, plus a platform quirk worth knowing: on Apple Silicon the Metal tensor path has to stay disabled for long inputs.

ONNX and WebGPU

Julia 1's ONNX export puts a 551 MB decision model in the browser. The package is an ONNX graph, a Rust WebAssembly tokenizer, and a JavaScript API; after a 5.84-second load and warmup, 100 decisions ran in a median 7.55 seconds on the WebGPU path — about 75 ms each — with all 100 predictions matching the original Julia 1 and a maximum logit difference of 0.00225.

That is an output-parity test, not a rerun of the accuracy suite, and the card says so. Near-tied logits can still flip under floating-point rounding, so verify exports against the artifact you actually ship.

Apple and device runtimes

The catalog's Apple-side projects take the same idea further down: Laya-MLX and Laya-CoreML put the 421M encoder on Apple silicon, and PocketJev reads A/B/C logits on an iPhone for 2 to 26 choices. OpenDecider Nano ships an ONNX build that runs in a browser tab at 47 ms per question, and its card also links a native MLX-adjacent path for Macs. On the smallest end, Archai Zagreus is a 465 MB Q8_0 GGUF aimed at sub-10 ms CPU inference.

TargetArtifactParity evidenceWatch for
GGUF0.53 GB Q4_K_M240/240 rows vs FP32custom scorer binary, pinned commit
ONNX / WebGPU551 MB graph + WASM tokenizer100/100 predictions, ≤0.00225 logit diffWebGPU availability, near-ties
MLX / CoreMLplatform-specific weightsproject-local checksseparate runtime, model reloads

What survives an export

Three things travel reliably: the interface, the answer space, and the option-order invariance of architectures that read options in parallel, like bev-decider, whose card measured 960 shuffles with no probability moving more than 1e-5.

Three things need re-verification. Full softmax probabilities survive rounding only within near-ties; bf16 serving in vLLM changed JEV-9B's decisions in the third decimal depending on batching; and runtime configuration, like strict encoding or context limits, can reject an input the original stack would have truncated.

What changes in operations

An export usually removes a server. The browser build has no endpoint, no key, and no per-call billing; the GGUF runs wherever llama.cpp runs. What it adds is statefulness — keep the model loaded between requests, budget memory for the full weight file, and treat the pinned runtime commit as part of the artifact. For which model to export in the first place, see choosing an open decision model.

From the Jev directory

The resources behind this article.

GGUF builds of the Jev-Style v3 decision model on Qwen3.5-0.8B: a 0.53 GB Q4_K_M file the card says is decision-identical to FP32 on 240/240 parity rows, served through a pinned llama.cpp scorer.
Jev Models & Reimplementations#community#open-models#local
Community
A browser WebGPU export of Julia 1: the same 551 MB decision checkpoint, a Rust WASM tokenizer, and a JavaScript API that answers typed questions client-side with no server or key.
Jev Models & Reimplementations#community#open-models#local
Community
An ultra-light Italian decision model: 400M Llama-based, a 465 MB Q8_0 GGUF, answering multiple choice with A–D tokens and booleans with TRUE/FALSE for edge and Rust use.
Jev Models & Reimplementations#community#open-models#local
Community
A 400M-parameter Jev-compatible decision model with a browser build: 0.796 on typed decisions against Laya's 0.766, 17 ms per question on an L40S, and an ONNX file that runs in a tab.
Jev Models & Reimplementations#community#open-models#local
Community
The 9B member of AutoTrust's Jev students: a 40.2M-parameter decision block on Qwen3.5-9B with 0.019 mean KL to Jev 1.13 and 70.7% HumanEval left untouched, small enough for one modest GPU.
Jev Models & Reimplementations#community#open-models#local
Community
Nace.AI's 8B decision model on NVIDIA's Efficient-DLM diffusion backbone: a 256-dim pointer head scores every option in one pass, behind the same POST /v1/systemone API as its hosted service.
Jev Models & Reimplementations#community#open-models#local
Community
A 0.4B Jev-compatible decision model with measured order invariance: 960 random option shuffles moved no probability by more than 1e-5, and bev-decider serve exposes /v1/systemone.
Jev Models & Reimplementations#community#open-models#local
Community
6.9kGitHub stars
A native MLX runtime for Laya's open typed-decision weights: short decisions on Apple Silicon, with no generated tokens, PyTorch, or cloud API.
Jev Models & Reimplementations#community#python#open-models
1.6kGitHub stars
Laya typed decisions through Apple Core ML and the Neural Engine, with the author's speed and energy benchmarks for short decisions on an M3 Max.
Jev Models & Reimplementations#community#python#open-models
1GitHub stars
An experimental iOS app that turns an on-device Qwen3-VL model into a multiple-choice decision tool: it reads next-token logits for A/B/C and scores 2-26 supplied options without generating any text.
Jev Cookbooks#community#swift#ios
Back to all articles

More Jev articles

Most Jev accuracy problems are state problems. What belongs in a state, what is a pre-made judgment to leave out, and why naming the slice you ask about matters more than the wording.
Jev Practices & Patterns#state#design#primitives
Read article
A Noul returns one number and no separate confidence. How to read the value, pin its boundary with criteria, split compound questions, and set a per-action threshold that matches the cost of being wrong.
Jev Practices & Patterns#noul#primitives#confidence
Read article

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai