- Python 92.6%
- Just 7.4%
| docs | ||
| examples | ||
| scripts | ||
| src/system_one_lfm | ||
| tests | ||
| .gitignore | ||
| .python-version | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| justfile | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Sources
What system-one models are, what jev is. long: https://flaviocopes.com/jev/
jev-like with diffusion models (DiffusionGemma, 1-step canvas readout): https://medium.com/google-cloud/how-to-build-a-jev-style-classifier-with-diffusiongemma-and-vllm-ef2e0bfa9ad7 (local copy: how-to-build-a-jev-style-classifier-with-diffusiongemma-and-vllm.md)
jev-like based on qwen: https://github.com/jaredpalmer/kev extra: https://opper.ai/blog/jev-vs-kev-open-decision-model
jev-like based on qwen, no extra head (label-token logits): https://github.com/akivet/Mica-v0.1-4B
how jev is probably built (reverse-engineered, speculative; take with a pinch of salt): https://archerhume.com/posts/jevs-architecture-unmasked
what jev's confidence actually is (a rescaled top probability, not calibration): https://bernoulli.app/articles/is-jev-confident
other open sources approaches: https://www.reddit.com/r/LocalLLaMA/comments/1wouby6/jev_almost_dead_clm_vs_jev/
model families: https://huggingface.co/collections/LiquidAI/lfm25, https://huggingface.co/inclusionAI/LLaDA2.2-mini, https://huggingface.co/IFM/K2-Horizon-0.9B, https://huggingface.co/IFM/K2-Horizon-3.7B (quants: https://huggingface.co/models?other=base_model:quantized:IFM/K2-Horizon-3.7B, we use https://huggingface.co/cyankiwi/K2-Horizon-3.7B-AWQ-FP8), https://huggingface.co/IFM/K2-Horizon-3.7B-GGUF, https://huggingface.co/IFM/K2-Horizon-0.9B-Uno
evals that work against any /v1/systemone endpoint: https://huggingface.co/datasets/jaredpalmer/kev-suites (via kev.benchmark --remote), https://github.com/fstandhartinger/jevbench
Idea
Phase 1
build our own toy-system-one model. typesafe api: state + questions (noul, score, choice).
--kind colbert: LFM2.5-ColBERT-350M. state = document,instructions + option= query, softmax over MaxSim. relevance ≠ entailment; needs fine-tuning (supported: sentence-transformers trainer + LoRA via peft).--kind lfm --size 230M|350M|1.2B|2.6Band--kind k2 --size 0.9B|3.7B(3.7B = FP8 quant with FP8 kernels, ~6.6 GiB peak): Mica-style label-token readout (prefill + label rows of the LM head only); thinking checkpoints get an empty closed thought. LoRA later.- diffusion: DiffusionGemma (25B MoE, djev) and LLaDA2.x-mini (16B MoE) both need more than 8 GB of VRAM, and the shared-canvas recipe breaks question isolation (one canvas per question would fix it). K2-Horizon-0.9B-Uno is a decoding speed-up, not a reader.
- dropped for now: modernbert-class encoders.
- keep it simple: no cuda graphs / shared-prefix kernels / packed masks until a profile says so.
Next
- ColBERT: fine-tune / LoRA. Supported via sentence-transformers (
MultiVectorEncoderTrainer,add_adapter+peft). Plan: Kevdecision-v7loader with train/dev split → custom listwise CE overMaxSim(option, state)(built-in losses rank the wrong direction) → full FT vs LoRA vs distillation from LFM-2.6B → fit T on dev → JevBench. - More decoder backends. One
checkpoints.pyentry each; verify label rows = full logits and greedy output = a label (and diff remote code for third-party quants). - Decoder LoRAs (future). Same data; CE on label logits at the answer position.
- Diffusion (parked, VRAM). 1-step mask-slot readout, but one canvas per question (batched, shared state prefix) to keep answers isolated.
See AGENTS.md for source notes and design decisions.
Stack-agnostic how-to: docs/writing-your-own-jev.md.
Phase 2
Use a vision-capable base so we can provide vision capabilities (state can be or contain an image). Eg. https://www.liquid.ai/blog/lfm2-5-vl-450m
Usage
just test && just check
just serve --kind lfm --size 2.6B # also: --temperature, --query-length (colbert), --device
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
"state": "I was charged twice. Please fix this ASAP.",
"questions": {"billing": {"type": "noul", "instructions": "Is this ticket about billing?"}}}'
The first request pays CUDA warmup (~17 s on an RTX 5070 Laptop); after that, ~45 ms.
Benchmark (JevBench public set, per tier), with the server running in another terminal:
just bench lfm-2.6B-t1 # results in runs/jevbench/lfm-2.6B-t1/