Lumma-Fev-0.1B
Lumma-Fev-0.1B is a decision model. It reads one document (the state) and a set of typed questions, and returns a probability distribution for each question in a single forward pass. It never generates text, so there is nothing to parse and nothing to hallucinate.
It is fine-tuned from FrontiersMind's Nandi-Mini-150M, which we pre-trained from scratch.
NOTE: Lumma-fev-4B and Lumma-feb-9B releasing on 26 September along with a detailed blog.
🎮 Lumma-fev in Action
🔥 See our smallest Lumma-fev 150 million model turn decisions into actions - playing Super Mario autonomously and in real time on a MacBook Air M2. ⚡
⚡ Despite its compact size, Lumma-fev can observe the game state, reason about the situation, and choose the next action — all running locally on consumer hardware. 💻
Benchmarks
Benchmarks
| Benchmark / Metric | TypeSafe Jev 1.13.0 | Laya | Gliner2.5-Decide | Lumma-Fev-0.15B | Lumma-Fev-0.6B | Lumma-Fev-4B | Lumma-Fev-9B |
|---|---|---|---|---|---|---|---|
| Typed-decisions | 0.72 | 0.76 | 0.46 | 0.49 | 0.64 | 0.78 | 0.81 |
| AG News | 0.91 | 0.95 | 0.48 | 0.89 | 0.84 | 0.93 | 0.95 |
| DAIR Emotion | 0.48 | 0.595 | 0.55 | 0.68 | 0.89 | 0.94 | 0.94 |
| Banking77 | 0.87 | 0.425 | 0.68 | 0.47 | 0.90 | 0.93 | 0.94 |
| Average | 0.75 | 0.68 | 0.54 | 0.63 | 0.82 | 0.90 | 0.91 |
| P50 latency | 256 ms | 32.8 ms | 99.85 ms | 35.576 ms | 45.82 ms | 175.93 ms | 269.39 ms |
| Weights | Close | Open | Open | Open | Open | Open | Open |
| Cost | $0.042 / 1M tokens | $0 self-hosted | $0 self-hosted | $0 self-hosted | $0 self-hosted | $0 self-hosted | $0 self-hosted |
Model details
| Developed by | FrontiersMind |
| Model type | Causal transformer, prefill-only; each question reads the state and its own tokens only; pointer readout over the options |
| Base model | FrontiersMind/Nandi-Mini-150M (revision 31c8aceaa16e) |
| Parameters | 154M |
| Fine-tuning | full fine-tune |
| Pointer head | 512 dimensions |
| Context | up to 1024 state tokens; one question row (state + question) up to 2,048 tokens |
| Question types | noul (yes/no), choice (1–255 options), score (1–255 ordered levels) |
| Weights | bf16 backbone, fp32 pointer head |
| Language | English |
Use it with transformers
from transformers import AutoModel
model = AutoModel.from_pretrained("FrontiersMind/lumma-fev-0.1b", trust_remote_code=True)
answers = model.decide(
state="My running shoes arrived in the wrong size. Can I exchange them for a size 10?",
questions={
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"returns": "Exchanges, wrong items, damaged items",
"shipping": "Delivery status, delays, lost packages",
"billing": "Charges, invoices, payment problems",
},
}
}
)
print(answers)
state can be text, a JSON object or an array. Pin a version with revision="<commit>", and move the model to a GPU
with model.to("cuda") (bf16 is the stored precision).
Use it with the lumma-fev package
pip install lumma-fev # local inference
pip install "lumma-fev[serve]" # plus the API server
import lumma_fev
model = lumma_fev.load("FrontiersMind/lumma-fev-0.1b") # picks cuda, mps or cpu
print(model.decide("Two charges on my card for one order.",
{"billing": {"type": "noul", "instructions": "Is this about billing?"}}))
Serve it as an API
lumma-fev-serve exposes the TypeSafe POST /v1/systemone contract, so existing TypeSafe clients work by changing
their base URL.
lumma-fev-serve --model FrontiersMind/lumma-fev-0.1b --host 0.0.0.0 --port 8000
# optional: LUMMA_FEV_API_KEY=<key> requires "Authorization: Bearer <key>"; --cors for browser apps
curl -s localhost:8000/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?"}}
}'
From Python, with the lumma-fev client or the TypeSafe SDK:
from lumma_fev import Client
client = Client("http://127.0.0.1:8000")
print(client.decide("I was charged twice.", {"billing": {"type": "noul", "instructions": "Is this about billing?"}}))
from typesafe_sdk import Noul, TypeSafeClient # pip install typesafe-sdk
with TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8000") as ts:
print(ts.system_one(state="I was charged twice.", questions={"billing": Noul(instructions="Is this about billing?")}).nouls["billing"].noul)
Answers
| Type | Criteria | Answer |
|---|---|---|
noul |
optional {"true": ..., "false": ...} |
noul: probability of yes |
choice |
{name: description or null} |
choice (most likely name), confidence, probabilities by name |
score |
ordered list of levels | score (expected level), confidence, legend, probabilities by level |
Questions never see each other: each one reads the state and its own instructions and options only, so one question cannot change another's answer. Text inside the request cannot forge the model's delimiter tokens.
Limits
confidenceand probabilities are the model's own estimates. Measure calibration on your own labelled data before gating automated actions on them.
Feedback
- Discord: https://discord.gg/ZGdjCdRt
- Email: support@frontiersmind.ai
- Website: https://www.frontiersmind.ai/
- LinkedIn: https://www.linkedin.com/company/frontiersmind/
- X (Twitter): https://x.com/FrontiersMind