IDU / README.md
dkappe's picture
Upload README.md with huggingface_hub
0b67e32 verified
|
Raw History Blame Contribute Delete
4.28 kB

A newer version of the Gradio SDK is available: 6.30.0

Upgrade
metadata
title: IDU
emoji: 🧠
colorFrom: purple
colorTo: gray
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: apache-2.0
short_description: Typed decisions (choice/score/noul) on open weights

IDU

JEV shifted one letter back β€” the same shift that turns IBM into HAL.

A typed-decision service in Jev's shape: give it a state and typed questions, get typed answers with probabilities and confidence. No text generation, so nothing to parse and nothing to hallucinate.

type question answer
choice which of these options? the option, a probability per option, confidence
score where on this rubric? a position along your levels (can land between them), distribution
noul is this true? one number: the probability that it is

Backend

convaiinnovations/laya β€” 421M ModernBERT-large with a decision head, trained by RL against strictly proper scoring rules (RLCD). Apache 2.0.

Why this one:

  • It already is the Jev shape. state + typed questions in, typed decisions out. No adapter, no tool-calling workaround, no trigger vocabulary.
  • Options are judged independently. Each option is scored at its own [MASK] token and then softmaxed over that question's options. That is what Jev documents ("each level is judged on its own against the state"), and it removes the polarity problem a tool-calling model has: a noul question is two markers, not two competing armed tools.
  • One forward pass answers every question in a call.
  • PyTorch, so it fits ZeroGPU natively β€” none of the JAX dtype/preallocation work it took to get a JAX model running on this runtime.

Endpoints

  • POST /systemone (Gradio API name systemone) β€” the Jev shape.
  • /triage β€” four-question support triage in one call, with a confidence-gated action line.
  • /compare β€” head-to-head against the tuned Needle 3 adapter on dkappe/needle3-gpu.
  • /health β€” device, temperature in force, warm-up result.

Honest status

The base checkpoints are near chance zero-shot on their own typed-decisions benchmark: 0.362 against a 0.318 random and a 0.461 majority-class baseline. The card's headline 0.766 belongs to a checkpoint fine-tuned on that benchmark's own training split, and it says so itself: "Laya is a fast base to specialise, not a zero-shot decision engine."

The probabilities ship already calibrated. The model card reports mean ECE 0.466 falling to 0.081 after fitting one temperature per (question type, option count) β€” and that fitting is baked into the checkpoint: rl_agent_config.json carries temperature [1.6369, 1.2514, 1.9834] for choice/score/noul plus per-option-count buckets. So the defaults here are the calibrated path. The temperature controls use 0 = keep the checkpoint's value as their sentinel; setting a positive number overrides deliberately.

score is the weakest primitive by the card's own numbers (SST-5 0.372).

High-cardinality choice degrades because options share a fixed token budget: 0.425 on Banking77 (77 options) vs Jev's 0.870. Fine at our 3–4 options; raise head_max_len or use a coarse-to-fine split well before 50.

English only at the repo root. laya-multilingual (mmBERT-base) covers 100+ languages and is ~2.2x faster.

Implementation notes worth keeping

  • spaces must be imported before torch. The spaces library patches torch's CUDA initialisation so a GPU can be attached per call; import torch first and every decorated call dies inside worker_init with RuntimeError: No CUDA GPUs are available. Nothing that pulls in torch β€” gradio, transformers, laya, safetensors β€” may appear above that guard block. Taken from the model's own demo Space, which documents the same trap.
  • Assets load at module scope, before the UI is reachable, because network access inside a @spaces.GPU function is restricted. Warm-up runs at startup so the first click is not paying model construction.
  • One decorated entry point for every tab, so the start-up warm-up covers all of them instead of each tab paying its own GPU attach.

Apache 2.0 β€” weights and SDK both.