Instructions to use MachinePulseAI/karpo-decision-31B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MachinePulseAI/karpo-decision-31B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="MachinePulseAI/karpo-decision-31B")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("MachinePulseAI/karpo-decision-31B") model = AutoModelForMultimodalLM.from_pretrained("MachinePulseAI/karpo-decision-31B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
karpo-decision-31B
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
- Licence: Apache-2.0
Lineage
google/gemma-4-31B β google/gemma-4-31B-it β karpo-decision-31B (fine-tuned)
Use
Inference code: github.com/machinepulse-ai/karpo-decision. One GPU; the weights take 62.5 GB, long requests more.
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):
torchrun --standalone --nproc_per_node 1 -m karpo_decision.serve.server --checkpoint "$path" --port 18440
Decision Index kit:
python -m decision_index run --engine karpo_decision.serve.engine:DecisionIndexEngine \
--option checkpoint="$path" --out runs/karpo-decision-31B
Results
Decision Index 0.3 public suite, self-reported: 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.05 |
| Raw index | 80.90 |
| Breadth | 74.69 |
| Knowledge & Reasoning | 65.46 |
| Language Understanding | 76.78 |
| Retrieval & Classification | 76.42 |
| Tools & Automation | 88.39 |
| Arts & Human Taste | 68.21 |
The Full score (the leaderboard's private tests) will be added once published.
Limitations
- Text only: the vision weights are in the checkpoint but unused.
- Not a chat or text-generation model; generation was not evaluated.
- Probabilities are not calibrated (temperature 1.0).
- 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
Apache-2.0 (LICENSE), for the weights and the inference code. A modified version of google/gemma-4-31B-it (Apache-2.0): decoder weights fine-tuned, readout added.
- Downloads last month
- 3
Model tree for MachinePulseAI/karpo-decision-31B
Collection including MachinePulseAI/karpo-decision-31B
Evaluation results
- Decision Index 0.3, public index (chance-corrected, self-reported) on Decision Index 0.3 public suite (140,178 scored requests; the index averages 37 benchmarks)self-reported75.050