Model reference · open weights

LemonDecider

Embeddings inclusionAI Embeddings 1 build Open weights 0 dl/mo

LemonDecider is an open-weight embedding model from inclusionAI. LemonDecider (BF16) weighs 9.1 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • LemonDecider is a 4.5B parameter feature-extraction model by inclusionAI designed for structured choice, noul, and score questions.
  • It uses a single forward pass with a 255-way readout head to provide answers and an explicit unknown candidate without autoregressive generation.
  • The model supports a context length of 262144 tokens and is released under the Apache-2.0 license.

Summary of the inclusionAI/LemonDecider model card, 2026-10-13

What it is

Released byinclusionAI
Released2026-10-05
Parameters4.5B
VRAM9.1 GB for the weights

What it runs on

Memory and cards for LemonDecider (BF16)

9.1 GBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBtight11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What inclusionAI says about LemonDecider

Read the model card

A typed decision engine derived from Qwen/Qwen3.5-4B: it answers structured choice / noul / score questions in a single forward pass with an explicit unknown (abstention) candidate. There is no autoregressive generation head — the backbone is kept full-weight, and a 255-way single-token readout replaces the LM head.

Model description

PropertyValue
ArchitectureAutoJevForDecisionClassification (custom code, trust_remote_code=True)
Base modelQwen/Qwen3.5-4B (Qwen3.5 text + vision backbones)
Parameters~4B backbone + 255×2560 readout head
Readout255 single-token answer codes (A … JT), initialized from the Qwen LM-head rows of those tokens
Decision headLinear(hidden_size=2560, 255, bias=False) over the last prompt position
Dtype / contextbfloat16; max_input_length = 8192 (no silent truncation)
Options per question1–255 (option_counts required per row; invalid option logits are masked)
MultimodalOptional images (PIL, decoded) via the Qwen3 vision processor
Serving temperature1.0 (post-processing softmax only; not used in CE loss)

Each input is rendered as one user message (state + instructions + options + an appended __unknown__ slot), then scored in one forward pass. The forward pass rejects KV-cache decoding and right padding (left padding is required).

Question types and output semantics

decision_utils.py implements the native _known() semantics: probabilities over known candidates are renormalized, and the unknown slot gets its own probability.

question.typeCandidatesOutput
choice1–254 named options (+unknown)choice (argmax key), per-option probabilities, confidence
noultrue, false (+unknown)noul = P(true) + 0.5 * P(unknown)
score2–10 ordered descriptions (+unknown)score = Σ i · P(i) plus legend and probabilities
——abstained = True iff the raw argmax lands on unknown; unknown_probability is always returned

confidence = concentration · (1 − P(unknown)), where concentration = (n·p_max − 1)/(n − 1) (1 for single-candidate questions).

Quickstart

Standalone CLI (bundled model.py):

python model.py --checkpoint . \
  --input inputs.json \
  --device cuda:0

With transformers:

import torch
from transformers import AutoModel, AutoProcessor
from decision_utils import predict_batch

model = AutoModel.from_pretrained(
    "inclusionAI/LemonDecider",
    trust_remote_code=True,
    dtype=torch.bfloat16,
    device_map="cuda:0",
    attn_implementation="sdpa",
).eval()
processor = AutoProcessor.from_pretrained(
    "inclusionAI/LemonDecider", trust_remote_code=True
)
processor.tokenizer.padding_side = "left"

rows = [{
    "state": "我想申请退款。",
    "question": {
        "type": "choice",
        "instructions": "判断主要诉求",
        "criteria": {
            "refund": "退款相关",
            "delivery": "物流相关",
            "account": "账户相关",
        },
    },
}]

result = predict_batch(model, processor, rows)
print(result["answers"][0])
# {"type": "choice", "choice": "refund", "probabilities": {...},
#  "confidence": ..., "unknown_probability": ..., "abstained": ...}

Images are passed as decoded PIL.Image objects in row["images"]; paths/URLs are not fetched.

Training

Distilled via supervised fine-tuning from imajev-4b, a larger Jev-class decision model:

  • Checkpoint: step 24 (6,144 examples seen)
  • Loss: cross-entropy over the masked 255-way readout (supports hard option indices and soft teacher distributions)
  • Dev set (n=574) accuracy@T=1: 0.7735 (best step: 3, 0.7805)

Temperature fit (not applied): an NLL scan over T ∈ [0.30, 5.00] on the dev set found T = 0.60 (NLL 0.56265, Brier 0.28261, vs 0.6016 / 0.29885 at T=1). The checkpoint still serves at T = 1.0; adopting T* is deliberately blocked until the public evaluation suite is re-evaluated (argmax is invariant at T* except at the noul decision boundary).

Intended use and limitations

  • Intended for typed decision inputs (choice / noul / score) rendered through decision_utils.decision_messages(); prompt-layout divergence will degrade results.
  • It is not a generative chat model: never use it for free-form text generation.
  • Results come from a small internal dev split (n=574); validate on your own distribution before production use.
  • Long inputs are rejected above 8,192 tokens instead of being silently truncated; handle your own context budget upstream.

Files

FilePurpose
model-00001/2-of-00002.safetensors(+index)Weights (bfloat16)
configuration_autojev.py / modeling_autojev.pyCustom architecture (decision forward, option masking, hard/soft-target loss)
decision_utils.pyPrompt rendering, _known() scoring, batching (prepare_batch / predict_batch)
model.pyStandalone inference CLI
chat_template.jinja, processor_config.jsonQwen3-style chat template and image processor
sft_receipt.jsonTraining artifact receipt (step, dev metrics, temperature fit)

License

Apache-2.0 (see LICENSE / LICENSE.code).

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms