Instructions to use macrocosm-os/iota-decide-4b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use macrocosm-os/iota-decide-4b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="macrocosm-os/iota-decide-4b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("macrocosm-os/iota-decide-4b") model = AutoModelForMultimodalLM.from_pretrained("macrocosm-os/iota-decide-4b", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use macrocosm-os/iota-decide-4b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "macrocosm-os/iota-decide-4b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macrocosm-os/iota-decide-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/macrocosm-os/iota-decide-4b
- SGLang
How to use macrocosm-os/iota-decide-4b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "macrocosm-os/iota-decide-4b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macrocosm-os/iota-decide-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "macrocosm-os/iota-decide-4b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macrocosm-os/iota-decide-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use macrocosm-os/iota-decide-4b with Docker Model Runner:
docker model run hf.co/macrocosm-os/iota-decide-4b
iota-decide-4b
A 4B open-weights decision model by Macrocosmos. Give it a state (a ticket, an agent trace, a policy plus a request, any JSON or text) and a set of typed questions. It returns a calibrated answer to every question in a single forward pass, with no text generation and no prompt engineering.
- Fast and cheap: one forward pass per request. It runs on a single GPU (about 9 GB of weights in bf16), and even on CPU.
- Calibrated: every answer comes with a probability you can threshold on, not just a label.
- Drop-in: the request and response format is the SystemOne
/v1/systemoneformat, so existing decision-API clients work unchanged. - Open: Apache-2.0 weights, and the training data sources are documented below.
- Trained on disaggregated compute: independent single-GPU machines, no GPU cluster.
About these numbers. iota-decide-4b's score is our own run on the 231-question public JevBench split. The other models' scores are their public leaderboard numbers. The official evaluation on the sealed set is pending, and we'll update this card when it's out.
Quickstart
pip install torch transformers accelerate safetensors huggingface_hub pillow torchvision
import sys
from huggingface_hub import hf_hub_download
# the loader ships in this repo
sys.path.insert(0, hf_hub_download("macrocosm-os/iota-decide-4b", "joint_schema_model.py").rsplit("/", 1)[0])
from joint_schema_model import load_release_model, systemone
model, processor = load_release_model("macrocosm-os/iota-decide-4b", device="cuda")
response = systemone(model, processor, {
"model": "iota-decide-4b",
"state": {
"ticket": "Customer asks for a refund 45 days after purchase.",
"policy": "Refunds are allowed within 30 days of purchase.",
},
"questions": {
"eligible": {"type": "noul", "instructions": "Is the customer eligible for a refund under the policy?"},
"route": {"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"refunds": "Refunds and billing team", "tech": "Technical support", "sales": "Sales"}},
"urgency": {"type": "score", "instructions": "How urgent is this ticket?",
"criteria": {"1": "Low", "2": "Medium", "3": "High"}},
},
})
print(response["answers"])
Output (abridged):
{"eligible": {"type": "noul", "noul": 0.0091}, # 0.9% chance it's allowed: not eligible
"route": {"type": "choice", "choice": "refunds", "confidence": 0.8322, ...},
"urgency": {"type": "score", "probabilities": {"0": 0.4548, "1": 0.3952, "2": 0.15}, ...}}
llama.cpp (GGUF)
Quantized builds are in macrocosm-os/iota-decide-4b-GGUF (Q8_0 4.5 GB, Q4_K_M 2.7 GB). They need llama.cpp 0.7.0 or newer:
llama-server -hf macrocosm-os/iota-decide-4b-GGUF:Q8_0 -b 8192 -ub 8192 --port 9931
# then POST to http://127.0.0.1:9931/v1/systemone
| Question type | What you get |
|---|---|
noul |
probability that the statement is true |
choice |
the chosen option, with a probability for every option |
score |
the chosen level, with a probability for every level |
Ask several questions about the same state in one request. The model decides them jointly.
Results
All numbers below are our own evaluation runs.
| Evaluation | Records | Accuracy |
|---|---|---|
| JevBench public: overall | 231 | 78.8% (182/231) |
| ↳ Easy / Original / Hard | 48 / 72 / 111 | 100% / 97.2% / 57.7% |
| In-distribution test | 71,393 | 83.6% |
| Domains never seen in training | 83,483 | 74.2% |
| Public classification tasks: test / held-out | 21,784 / 15,866 | 86.8% / 80.2% |
| Hard multi-step reasoning cases: test / held-out | 4,707 / 17,853 | 76.9% / 77.5% |
Training
| Base | Qwen3.5-4B-Base |
| Method | LoRA (rank 16) merged into the backbone, plus a joint schema head trained from scratch |
| Objective | soft-target cross-entropy on teacher probabilities, followed by temperature calibration |
| Data | 541k decision records, 1 epoch, max length 4,096 tokens |
| Compute | 4 independent single-GPU machines (NVIDIA A6000), about 26 hours |
Data. About 90% of the records are decision states we generated ourselves: LLM-written workflows, template
states and business / agent scenarios across many domains. They are labelled with teacher probabilities.
The rest comes from open datasets: Open-Jev, civil_comments, typed-decisions, GoEmotions, prompt-injections,
MNLI, SNLI and BoolQ. All sources and their licences are listed in NOTICE. No benchmark data was used for
training.
How it was trained
iota-decide-4b was trained on disaggregated compute: independent single-GPU machines, with no GPU cluster, kept in sync over the internet. It's built with Macrocosmos's IOTA SDK, which will be released publicly soon.
Limitations
- Multi-step arithmetic (date windows, pro-rated amounts) is the weakest area. The model answers in one pass and does not compute step by step.
- Adequacy judgments: it sometimes accepts a response that is missing a requirement.
- Sentiment and topic classification is not its focus, and we left the common non-commercial datasets out.
- It is decision support. Keep a human in the loop for high-stakes medical, legal, credit or hiring decisions.
Compatibility
The weights use the joint-schema layout introduced by Cloudflare/clef, so tooling built for that layout can load this model too.
Licence
Apache-2.0. About 8.9k training records come from MNLI, SNLI and BoolQ, which are under CC BY-SA licences.
These and all other third-party sources are credited in NOTICE.
- Downloads last month
- -
