---
title: d1-Omni-2B-MLX-8bit
canonical_url: "https://www.modelscope.cn/models/LiquidAI/d1-Omni-2B-MLX-8bit"
md_url: "https://www.modelscope.cn/models/LiquidAI/d1-Omni-2B-MLX-8bit.md"
repository: LiquidAI/d1-Omni-2B-MLX-8bit
last_updated: 2026-10-27
license: other
model_type:
  - lfm3_omni
architectures:
  - D1Model
base_model:
  - LiquidAI/d1-Omni-2B
base_model_relation: quantized
parameters: 924.6M
tensor_type:
  - F16
  - U32
library_name:
  - mlx
  - safetensors
  - pytorch
frameworks:
  - pytorch
language:
  - en
  - ar
  - zh
  - fr
  - de
  - it
  - ja
  - ko
  - pt
  - es
  - vi
  - th
  - id
  - hi
  - ru
  - pl
downloads: 7
stars: 0
tags:
  - liquid
  - lfm3
  - edge
  - decision
  - classification
  - calibration
  - system-one
  - multimodal
  - vision
  - audio
  - mlx
---

# d1-Omni-2B-MLX-8bit

> d1-Omni-2B-MLX-8bit - LiquidAI 在 ModelScope 开源的模型。8-bit MLX version of d1-Omni-2B for Apple Silicon. The weights take 2.71 GB.

LiquidAI/d1-Omni-2B-MLX-8bit 是 ModelScope 魔搭社区上的 924.6M 参数机器学习模型，采用 other 许可，基于 LiquidAI/d1-Omni-2B 构建。

- **Repository**: LiquidAI/d1-Omni-2B-MLX-8bit
- **License**: other
- **Parameters**: 924.6M
- **Base model**: LiquidAI/d1-Omni-2B
- **Tags**: liquid, lfm3, edge, decision, classification, calibration, system-one, multimodal, vision, audio, mlx
- **Downloads**: 7
- **Stars**: 0
- **Last updated**: 2026-10-27

Source: https://www.modelscope.cn/models/LiquidAI/d1-Omni-2B-MLX-8bit

---

<div align="center">
  <img
    src="https://huggingface.co/LiquidAI/LFM3-1.7B/resolve/main/assets/liquid-ai-banner.webp"
    alt="Liquid AI"
    style="width: 100%; max-width: 100%; height: auto; display: block; margin: 0;"
  />
  <div align="center" style="display: flex; justify-content: center; align-items: center; gap: 1.25em; margin: 8px 0 1.7rem; padding: 0; line-height: 1.3;">
    <a href="https://console.liquid.ai/dashboard" style="display: inline-flex; align-items: center; gap: 6px;"><img src="https://huggingface.co/LiquidAI/LFM3-1.7B/resolve/main/assets/icons/api.svg" width="16" height="16" alt="" aria-hidden="true" style="display: block; flex: 0 0 16px; width: 16px; height: 16px; margin: 0;" /><strong>API</strong></a>
    <a href="https://playground.liquid.ai/" style="display: inline-flex; align-items: center; gap: 6px;"><img src="https://huggingface.co/LiquidAI/LFM3-1.7B/resolve/main/assets/icons/try.svg" width="16" height="16" alt="" aria-hidden="true" style="display: block; flex: 0 0 16px; width: 16px; height: 16px; margin: 0;" /><strong>Try</strong></a>
    <a href="https://docs.liquid.ai/lfm/getting-started/welcome" style="display: inline-flex; align-items: center; gap: 6px;"><img src="https://huggingface.co/LiquidAI/LFM3-1.7B/resolve/main/assets/icons/docs.svg" width="16" height="16" alt="" aria-hidden="true" style="display: block; flex: 0 0 16px; width: 16px; height: 16px; margin: 0;" /><strong>Docs</strong></a>
    <a href="https://www.liquid.ai/blog/lfm3" style="display: inline-flex; align-items: center; gap: 6px;"><img src="https://huggingface.co/LiquidAI/LFM3-1.7B/resolve/main/assets/icons/blog.svg" width="16" height="16" alt="" aria-hidden="true" style="display: block; flex: 0 0 16px; width: 16px; height: 16px; margin: 0;" /><strong>Blog</strong></a>
  </div>
