jev-decider-0.4B

A 0.4B-parameter System One decision model in the bev-decider / Jev format. It reads a state (text or JSON) and typed questions about it and returns probabilities in a single forward pass, with no text generation:

  • choice: pick one of several named options.
  • noul: yes/no, returned as P(yes).
  • score: an ordinal level, returned as the expected value over the levels.

Architecture

This is a single self-contained model. model.safetensors holds the whole network in one file.

Backbone The first 20 of 28 layers of Qwen/Qwen3-0.6B, with the fine-tuned LoRA (r=8, alpha=16 on q/k/v/o_proj of layers 8-19) merged into the weights
Decision head 2-layer attention head, 512-dim, with a task-type embedding
Parameters About 0.4B (0.31B in the transformer layers, 0.16B token embeddings, 7.4M head)
Weights model.safetensors (bf16 backbone + fp32 head), plus backbone_config.json, config.json and Qwen's tokenizer files
Context Trained with states up to 512 tokens; options are limited to 64 tokens each

The head is a custom module, so the model is loaded with the bev-decider package.

Usage

bev-decider is the library; jev-decider-0.4B is this model. Install the library, then pass this model's repo id to load.

pip install bev-decider
from bev_decider import load

decider = load("NeelContractor/jev-decider-0.4B")

state = {
    "message": (
        "URGENT: you charged my card twice this month. "
        "Refund the duplicate within 24 hours or I'm disputing it with my bank."
    )
}

questions = {
    "intent": {
        "type": "choice",
        "instructions": "What does the customer want?",
        "criteria": {
            "refund": "money returned or a duplicate charge reversed",
            "technical_help": "a bug, outage or integration problem",
            "cancellation": "wants to cancel or downgrade",
        },
    },
    "urgent": {
        "type": "noul",
        "instructions": "Does the message communicate time pressure or a deadline?",
    },
    "anger": {
        "type": "score",
        "instructions": "How angry is the customer?",
        "criteria": ["calm", "mildly annoyed", "frustrated", "furious"],
    },
}

answers = decider.decide(state, questions)

Output:

{
  "intent": {
    "type": "choice",
    "choice": "refund",
    "probabilities": {
      "refund": 0.996006190776825,
      "technical_help": 0.0018722523236647248,
      "cancellation": 0.0021215397864580154
    }
  },
  "urgent": {
    "type": "noul",
    "noul": 0.8624385595321655
  },
  "anger": {
    "type": "score",
    "score": 1.2702370285987854,
    "probabilities": {
      "0": 0.3623242974281311,
      "1": 0.0982351303100586,
      "2": 0.4463198184967041,
      "3": 0.0931207537651062
    }
  }
}

Evaluation

Held-out test split of avbiswas/bev-decision-150K, 2,000 questions, single forward pass:

Metric Value
Accuracy (all) 0.7300
Yes/no (noul) 0.8178
Choice 0.7192
Score 0.5964
AUC (noul) 0.8859

These numbers come from the best checkpoint (step 1000 of the final run) selected by test accuracy.

Training

  • Base: first 20 layers of Qwen/Qwen3-0.6B (weights frozen except LoRA).
  • LoRA: r=8, alpha=16, dropout 0, on q/k/v/o_proj of layers 8-19.
  • Head: 2 attention blocks, 512-dim, num_task_types=3 (choice, noul, score).
  • Data: avbiswas/bev-decision-150K (250,262 exploded training questions).
  • Objective: cross-entropy over the options.
  • Precision: bf16 autocast, fp32 head. Optimizer: AdamW (head lr 1e-3, LoRA lr 1e-4).

The exported weights are the LoRA-merged backbone plus the trained head.

License

The model is CC-BY-NC-4.0 (non-commercial), because the training data includes sources with non-commercial terms. It contains weights derived from Qwen3-0.6B, which is Apache-2.0; Qwen's license is included as LICENSE-Qwen.

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

Model tree for NeelContractor/jev-decider-0.4B

Finetuned
Qwen/Qwen3-0.6B
Finetuned
(1428)
this model

Dataset used to train NeelContractor/jev-decider-0.4B