Skip to content

Repository files navigation

Bev

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.

Release Weights on Hugging Face Code license: MIT Weights license: Apache 2.0

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.

At a glance

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.

Quick start

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.sh

For 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.json

The 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.

How it works

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]
Loading

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.

Measured results

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.

Documentation

Scope and attribution

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.

About

Ternary decision scoring with Jevfire-style inference, typed APIs, and reproducible Persian evaluation.

Topics

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages