linne-oak-1.0

linne-oak-1.0 is a 31B decision model. Give it a state (text, a document, JSON, a conversation or an agent trajectory) and a question with a set of options, and it returns one option together with a probability for every option, in a single forward pass.

It is the larger sibling of linne-fern-1.0: linne-fern is a 27B causal model that also chats, linne-oak is a dedicated decision model.

Highlights

  • Decision Index public score 63.94, measured with the official kit (edition 0.3, all 37 public benchmarks, 140,620 requests, complete).
  • Reads the whole prompt at once: the full-attention layers attend in both directions over the prompt (sliding-window layers keep their native behavior), so the decision sees the state, the question and every option together.
  • Strong across the board: knowledge, language understanding, retrieval and classification, tools and automation.
  • Agent-safe: a strong step-level guard for agents with a low false-block rate.
  • Fast: one forward pass per decision; median 63 ms per request on one H200.

linne-oak-1.0 is a decision-only model. Because its full-attention layers are bidirectional, it does not generate text: use it to pick options and read probabilities, not as a chat model. For chat, use the base model or linne-fern-1.0.

Decision Index (public part, edition 0.3)

Chance-corrected skill, higher is better. linne rows measured by us with the official kit; the other rows are the public-part scores published on the leaderboard.

Model Overall Knowledge Language Retrieval Tools Arts
linne-oak-1.0 (31B) 63.94 54.3 66.6 69.1 78.5 45.1
linne-fern-1.0 (27B) 58.92 44.9 62.8 62.4 79.0 41.5
Perplexity Decider v1.1 (27B), leaderboard 62.25
Quyet-1.0-Large (31B), leaderboard 60.79

Only the public part (20% of the full leaderboard score) can be measured outside the leaderboard.

Usage

The prompt is one user message (chat template, thinking off): the state (compact JSON when not a string), a blank line, Question: <instructions>, one line <label>: <name> - <description> per option, and Answer with the letter of one option only. The answer is the softmax over the next-token logits of the option letters (with the model's final logit soft-capping), read at the last prompt position, with the full-attention layers bidirectional.

linne_engine.py (with nc_hook.py) in this repository implements exactly this, as a Decision Index engine and as a library:

import sys
from huggingface_hub import snapshot_download

path = snapshot_download("MISA-core/linne-oak-1-0")
sys.path.insert(0, path)
from linne_engine import LinneEngine

model = LinneEngine(model=path, device="cuda:0", noncausal=True)
result, _ = model(
    "My Stripe integration keeps failing. Please help ASAP.",
    {"team": {"type": "choice", "instructions": "Which team should handle this request?",
              "criteria": {"billing": "Charges and refunds", "technical_support": "Integration errors",
                           "sales": "Questions about buying a product"}}},
)
print(result["answers"]["team"])  # chosen option and a probability for every option

Run the Decision Index public suite:

PYTHONPATH=<path> python -m decision_index pipeline --engine linne_engine:LinneEngine \
  --option model=<path> --option device=cuda:0 --option noncausal=1 --out runs/linne-oak-1-0

BF16 weights are about 62 GB and fit one 80 GB GPU.

License

Apache 2.0, following the base model's license.

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

Model tree for MISA-core/linne-oak-1-0

Finetuned
(296)
this model
Quantizations
1 model

Collection including MISA-core/linne-oak-1-0