</div>

# d1-Omni-2B-MLX-8bit

8-bit MLX version of [d1-Omni-2B](https://huggingface.co/LiquidAI/d1-Omni-2B) for Apple Silicon. The weights take 2.71 GB.

d1-Omni-2B is a decision model for text, pictures, video, and audio. It answers named, typed questions over a state with calibrated probabilities in one forward pass, without generating tokens. Questions can be written or spoken.

The language model uses 8-bit affine quantization with groups of 64. The vision tower, audio encoder, projectors and norms stay in FP16. Against the original checkpoint run in float32, it kept all 59 test answers and moved probabilities by at most 0.008.

Find architecture and usage details in the [original model card](https://huggingface.co/LiquidAI/d1-Omni-2B).

## Use with MLX-VLM
<hr style="margin: -0.7em 0 1.2em 0; border: 0; border-top: 1px solid rgba(127, 127, 127, 0.3);" />

Support for d1 in [MLX-VLM](https://github.com/Blaizzy/mlx-vlm) is in progress. We will update this card when an MLX-VLM release supports it.

```python
import numpy as np
from mlx_vlm import load
from mlx_vlm.utils import load_image

model, processor = load("LiquidAI/d1-Omni-2B-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", "shipping": "Delivery and parcels",
                          "technical": "App or site faults"}},
    "topics": {"type": "choice", "multiple": True, "instructions": "Which topics does the message raise?",
               "criteria": {"billing": "Payments and charges", "delivery": "Shipping and parcels",
                            "login": "Signing in to the account"}},
    "urgency": {"type": "score", "instructions": "How urgent is this ticket?", "criteria": ["low", "medium", "high"]},
}
out = model.system_one("I was charged twice and my parcel never arrived. Please refund one charge.", questions)
a = out["answers"]
print(round(a["refund"]["noul"], 2), a["team"]["choice"], a["topics"]["choices"],
      a["urgency"]["legend"][str(int(a["urgency"]["score"]))])
# 0.94 billing ['billing', 'delivery'] medium

# Picture: the photo is the whole state
image = load_image("http://images.cocodataset.org/val2017/000000039769.jpg")
out = model.system_one(None, {
    "cats": {"type": "number", "instructions": "How many cats are there?", "range": [0, 10], "step": 1},
    "remote": {"type": "box", "instructions": "Where is the remote control on the left?"},
}, media=[image])
a = out["answers"]
print(a["cats"]["number"], {k: round(v, 2) for k, v in a["remote"]["box"].items()})
# 2.0 {'top': 0.15, 'bottom': 0.24, 'left': 0.06, 'right': 0.27}

# Audio: three short beeps over quiet noise, 16 kHz mono
rate = 16000
clip = np.random.default_rng(0).normal(0, 0.003, 4 * rate).astype(np.float32)
for start in (0.5, 1.5, 2.5):
    clip[int(start * rate):int(start * rate) + 3200] += 0.3 * np.sin(2 * np.pi * 880 * np.arange(3200) / rate)
out = model.system_one(None, {
    "beeps": {"type": "number", "instructions": "How many beeps are there?", "range": [0, 10], "step": 1},
    "speech": {"type": "noul", "instructions": "Does someone speak in the recording?"},
}, media=[{"type": "audio", "audio": clip, "sampling_rate": rate}])
a = out["answers"]
print(a["beeps"]["number"], a["speech"]["noul"] > 0.5)
# 3.0 False
```

`model.system_one` returns `{"answers": {name: answer}, "usage": {...}}`, and `model.system_one_batch` takes several requests. The original model card describes every question type and answer field.

From the command line, the answers print as JSON:

```bash
python -m mlx_vlm decide --model LiquidAI/d1-Omni-2B-MLX-8bit \
  --state "I was charged twice this month. Please refund one of the charges." \
  --questions '{"refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}}'
```

More options in the [MLX guide](https://docs.liquid.ai/deployment/on-device/mlx).
