Verdin-4B (Victor Bennett, Qwen3.5-4B + merged LoRA r16 + pointer head)

Data: JevBench v1.6.40, published 2026-10-22

Capability 59.5 · Not ranked in the current release

latency 57.5× Jev (v1.5 reference)

Last measured: 2026-10-16 · measurement release: v1.6.27

Weights CC-BY-NC-4.0 (non-commercial; the repo's NOTICE and the model card state that part of the training mix - BeaverTails, the ANLI translations, RAGTruth's MS MARCO and Yelp-derived contexts - is non-commercial). Base model Qwen/Qwen3.5-4B Apache-2.0 (LICENSE.base). The author's Verdin engine, shipped in the same repo, Apache-2.0. LICENCE FLAG (NC): CC-BY-NC-4.0 (non-commercial) weights; listing a measured score is evaluation use.

Base model: undisclosed

intelligence

35.5

calibration

83.6

speed

45.9

cost

62.2

Composite (secondary)

21.8 · Composite rank #83

Cost and measurement conditions

$0.018 per 1,000 decisions (estimated)

ESTIMATE (*est.) through the frozen pricing_v15 path: base-model references unchanged since sha256 dcfcecb0...2835 (the later re-freezes only add or re-price hosted-API launch-list keys; this row was first priced with 3948e3f1...d0, the same reference). The base model Qwen/Qwen3.5-4B carries an EXACT base-model market reference in the frozen 25 Sep catalog - deepinfra:Qwen/Qwen3.5-4B (snapshot sha256 84eb7926acd4e93b71d695be24898e2ca999b20011d1b66cc0348ce7c6c3546f) - so resolve() returns rankable:true with a labelled ESTIMATE and no new pricing line is needed. The operator tariff is excluded by the 30-day rule, and the reference itself is flagged in the module as deprecated after the cut-off (replaced by Qwen/Qwen3.5-9B): re-score if it changes (I-3). Output tokens are a literal 0 for every item - the model generates no text at all, and the author's own server reports usage.output_tokens: 0 (the pjev-2b convention and the 9 Oct 2026 rule for native option-probability models) - so the output term is 0.0, not 0.15. Multiplied by this row's own measured input tokens (902,188 input tokens; cost per 1,000 decisions over the common 1,485-item basis). Free weights are never cost 100 and never cost 0. COMMON COST BASIS (v1.6.30): cost per 1,000 decisions is computed on the common 1,485 items of this draw, leaving out the 15 very long items (at least 76,358 input tokens as counted by the rows that answered them). They are the 15 items the Jev reference refused with max_tokens_exceeded, which the other rows that did not answer them refused or failed on; their tokens count for no row, whether the row refused or answered them, and a refused item still counts as a wrong answer for Intelligence. This row: USD 0.018226 per 1,000 decisions (0.282x the official cost cap USD 0.064595), against USD 0.018044 over all 1,500 items (v1.6.29).

Measured p50 latency: 17.662 s (on-CPU, no network, loopback; not directly comparable with API latency, which we time end to end from our measuring host, network included)

Ranking and cap use: 35.47 s (est. incl. network (2x + 150 ms))

Self-hosted model: measured p50 17.662 s on-CPU, no network (timed on our CPU host over loopback). Not directly comparable with API latency, which we time end to end from our measuring host, network included. The ranking and latency cap use the same estimate for every self-hosted row: 2 × measured + 150 ms = 35.47 s. Model authors can ask us to time a hosted endpoint instead (on request).

x2 + 0.15 s (assumption, not measured)

