Karpo Decision 31B

GitHub Decision Index: #1 (tied), Full 73.9 Results License: MachinePulse Community License

Ranked #1 (tied) on the Decision Index, with a Full score of 73.9 on the maintainers' private tests (edition 0.4.1, board of 11 November 2026, 297 entries).

Decision Index 0.4.1 leaderboard, Full score, 11 November 2026: karpo-decision-31B ranked #1 (tied) with 73.9

Decision Index leaderboard, Full score, 11 November 2026, with the board's "inference technique" entries hidden; one of them, REAX 1.3, is also in the #1 group.

A decision model: given a state (a web page, a document, a conversation: any text or JSON) and typed questions about it, it returns a probability for every option of every question in one forward pass, without generating text. Fine-tuned from google/gemma-4-31B-it, with a linear readout over the options.

  • Parameters: 31.3B in bf16, plus a 255 Γ— 5,376 readout in fp32
  • Questions: choice (up to 255 options), noul (true or false), score (a level on a scale)
  • Context: 32,768 tokens per sequence; a longer request is split by questions, each part with the full state
  • Interfaces: a Python API and an HTTP server in the System One format (POST /v1/systemone)
  • Licence: MachinePulse Community License: commercial use is allowed; commercial products and services offered to third parties must show "Powered by karpo-decision (MachinePulse)"; production use for commercial purposes by an entity whose annual revenue, with its affiliates, exceeds US$10M needs a commercial agreement. It applies to the weights in this repository, including the current ones, from November 12, 2026

Results

Decision Index leaderboard

The board ranks by the Full score, which its maintainers measure on private tests only: 60% tests of the same skills as the public suite and 40% tasks from new domains.

Decision Index 0.4.1, board of 11 November 2026 karpo-decision-31B
Full score 73.9, rank #1 (tied)
Private tests, same skills (on the public scale) 70.7
Private tasks, new domains (on the public scale) 78.6
Public index (our run, adopted by the board) 75.0
Median latency (one GPU, one request at a time) 94 ms per request
Calibration error 4.8 points

The board gives one rank to models within 0.9 points of the first model in a group. Three entries share #1: GLiDE 27B, karpo-decision-31B and REAX 1.3 (an inference technique, hidden in the chart above).

Decision Index public suite

Our run of the official kit: 140,178 scored requests, 11 unsupported (a question over 32,768 tokens with its state). Results: runs/karpo-decision-31B.

score
Public index (chance-corrected) 75.0
Raw index 80.9
Breadth 74.7
Knowledge & Reasoning 65.5
Language Understanding 76.8
Retrieval & Classification 76.4
Tools & Automation 88.4
Arts & Human Taste 68.2

