7.21 GB model file · 7.28 GiB measured CPU RAM · 8.18 GiB observed Mac Metal process RSS · 8.30 GiB observed NVIDIA VRAM.
Bev runs Jevfire-style decision scoring on Prism ML's Ternary-Bonsai-2-27B. Give it context and a finite set of choices; it scores every candidate, selects an answer, and returns structured JSON through a local HTTP API.
Bev is an inference package, not a newly trained model. The 7.21 GB GGUF is the original Prism file, redistributed byte-for-byte with its license and attribution. Bev adds the serving integration, selected-token scoring extension, typed API, and evaluation tools. No training, LoRA, or additional quantization was performed.
| Capability | Details |
|---|---|
| Decision types | Boolean, enum, Choice, Noul (P(true)), and ordered Score |
| Options | 2–255 candidates per field, validated with the loaded tokenizer |
| Method | One next-token scoring step per field; JSON assembled by the API |
| Model file | 7,206,168,928 bytes, PQ2_0 ternary weights |
| Measured system RAM | 7,630,416 KiB peak resident (7.28 GiB) during one CPU-only inference on Stallion, one 4,096-token slot; 7.12 GiB loaded idle |
| Measured Mac Metal memory | Up to 8,580,912 KiB process RSS (8.18 GiB) sampled during 14/14 API checks on an Apple M2 with 24 GiB unified memory; total device pressure was not measured |
| Measured GPU memory | 8,504 MiB (8.30 GiB) for the original Linux CUDA serving process, two 16,384-token slots; observed snapshot, not a peak |
| Available paths | Linux NVIDIA/CUDA validated; macOS Apple Silicon/Metal validated with 14/14 API checks; Linux CPU inference checked; Windows CPU source-build path untested |
| Persian benchmark | 95.42% Choice · 95.00% Noul · 87.50% Score |
For CPU-only use, start with 16 GB of system RAM; 8 GB is unverified and likely too tight. CPU RAM includes memory-mapped model pages and varies with context length and concurrent requests. Apple Silicon uses unified memory, so CPU RAM and Metal allocations are not additive like separate host RAM and discrete VRAM. The published Persian benchmark used the Linux CUDA path with two 16,384-token slots; the portable launcher defaults to one 4,096-token slot to reduce memory. See memory and platform details and benchmark conditions.
On the validated Linux NVIDIA host with the prerequisites:
git clone --branch v0.1.2 https://github.com/Reza2kn/Bev.git
cd Bev
bash scripts/install.sh
bash scripts/start-services.shFor macOS Apple Silicon (Metal) or Windows/Linux CPU, use the portable source installer: python3 scripts/install-portable.py (Windows: py -3 scripts/install-portable.py), then run scripts/serve.py with the installed Python. The portable path builds the same pinned Prism source and Bev scoring patch. The original Linux CUDA installer verifies the pinned model and runtime downloads, builds the small native extension, and installs the Python API. The API listens on 127.0.0.1:18781; interactive documentation is at localhost:18781/docs.
curl --fail-with-body http://127.0.0.1:18781/v1/decisions \
-H 'Content-Type: application/json' \
--data-binary @examples/support-request.jsonThe example asks for a support queue. Its parsed_json result is:
{"route": "billing"}The full response also includes candidate probabilities, raw log probabilities, token IDs, and timing. API documentation covers Python usage, all three SystemOne primitives, validation, and errors. To stop the managed services, run bash scripts/stop-services.sh.
The default runtime directory is ${XDG_DATA_HOME:-$HOME/.local/share}/bev; set BEV_ROOT to choose another location. Weights are also available from Hugging Face. This release requires the pinned Prism fork of llama.cpp; a generic GGUF loader is not sufficient.
flowchart LR
A[Context and field definitions] --> B[Model chat template]
B --> C[Ternary model: next-token scores]
C --> D[Normalize over allowed candidates]
D --> E[Typed JSON answer]
Bev maps each allowed answer to a distinct single-token label, preserving the original option identities and descriptions. The native scoring patch exposes requested raw log probabilities normalized over the full vocabulary. Python then normalizes those scores over the candidates and constructs the result.
Choice returns the winning option. Noul returns the probability assigned to true. Score returns the probability-weighted position in the ordered rubric. Fields are evaluated independently; related decisions need a combined enum or explicit sequential requests. See architecture and guarantees.
The full Jev Persian Benchmark used its original dataset, batches and scorer. All 624/624 answers were valid across 106/106 completed requests, with no model mismatches.
| Main test | Bev (v0.1.1 evaluation) | Published Jev 1.13.0 |
|---|---|---|
| Choice: exact option | 229/240 · 95.42% | 239/240 · 99.58% |
| Noul: yes/no | 152/160 · 95.00% | 159/160 · 99.38% |
| Score: within ±0.5 levels | 70/80 · 87.50% | 76/80 · 95.00% |
Jev values are the benchmark author's published reference, not a new Jev run. Bev's median request latency was 2.136 seconds, with six questions in main/repeat batches. This is not a matched-hardware speed comparison.
An earlier general diagnostic had weaker results on some tasks, including 7/12 MMLU and 2/10 SimpleBench. The complete evaluation report includes both runs, category results, numerical errors, provenance, and limitations. The Persian dataset is synthetic; these figures do not establish general reliability or Jev parity.
- Install and operate: dependencies, configuration, start/stop, and troubleshooting.
- API reference: requests, responses, primitives, and SDK compatibility.
- Architecture: scoring, runtime patch, capacity, and failure behavior.
- Benchmarks: full measurements and comparison boundaries.
- Reproduce the Persian evaluation: frozen data, native scorer, and source attestation.
- Model and runtime manifest: revisions, sizes, and SHA-256 values.
- Release notes and third-party notices.
Candidate probabilities are relative preferences, not calibrated confidence in correctness. One-token scoring can miss tasks requiring multi-step reasoning; it can also be confidently wrong. min_probability is an optional abstention heuristic, not a reliability guarantee. The API binds to loopback by default and has no built-in public authentication.
Jevfire supplies the decision-scoring method and prompt; Prism ML supplies the ternary model and runtime; Qwen supplies the base model. The benchmark authors supply the evaluation protocols. Bev's integration and documentation were developed with OpenAI Codex assistance. Code is MIT; model weights remain Apache-2.0. See complete attribution. This is an independent project.