--- license: cc-by-nc-4.0 base_model: Qwen/Qwen3-0.6B library_name: bev-decider base_model_relation: finetune datasets: - avbiswas/bev-decision-150K pipeline_tag: text-classification tags: - system-one - decision-model - jev-compatible language: - en --- # 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`](https://huggingface.co/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`](https://github.com/avbiswas/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`. ~~~bash pip install bev-decider ~~~ ~~~python 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: ~~~json { "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`](https://huggingface.co/datasets/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](https://huggingface.co/Qwen/Qwen3-0.6B), which is Apache-2.0; Qwen's license is included as `LICENSE-Qwen`.