How it works

  • A readout, not generation. Every option is labelled with an option code. At the Answer: ( slot that ends a question's branch, a linear readout scores 255 option codes and a softmax over the question's own options gives the probabilities. Nothing is decoded, so the answer is always one of the options.
  • Many questions, one forward pass. A request is one state and any number of questions, encoded as one sequence: the list of questions, the state, then one branch per question with its options.
  • Branch attention. A branch reads the shared block (questions and state) and itself, never another branch. The state is computed once per sequence, and no question sees another question's options.

The question-list-first layout follows FlexDM and jev-brain; the shared-block and branch rule follows Sieve-31B-v3.

Use

Inference code: github.com/machinepulse-ai/karpo-decision. Python 3.12 or later and one GPU; the weights take 62.5 GB, long requests more. Loading the checkpoint as a plain chat model does not reproduce its answers.

pip install "karpo-decision @ git+https://github.com/machinepulse-ai/karpo-decision"
from huggingface_hub import snapshot_download
from karpo_decision.decider import Decider

path = snapshot_download("MachinePulseAI/karpo-decision-31B")
decider = Decider.from_pretrained(path, device="cuda")
response = decider.decide({
    "state": "Order 1182: the customer asks to return a blender bought 45 days ago. Policy: returns within 30 days.",
    "questions": {
        "eligible": {"type": "noul", "instructions": "Is the return eligible under the policy?"},
        "action": {"type": "choice", "instructions": "What should the agent do?",
                   "criteria": {"refund": "Issue a full refund", "decline": "Politely decline the return",
                                "escalate": "Escalate to a supervisor"}},
    },
})
print(response["answers"])
# {"eligible": {"type": "noul", "noul": P(true)},
#  "action": {"type": "choice", "choice": <key>, "probabilities": {<key>: p, ...}, "confidence": c}}

HTTP server (POST /v1/systemone, GET /healthz):

CKPT=$(python -c 'from huggingface_hub import snapshot_download; print(snapshot_download("MachinePulseAI/karpo-decision-31B"))')
torchrun --standalone --nproc_per_node 1 -m karpo_decision.serve.server --checkpoint "$CKPT" --port 18440

Decision Index kit, installed separately:

pip install "decision-index @ git+https://github.com/apolinario/decision-index"
python -m decision_index run --engine karpo_decision.serve.engine:DecisionIndexEngine \
    --option checkpoint="$CKPT" --out runs/karpo-decision-31B

Lineage

google/gemma-4-31B β†’ google/gemma-4-31B-it β†’ karpo-decision-31B (fine-tuned)

Limitations

  • Text only: the vision weights are in the checkpoint but unused.
  • Not a chat or text-generation model; generation was not evaluated.
  • A question that does not fit in 32,768 tokens with its state is refused, never truncated.
  • It always picks one of the given options.

Licence

The weights and model files are licensed under the MachinePulse Community License; this summary is for convenience and the LICENSE governs. Commercial use is allowed. Commercial products and services offered to third parties, paid or free, must carry the attribution below; internal use and internal tools, evaluation, testing, benchmarking, research, and pilots of up to 90 days that serve no paying customers need none. Production use for commercial purposes by an entity whose annual revenue, with its affiliates, exceeds US$10M needs a separate commercial agreement: write to contact@machinepulse.ai with the subject line "Karpo Decision licensing: commercial agreement request". Models fine-tuned, merged, quantized, pruned or distilled from these weights stay under the same licence; a model trained only on this model's outputs does not.

karpo-decision-31B is a modified version of google/gemma-4-31B-it (Apache-2.0): decoder weights fine-tuned, readout added. Gemma 4 stays under its own licence, a copy of which is in licenses/Gemma-4-LICENSE; see NOTICE.

The inference code (github.com/machinepulse-ai/karpo-decision) remains Apache-2.0.

From November 12, 2026, the weights in this repository, including those first published on November 5, 2026, are distributed under the MachinePulse Community License. Copies obtained before that date under Apache-2.0 keep the rights that licence granted. Earlier revisions stay in this repository's history so that published results can be reproduced; copies obtained from them on or after November 12, 2026 are covered by the MachinePulse Community License.

Attribution

Commercial products and services offered to third parties that use this model or a derivative must show, on a related website, user interface, about page or product documentation:

Powered by karpo-decision (MachinePulse)

with a link to https://huggingface.co/MachinePulseAI/karpo-decision-31B where the medium allows one.

Downloads last month
100
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 MachinePulseAI/karpo-decision-31B

Finetuned
(372)
this model

Space using MachinePulseAI/karpo-decision-31B 1

Collection including MachinePulseAI/karpo-decision-31B

Evaluation results

  • Decision Index 0.4.1, Full score (leaderboard, 11 November 2026; rank #1, tied) on Decision Index 0.4.1, private tests (60% same skills, 40% new domains)
    Decision Index leaderboard
    73.860
  • Decision Index 0.3, public index (chance-corrected; own run of the official kit, same value on the leaderboard) on Decision Index 0.3 public suite (140,178 scored requests; the index averages 37 benchmarks)
    Own run of the official kit
    75.050