Pea
Pea is Vej’s current 2B text decision model. Define a situation and its possible outcomes. Pea returns a probability for each outcome. Your code decides what happens next.
Completed model · Access by request
Access
To discuss access, contact hello@itsvej.com.
Pea is hosted on Hugging Face as a private model for authorised account members. Repository access and the release package are supplied after approval. The package contains the native checkpoint, tokenizer assets, source code snapshot, metrics, and checksums.
The core development repository at LodeKennes/Vej is also private. This public website is hosted from LodeKennes/vej-site.
The experimental Pea classification export is also private on Hugging Face.
Run Pea locally
Use your authorised Hugging Face account to download the release package. Verify SHA256SUMS. Extract vej-source.tar.gz. Run predictions from that directory. Python 3.12 to 3.14 is supported. Install the locked runtime dependencies by following the README supplied with your release package before running these commands.
HF_HUB_OFFLINE=1 python -m vej predict \
examples/decisions.json --checkpoint /path/to/download/checkpoint --device cpu
CPU execution is a functional fallback and can be slow. The backbone remains BF16. Disabling autocast does not convert it to FP32. For compatible CUDA or ROCm environments, follow the supplied installation instructions in your GPU environment, then execute:
HF_HUB_OFFLINE=1 python -m vej predict examples/decisions.json \
--checkpoint /path/to/download/checkpoint --device cuda \
--precision bfloat16 --candidate-batch-size 4
Local HTTP and SDKs
vej serve --backend local --checkpoint /path/to/download/checkpoint --device cuda
The server binds to 127.0.0.1 by default, without authentication. Keep it local. It exposes POST /v1/predict, /healthz, /readyz and /metrics; native responses include usage.processed_tokens.
The official TypeSafe (Jev) Python SDK uses POST /v1/systemone. Cloudflare Clef uses POST /client/v4/accounts/{account_id}/ai/run/@cf/cloudflare/{clef|clef-flash}. Both text wire formats work on local and experimental vLLM backends.
The serving commands, SDK adapters, vLLM exporter and context override require the current private Vej source with its locked model runtime dependencies. The source archive bundled with the Pea release predates these features; the prediction commands above work with that archive.
Experimental vLLM export
vej export-vllm writes a self-contained classification export for vLLM ≥ 0.27, using --runner pooling --convert classify. The private published export can also be served without those flags. Pea has not passed the vLLM checks for numerical accuracy and contract parity. This export remains experimental. Use Vej’s native loader for supported inference.
Architecture
Pea uses a pretrained 2B text backbone. Vej freezes its base BF16 parameters and trains rank-16, alpha-32 LoRA adapters alongside a custom FP32 scalar decision head. There is no vocabulary projection head or token generator in this text-only checkpoint. This checkpoint makes text decisions. The code includes an untrained vision input path. We have not measured vision decision quality.
State, question, and candidate text are concatenated and passed through the model to produce a scalar score. The model normalises candidate scores into probabilities for each independent question. Application code calculates zero-based rubric expectations.
- Base model
- pretrained text backbone (revision 15852e8)
- Text backbone
- Approximately 1.88 billion parameters (frozen BF16)
- Trainable parameters
- Approximately 16.82 million (LoRA adapters + scalar head)
- Checkpoint size
- Full native state dict, approximately 3.6 GiB
- Input token limit
- 2,048 tokens per rendered candidate by default (overlong inputs fail closed). The native Pea loader accepts
--max-length 49152; long-context quality is not validated. - Selected checkpoint
- Recovery step 6,144 (lowest pooled validation NLL: 0.458497)
- Execution mode
- Independent candidate batching with repeated state encoding
Limits
The final test recorded 76.60% exact accuracy across 14,286 decisions. Score accuracy and tool diagnostics remain weak, confidence is not calibrated, and probabilities are not permission to act. Keep independent policy checks around consequential actions; the same-test comparison with hosted Jev is on the evaluation page.
Vej code and model adaptations use Apache-2.0, while upstream base assets and training datasets retain their respective terms. See licences and attribution.