Instructions to use LiquidAI/d1-omni-600M-MLX-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use LiquidAI/d1-omni-600M-MLX-8bit with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("LiquidAI/d1-omni-600M-MLX-8bit") config = load_config("LiquidAI/d1-omni-600M-MLX-8bit") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
d1-omni-600M-MLX-8bit
d1-omni-600M is a decision model developed by Liquid AI: it answers named, typed questions over a state (text, JSON, images or audio) in one forward pass, with no generated tokens.
This repository is an MLX export of d1-omni-600M in 8-bit for Apple Silicon, run with mlx-vlm. Find more details in the original model card: https://huggingface.co/LiquidAI/d1-omni-600M
🏃 How to run d1-omni-600M
d1 support is in mlx-vlm after 0.7.6. Until the next release, install it from GitHub:
pip install -U git+https://github.com/Blaizzy/mlx-vlm.git
from mlx_vlm import load, predict
model, processor = load("LiquidAI/d1-omni-600M-MLX-8bit")
# Text: several named questions over one state, answered in one pass
questions = {
"refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"},
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Charges, refunds, invoices",
"technical": "App or site faults",
"fraud": "Suspected unauthorised use",
},
},
"urgency": {
"type": "score",
"instructions": "How urgent is this?",
"criteria": ["Can wait", "Today", "Blocking the customer now"],
},
}
result = predict(model, processor, "I was charged twice this month, please refund one of them.", questions)
print(result["answers"])
# Image: the photo is the whole state
cats = {
"type": "choice",
"instructions": "How many cats are there?",
"criteria": {"one": "One", "two": "Two", "more": "Three or more"},
}
print(predict(model, processor, None, {"cats": cats},
images=["http://images.cocodataset.org/val2017/000000039769.jpg"]))
# Audio: one 16 kHz mono clip (a path, URL or array of samples), up to 30 s
kind = {
"type": "choice",
"instructions": "What kind of utterance is this?",
"criteria": {"request": "A request to do something",
"question": "A question asking for information",
"speech": "A speech to an audience"},
}
print(predict(model, processor, None, {"kind": kind},
audio="https://github.com/ggml-org/whisper.cpp/raw/master/samples/jfk.wav"))
Each call returns {"answers": {name: answer}, "usage": {"input_tokens": n, "output_tokens": 0}}. A choice answer has the chosen label in value, plus probabilities and metadata.confidence; a score answer has the expected level in value, plus probabilities and the level legend; a noul (or bool) answer has probability, the probability of yes.
From the command line:
python -m mlx_vlm decide --model LiquidAI/d1-omni-600M-MLX-8bit \
--state "I was charged twice this month, please refund one of them." \
--questions '{"refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}}'
--state is optional with one or more --image options or one --audio.
As a server, with the same request shape on /v1/decisions ("images" or "audio" take URLs, paths or base64 data URIs):
python -m mlx_vlm server --decision-model LiquidAI/d1-omni-600M-MLX-8bit
curl http://127.0.0.1:8080/v1/decisions -H "Content-Type: application/json" -d '{
"state": "I was charged twice this month, please refund one of them.",
"questions": {"refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}}
}'
📏 Precisions
Every precision was checked against the original checkpoint run in float32 with mlx-vlm, which matches the PyTorch reference to about 1e-5 in probability. The check covers 104 text, 41 image and 30 audio answers. "Same top answer" counts answers whose most likely option matches the float32 run; Δp is the largest change in any option's probability.
| Repository | Weights | Size | Same top answer | Max Δp | Mean Δp |
|---|---|---|---|---|---|
| d1-omni-600M-MLX-fp16 | float16 | 1.17 GB | 175/175 | 0.007 | 0.0010 |
| d1-omni-600M-MLX-8bit | 8-bit trunk and audio encoder; vision tower and decision scorer in float16 | 0.73 GB | 175/175 | 0.060 | 0.0083 |
float16 is the recommended precision. The model was trained in float32; float16 keeps its answers, as the original model card reports for GPUs, and 8-bit stays close at about 60% of the size. There is no bfloat16 export: the original model card advises against it, and in this check it changed 2 of the 175 top answers. Four-bit changes a noticeable share of answers, so there is no 4-bit export either. The vision tower and decision scorer are never quantized. This check is a smoke test of agreement, not an accuracy benchmark.
🧪 Recipe
Converted from d1-omni-600M at revision 02b55d7076f1 with mlx-vlm at commit 952d4f6bc65b:
python -m mlx_vlm convert --hf-path LiquidAI/d1-omni-600M --mlx-path d1-omni-600M-MLX-8bit -q --q-bits 8 --q-group-size 64 --dtype float16
The upstream PyTorch .py files were removed after conversion; config.json keeps its auto_map.
Citation
@article{liquidAI2026opend1,
author = {Liquid AI},
title = {Open d1: Edge decision models for text, vision, and audio},
journal = {Liquid AI Blog},
year = {2026},
note = {https://www.liquid.ai/blog/d1-open},
}
@article{liquidai2025lfm2,
title = {LFM2 Technical Report},
author = {Liquid AI},
journal = {arXiv preprint arXiv:2511.23404},
year = {2025}
}
📄 License
This model is released under the LFM 1.0 License, as is the original checkpoint.
- Downloads last month
- 291
8-bit
Model tree for LiquidAI/d1-omni-600M-MLX-8bit
Base model
LiquidAI/LFM2.5-350M-Base