Instructions to use arcbright/elf-1-31b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use arcbright/elf-1-31b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="arcbright/elf-1-31b")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("arcbright/elf-1-31b") model = AutoModelForMultimodalLM.from_pretrained("arcbright/elf-1-31b", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Elf 1 31B
Elf 1 31B is a decision model from Arcbright, fine-tuned from google/gemma-4-31B-it.
Given a state and typed questions, it returns a probability for every option of every question in one forward pass,
without generating text. It serves the /v1/systemone format used by the
Decision Index.
| Base model | google/gemma-4-31B-it |
| Parameters | 31.3B (bf16 checkpoint) |
| Context | 32,768 tokens per request; a longer request is refused (422), never truncated |
| Input | text (the base model's vision weights are kept but not used) |
| Questions | choice (up to 255 options), noul (yes/no), score (up to 10 levels) |
| Serving | vLLM 0.30.0, online FP8 on one 96 GB GPU |
Usage
Start the server (online FP8 on one 96 GB GPU, vLLM 0.30.0):
hf download arcbright/elf-1-31b --local-dir elf-1-31b && cd elf-1-31b
pip install ./serve
python -m elf_serve
Send a request (examples/request.json):
curl -s http://127.0.0.1:8000/v1/systemone \
-H 'Content-Type: application/json' \
-d @examples/request.json
{
"state": {
"ticket": "Payment page returns a 500 error for every card payment since 09:00."
},
"questions": {
"severity": {
"type": "choice",
"instructions": "How severe is this ticket?",
"criteria": {
"low": "Cosmetic or minor, no customer impact",
"medium": "Some customers affected, workaround exists",
"high": "Many customers affected, no workaround"
}
},
"escalate": {
"type": "noul",
"instructions": "Should this ticket be escalated to the on-call engineer?"
},
"urgency": {
"type": "score",
"instructions": "Rate the urgency from 0 to 3.",
"criteria": [
"Can wait a week",
"Handle this week",
"Handle today",
"Handle immediately"
]
}
}
}
Response (values are illustrative):
{
"model": "arcbright/elf-1-31b",
"answers": {
"severity": {
"type": "choice",
"choice": "high",
"probabilities": {
"low": 0.01,
"medium": 0.07,
"high": 0.92
},
"confidence": 0.88
},
"escalate": {
"type": "noul",
"noul": 0.91
},
"urgency": {
"type": "score",
"score": 2.8,
"legend": {
"0": "Can wait a week",
"1": "Handle this week",
"2": "Handle today",
"3": "Handle immediately"
},
"probabilities": {
"0": 0.0,
"1": 0.03,
"2": 0.14,
"3": 0.83
},
"confidence": 0.7
}
},
"usage": {
"input_tokens": 910,
"output_tokens": 3,
"unique_input_tokens": 420
}
}
type |
criteria |
Answer |
|---|---|---|
choice |
{option: description}, up to 255 options |
choice, probabilities, confidence |
noul |
optional {"true": ..., "false": ...} |
noul: P(yes) |
score |
list of up to 10 level descriptions | score (expected level), probabilities, legend, confidence |
The repo's decision_config.json is the configuration of the Decision Index run. For production use
ELF_CONFIG=elf-1-31b-prod.json (shipped in serve/configs/): it returns raw yes/no probabilities and answers 503 when busy
instead of queueing.
Server options are in serve/README.md.
Results
| Decision Index 0.3 | Elf 1 31B | Elf 1 12B | Jev 1.14 |
|---|---|---|---|
| Public index | 61.08 | 58.35 | 60.70 |
| Full score | pending | pending | 61.53 |
| Median latency, one request at a time (1x RTX PRO 6000) | 84 ms (FP8) | 54.5 ms (bf16) |
Elf numbers are our runs of the Decision Index kit on its public part; re-scoring the uploaded results reproduces them (arcbright/elf-decision-index). Jev 1.14 is from the board (0.3.2, data of 2026-10-16). The Full score adds private tests that the board maintainers run. The 12B was trained on the train splits of more Decision Index benchmarks than the 31B (see Training).
Training
Fine-tuned from google/gemma-4-31B-it with one LoRA adapter on the attention layers, merged into the bf16 weights, on 38,000 rows from the public datasets listed in the metadata and our own
generators. Training includes the train splits of six Decision Index benchmarks (HoVer, WinoGrande, When2Call, GSM8K, BANKING77, CLINC150). All training data was screened for overlap with Decision Index test items.
Limitations
- English only.
- Not evaluated for decisions about people (credit, hiring, housing, medical, legal). Keep a human in the loop.
Citation
@misc{arcbright2026elf1_31b,
title = {Elf 1 31B},
author = {{Arcbright}},
year = {2026},
howpublished = {\url{https://huggingface.co/arcbright/elf-1-31b}}
}
License
Apache-2.0, like the base model.
- Downloads last month
- -