Sandy, the evaluator's own shared CPU host (AMD Ryzen 5 3600, 6 cores / 12 threads, Zen 2, AVX2, no AVX-512 and no AMX), NOT a dedicated machine: the 1-minute load average was logged every 60 s (measurement receipts on file) and is reported with the row (10.31-56.37 over the run). The AUTHOR'S OWN engine and server run UNMODIFIED - `python -m verdin.server --model <pinned dir> --host 127.0.0.1 --port 11528 --backend cpu --dtype fp32 --threads 10 --max-batch 1` - at their own defaults otherwise (prefix cache 4 / min 384 tokens, prefill chunk 2048, max sweep 4096 tokens / 256 rows, attn chunk 512 MB, torch-chunk gated-delta path (as executed; the config names branch-gdr recurrent), torch conv, SDPA auto), with the render settings, token caps (state 65,536 / branch 66,560 / packed 131,072 / schema block 512) and calibrated temperature 2.5198420997897464 read from the checkpoint's own verdin_config.json. Source-reviewed in full at the pinned revision before anything was executed (1,086 lines, no subprocess/eval/exec/os.system/socket in the serving path). DEVICE DEVIATION, DISCLOSED, AND THE ONLY ONE: the author's declared serving configuration is one RTX 5090 with CUDA bf16 (or Apple silicon via MLX); no GPU is admitted for this row, so it ran on this CPU in float32. That is the author's own documented path, not a port - --backend cpu is one of their three documented backends, their torch backend's own docstring says 'the same code on CPU with torch reference kernels', their install section says 'CPU is enough to run and to test', and their engine README records that 'the real checkpoint, served on the CPU, passed ... the JevBench typesafe adapter'. --dtype fp32 is their documented CPU precision ('fp32 for exact parity'), and it is the more faithful of the two choices to the trained model: the released weights were merged in fp32 and then cast to bf16, and the author's own conversion check reports bf16-vs-fp32 max |dp| 0.0023 with 0 argmax flips on its own check set (verdin_config.json conversion.checks); no direct parity test against the author's GPU deployment was run beyond the public-231 band. --max-batch 1 is their own bitwise-reproducible setting and the evaluator's one-request-at-a-time rule; their test measures batched-vs-single agreement at max |dp| 8.3e-08 on this CPU path. Driven by the UNCHANGED run_v15.py (sha256 a5a37181e52c421e4c6588c7b4a3d84f7458f42a18758face8be511f65e544a0) through the UNCHANGED jevbench.adapters.typesafe (sha256 780f879416479b645ee519bb85d0cce722d0df7aa2b41a029de92b76f2593e51) - nothing was written or patched for this vendor - inside a loopback-only network namespace whose cut was proven twice before dispatch (curl to huggingface.co and to 1.1.1.1 both fail), offline (HF_HUB_OFFLINE=1, TRANSFORMERS_OFFLINE=1, HF_DATASETS_OFFLINE=1, empty HF_HOME) and credential-free (every *KEY*/*TOKEN*/*SECRET*/*PAT*/*PASS*/*COOKIE* variable unset), MemoryMax=28G, MemorySwapMax=0, nice 5, with the reviewed fail-closed pressure guard armed on the exact unit. 15 of the 1,500 items are honest refusals, never silent truncations: their states render to 208,741-222,640 tokens, over the checkpoint's own 65,536-token state cap, and the author's renderer refuses them with HTTP 422 'too many tokens: state exceeds 65536 tokens: ...' before any compute - the same 15 items of this draw that uniphore-4b-decider (422), attest-31b (500), standard-one-3b-sh (422) and pjev-2b (422) also failed on. Predicted exactly, offline and before the run, in the pre-registration. Speed is a loaded-shared-CPU float32-on-AVX2 figure and a declared LOWER BOUND against the author's own single-client median of 75-95 ms per request on an RTX 5090: raw p50 18.18 s / p95 46.74 s wall over all answered items (the Speed axis uses the official latency subset, given in the row note), with the standard self-hosted x2 + 0.15 s adjustment applied on top. CROSS-CHECK the device choice does not explain away: on the 231 public MIT items this CPU float32 deployment scores 0.7922 over answered against the author's own declared 0.816 for JevBench public (measurement receipts on file). SITTINGS: the sealed 1,500 were measured over four supervised sittings (measurement receipts on file): 13:15:31Z-14:08:06Z 96 rows (stopped by the fail-closed pressure guard, reason watchdog_critical, after a neighbouring job loaded the box; stop verified), 14:18:06Z-14:35:07Z 0 rows (server did not become ready - no item dispatched), 14:45:07Z-15:11:38Z +36 rows (guard stop, watchdog_critical, verified), 15:21:38Z-23:24:13Z +1,368 rows to 1,500 (completed, no stop). Every sitting ran the identical command, flags, input, adapter and runner, and run_v15.py --resume skipped every task id already answered or refused, so no item was answered twice. Per-sitting guard traces are on file.

Published source