Venn 1 model card#
Status: research preview. The venn-1 head is published on Hugging Face at
markrussinovich/venn-1; pin revision
e618a6919e5a15c6ced46c9874424363c2955283. Venn is an embedding-native
decision layer that answers typed questions (choice, yes/no, score) over cached
embeddings and accepts the Decisions API request format of
Jev, TypeSafe's hosted decision model,
with its own weights and runtime.
| Property | Value |
|---|---|
| Profile | venn-1 |
| Reader | google/embeddinggemma-2 |
| Reader revision | f9972ac22e696a105c482202646979e33e4b5a1e |
| Vector protocol | 768-dimensional normalized text embeddings; Classification prompt |
| Generic head | CosineAbstention, approximately 787K parameters, 3.15 MB FP32 |
| Text-only reader | Approximately 270M parameters; about 540 MB at 16-bit, 1.08 GB in the CPU float32 path |
| Head SHA-256 | 03c62c7fbc5f5d6b49e171084c9b64291a1201b4cf967b5abbc9ebcfa3137aa9 |
| Local specialization | Residual or linear Choice families, numeric ridge/kernel families, and compiled outcome heads |
| Code license | MIT |
| Head redistribution | Permitted; see redistribution |
Intended use#
Research into typed decisions over compatible cached embeddings: conditional choice, abstention, task-specific scoring and vector-store workflows. Validate the actual task, label distribution and abstention policy before application use. The reader is frozen; profile changes require new embeddings and registrations. Google reports about 191 MB active RAM for quantized text-only weights on Pixel 11 Pro in its announcement. Venn's current PyTorch reader uses the precision settings listed above; see deployment footprints. The outcome API can use other tagged readers; the published generic head is tied to this profile. See changing the reader.
Redistribution#
Redistribution of the published venn-1 head weights is permitted, as confirmed
by the project owner on November 7, 2026. This permission covers the decision
head; the embedding reader and source datasets retain their own terms. The
project's source code is MIT-licensed.
The Hub model card
records the actual permission; redistribution permission alone is not a
statement of additional use or modification rights.
Use the model#
Follow the Python 3.12 environment setup in the source repository's installation instructions. From that checkout, install the reader extra and start the local Decisions API:
python -m pip install '.[embedding]'
venn download-model
venn download-embedder
venn serve
The head is downloaded from this Hub repository at the immutable revision
pinned in the runtime and verified against the checksums above. The frozen
EmbeddingGemma 2 reader is a separate download, not part of this head bundle.
Send the first text decision or use the
Python example. For a download-free CPU smoke test,
run venn quickstart; that example uses authored vectors, not this trained head.
Training and availability#
Behavior comes from the generic head, registered families or recorded outcomes. The reader stays frozen. Outcome lookup changes the application-owned store; compiling that store fits a head that can answer without a lookup.
Generic head#
The generic head was trained on CLINC, MASSIVE, Banking77, DBpedia, Yahoo Answers and AG News. Consider this exposure when selecting held-out evaluation tasks. The public edition includes the runtime and local family-fitting code; the generic-head training pipeline is not public. See licenses for source attributions and the head's redistribution permission.
Training froze the reader and used cosine option logits. The abstention MLP was fitted by cross-entropy over K+1 choices, including none, with seed 42 for 20 epochs using AdamW (learning rate 0.001, weight decay 0.01), bf16 autocast and gradient clipping at 1. Choice and abstention temperatures were fitted separately on calibration episodes. TREC, GoEmotions and CLINC out-of-scope examples were held out from head fitting and calibration.
That run reached abstention AUROC 0.929 but missed its unseen-task calibration targets (TREC ECE 0.1215, GoEmotions ECE 0.1131), so its probabilities are not universally calibrated.
The downloaded head is checked for integrity and profile compatibility against the hashes above. Checksums establish artifact identity, not semantic quality.
Local family fitting#
Families fit custom predictors on your examples. The reader stays frozen. The family example demonstrates residual Choice fitting; the wine example demonstrates numeric predictors and the audio example fits a linear classifier.
For residual Choice families, the generic head stays frozen. Below 1,000 examples, option residuals use a rank-16 bilinear scorer; otherwise they use a hidden-64 MLP over state/option/question interactions. A separate hidden-64 network adds an abstention residual. Registered field families learn question-conditioned field attention.
| Default | Value / boundary |
|---|---|
| Partitions | Every example trains by default; an optional caller split gives train, selection and report slices |
| Duplicate grouping | Optional group_id keeps related examples in one cross-validation fold and one slice |
| Minimum | Five distinct examples per label, ten overall; not certification |
| Optimizer | AdamW, learning rate 0.001, weight decay chosen from 0.001 / 0.01 / 0.1, batch 128; optional class weighting |
| Duration | Epochs (at most 24) chosen by 5-fold cross-validation; each fold stops after four non-improving epochs |
| Episodes | Variable feasible K, default 30% none when at least three labels exist |
| Calibration flag | At least 500 report items and bootstrap ECE upper bound <=0.05 |
Temperature is fitted on out-of-fold logits, or on the selection slice when the caller gives one; a report slice is never used to select weights, settings or temperature, and without one the family is not marked calibrated. Report uncertainty is conditional on that family and finite examples, not evidence of generalization to new tasks. Serving fits synchronously on CPU and persists the registration, not a modified generic checkpoint.
A linear family (form="linear") is a multinomial logistic regression on the
state vectors. It has no residual over the generic head and no abstention.
| Default | Value / boundary |
|---|---|
| Objective | 0.5‖W‖² + C · Σ wᵢ · cross-entropyᵢ, unpenalised intercept, float64 L-BFGS (scikit-learn's objective) |
| Penalty | C from 0.01 / 0.1 / 1 / 10 / 100 by 5-fold cross-validated log loss, grouped by group_id when given |
| Temperature | Fitted on out-of-fold logits, or on the selection slice when the caller gives one |
| States | Single vectors only |
| "none" | Never wins; its probability is 0 |
| Persistence | W and b in an .npz beside the family's JSON |
Numeric families#
objective="regress" fits ridge or RBF kernel ridge and returns a numeric
Score with an 80% prediction interval. The default split is 60/20/20; an explicit
split can use all supplied examples for fitting. Cross-validation selects the
penalty and, for kernel ridge, the kernel width. Optional text length inputs
and reader prompts are documented in the API.
A kernel head persists its fitting vectors and dual weights; a linear ridge
head persists its coefficients and intercept.
Learning from recorded outcomes#
Outcome lookup performs no gradient updates; compiling a store with
OutcomeService.register_family does train a head. An application records a vector,
chosen option and numerical outcome, then writes them to its tagged store.
Subsequent decisions use fresh per-option neighbors. The utility definition,
feedback availability and exploration schedule are application choices, not
properties learned by Venn. OutcomeService.register_family can compile the
store into a bilinear head served under the same outcome question. The
arena example demonstrates that workflow. See the outcome learning loop
for the episodic-control convention and its limitations.
Evaluation and limitations#
The public benchmark evaluates headless geometric operations. It does not isolate or establish the learned head's incremental quality. The evidence ledger lists the available results, and the comparison protocol states the remaining model study.
Probabilities are not universally calibrated. The fixed semantic suite exposes number, negation and paraphrase failures. Five examples per class permit fitting, not certification. Media is experimental. Venn is not a validated guardrail, authorization mechanism, privacy guarantee or general reasoning engine.