openjevx / README.md
muthuishere's picture
Card: v0.5.2 benchmarks; BGL operator-log regression named
5399cb8 verified
|
Raw History Blame Contribute Delete
8.02 kB
metadata
license: apache-2.0
base_model: convaiinnovations/laya
tags:
  - decision-model
  - onnx
  - classification
  - jevx

OpenJevX v0.5.2

A small, CPU-first decision model: yes/no, pick-one and 0–N rating questions about a state (JSON or text), answered on a laptop CPU. It is meant to run in a container next to your own services: one container, the model inside, your requests never leave your machine.

The model is a folder: openjevx.w8.onnx (8-bit weight-only, 598 MB; activations stay float, so answers don't depend on what else is in the request) + config.json (this model's own calibration temperatures) + tokenizer.json. The other files are the trainable checkpoint for fine-tuning further: model.safetensors, encoder/, tokenizer/, rl_agent_config.json. Older versions: git revisions v0.5.0 and v0.4.0.

Run it in a container (recommended)

git clone https://github.com/muthuishere/openjevx.git && cd openjevx
docker compose up -d --build          # server + model on http://127.0.0.1:21118

Then ask it:

curl -s http://127.0.0.1:21118/v1/systemone -d '{
  "state": {"age": 17},
  "questions": {
    "adult": {"type": "noul", "instructions": "Is this person an adult (18 or older)?"},
    "team":  {"type": "choice", "instructions": "Which team should handle this ticket?",
              "criteria": {"billing": "payments and charges", "engineering": "bugs and outages"}},
    "sev":   {"type": "score", "instructions": "How severe is this?", "criteria": ["low", "medium", "high"]}
  }}'

Each answer has probabilities and a confidence; noul gives P(true), choice the picked key, score the expected level. The container also serves a live dashboard on / and runnable examples on /recipes. Prefer a plain binary? macOS (Apple Silicon), Linux and Windows builds of the v0.5.2 server (ONNX Runtime 1.29) are on the release page. The server can also load this model folder straight from S3 (OPENJEVX_MODEL=s3://bucket/prefix/); see the GitHub README.

Or in Python

Same answers as the server (a port of its prompt layout, markers, input length, temperature and softmax). Checked against the server on the same model: probabilities agree to within about 0.005; the rest is ONNX Runtime versions rounding differently.

pip install onnxruntime tokenizers huggingface_hub
from huggingface_hub import hf_hub_download
import importlib.util

path = hf_hub_download("muthuishere/openjevx", "openjevx.py")
spec = importlib.util.spec_from_file_location("openjevx", path); openjevx = importlib.util.module_from_spec(spec)
spec.loader.exec_module(openjevx)

jev = openjevx.OpenJevX()   # downloads openjevx.w8.onnx + tokenizer.json + config.json once
print(jev.decide({"age": 17}, {
    "adult": {"type": "noul", "instructions": "Is this person an adult (18 or older)?"},
}))
# {'answers': {'adult': {'type': 'noul', 'noul': 0.08, ...}}}  (about 0.08)

openjevx.py is a single file (also in the GitHub repo under python/); copy it into your project if you prefer. Request and answer shapes match POST /v1/systemone.

Release gate

The model folder on the Go server, on CPU. The gate sets share no state with training. "Right and confident" = right AND past jevx's default thresholds (yes >= 0.8, no <= 0.2, choice/score >= 0.6). Limits for the basics gates: right and confident >= 90%, confidently wrong <= 2%.

Gate set Accuracy Right and confident Confidently wrong
Everyday basics (463) 99.1% 98.7% 0.9%
Rule-checking basics (300) 100% 100% 0.0%
Held-out rule-checking (11,949) 98.9% 98.8% 1.0%
Held-out software-work roles (9,159) 98.5% 97.8% 1.0%
Logs gate (900) 92.0% 91.9% 7.8%

The 13 fundamentals through the jevx CLI with default thresholds: 13/13.

Known misses: on log triage it is confidently wrong 7.8% of the time, and on real public incident postmortems (102 questions) 20.6%. On BGL supercomputer operator-log alerts (214, real labels) it is confidently wrong 35.0%: it often answers no to RAS KERNEL FATAL lines. For that kind of log, use git revision v0.5.0 (21.0% there). Check those answers.

Benchmarks

Same server, CPU, jevx default thresholds. Full sets where n < 300, otherwise a fixed 300-row sample.

Set Kind n Accuracy Right and confident Confidently wrong
Dan Luu public postmortems external, real labels 102 68.6% 62.7% 20.6%
bigvul (CVE fixes) external, held out 201 45.8% 0.0% 0.0%
Defect detection external, held out 300 64.0% 20.3% 4.3%
Code search external, held out 300 94.0% 90.0% 4.0%
ms_marco relevance external, held out 300 72.3% 32.0% 6.7%
HDFS operator logs external, held out 118 68.6% 18.6% 0.0%
BGL operator logs external, held out 214 64.5% 64.5% 35.0%
Application/database/frontend logs in-distribution 1,224 95.3% 95.3% 4.5%

It is not a general reasoner: on code and retrieval sets it is mostly unsure, so it rarely misleads there but rarely helps.

Latency (v0.5.1 server, ONNX Runtime 1.29, CPU only, Apple M5 Pro, p50 end to end): 22 ms for a short request (36 tokens), 85 ms for a typical one (164 tokens), 540 ms for a long one (912 tokens). Inputs are cut at 512 tokens (max_len in config.json, the length this model was trained at). Cold start is about 1 s once per process. ONNX Runtime 1.29 or newer is needed for this speed: it keeps the 8-bit weights 8-bit (MatMulNBits); in Python, pip install -U onnxruntime.

What v0.5.2 was trained on

791,889 decisions (465,583 rows). Labels come from evaluating rules or from real outcomes, never from another model's guesses.

Area Decisions Share
Rule-checking across 38 business domains (retail pricing, recruiting, real estate, CI/CD, insurance claims, pharmacy stock, HR payroll, gaming, ...) 200,155 25.3%
Software-work roles (developers, testers, tech leads, managers, operations, everyone, agent checks) 183,543 23.2%
tasksource decision corpus 146,567 18.5%
Public sets with real labels (CVE fixes from bigvul, defect detection, code search, ms_marco relevance, HDFS and BGL operator log alerts) 104,990 13.3%
Rule-reading drills: everyday rules with many thresholds, decimals, dates over 2020-2035, quarter-hour meetings, opening hours, missing/equal/contains checks 75,321 9.5%
Log triage: application (Java/Python/Node/Go/nginx), database (Postgres/MySQL, real SQLSTATE codes), frontend (browser/Sentry) 60,001 7.6%
Everyday basics (driving licence age, store hours, parcel late, discount thresholds, fever, bag weight, ...) 12,162 1.5%
Public typed-decisions 9,150 1.2%

Run: one RTX 4090 on Vast.ai, 791,239 decisions after packaging, one full pass in 2.5 h at ~87 items/s, about $1.25. Leakage-checked (22,576 test questions removed); every row checked against the trainer before renting.

Using it with jevx

jevx caches answers by model name. After upgrading, run jevx cache clear, or use a versioned model name in your profile (for example --model openjevx-v0.5.2).

Fine-tune further

The whole pipeline (data generators, leakage check, one-job GPU training that returns the 8-bit ONNX, and the release gate) is in the GitHub repo under finetuning/. No training data is published.

The trainable checkpoint is also available as one archive: openjevx-finetune-v0.5.2.tar.gz.