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 Lumma-Fev-0.15B Lumma-Fev-0.6B
Banking77 0.87 0.425 0.47 0.90
DAIR Emotion 0.48 0.595 0.68 0.89
AG News 0.91 0.95 0.89 0.85
Typed-decisions 0.72 0.76 0.20 0.30
Average 0.75 0.68 0.56 0.74
P50 Latency 256 ms 32.8 ms 35.576 ms 45.82 ms
Weights Closed Open Open Open
Cost $0.042 / 1M tokens $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="I was charged twice for my March invoice. Please refund one of them.",
    questions={
        "billing": {"type": "noul", "instructions": "Is this about billing?"},
        "team": {"type": "choice", "instructions": "Which team should handle this?",
                 "criteria": {"billing": "Payments and refunds", "shipping": "Delivery problems", "technical": "Bugs and outages"}},
        "urgency": {"type": "score", "instructions": "How urgent is this?",
                    "criteria": ["can wait", "this week", "today"]},
    },
)
print(answers["team"]["choice"], answers["team"]["probabilities"])

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

  • confidence and probabilities are the model's own estimates. Measure calibration on your own labelled data before gating automated actions on them.

Feedback

Downloads last month
94
Safetensors
Model size
0.2B params
Tensor type
F32
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for FrontiersMind/Lumma-fev-0.1b

Finetuned
(5)
this model

Space using FrontiersMind/Lumma-fev-0.1b 1

Collection including FrontiersMind/Lumma-fev-0.1b