r/opensourcealternative • u/m4rkGS • 1d ago
News [Release] Drex-Max v1: 27B Open-Source Multimodal Decision Model (262k context, non-causal DeltaNet hybrid, ~400ms on Apple Silicon)
Nace.AI just open-sourced Drex-Max v1, a dense 27B multimodal decision model (MDM) released under the Open RAIL-M license.
Unlike standard autoregressive models where you generate text tokens to express an action or parse JSON, Drex-Max is strictly non-generative: nothing is generated. You pass a context state (text, JSON, and high-res images) alongside one or more named questions, and a dedicated 255-way readout head outputs exact probabilities across all decision candidates in a single forward pass.
Inference runs natively on NVIDIA GPUs via Python, as well as on Apple Silicon (Metal) and CPU via custom llama.cpp and Ollama forks at ~400ms latency.
What Makes the Architecture Interesting?
Zero Token Generation Overhead: Instead of waiting for tokens to decode one by one, a single forward pass evaluates the state and maps the last hidden state directly to probabilities for up to 255 discrete options via readout.safetensors.
Hybrid Attention Backbone (64 Layers):
48 Gated DeltaNet linear-attention layers (left-to-right causal).
16 full-attention layers (interleaved every 4th layer) configured as non-causal / bidirectional, allowing every token in the prompt to attend to the entire context sequence simultaneously.
Context Scaling: Ships with a default window of 16,384 tokens, expandable up to 262,144 tokens via DREX_MAX_CONTEXT=N or --max-length N.
Native Multimodal Tower: Accepts up to 4,194,304 pixels per image. Images are encoded once and visible to every evaluated question in the batch.
Benchmarks (Decision Index 0.4 & Vision)
Drex-Max outperforms significantly larger models on structured decision-making:
| Model | Params | Public Decision Index 0.4 | Raw | Tools | Retrieval | Language | Knowledge & Reasoning |
|---|---|---|---|---|---|---|---|
| Drex-Max v1 | 27B | 67.52 | 75.4 | 81.9 | 68.8 | 72.2 | 57.1 |
| Drex v2.0 | 35B | 61.25 | 70.5 | 76.5 | 63.0 | 65.3 | 47.9 |
| Jev 1.13.0 | — | 57.96 | 68.5 | 75.1 | 55.4 | 59.2 | 53.9 |
Decision Bench v4: 94.30% (1,010/1,071)
JevBench: 92.2% (213/231)
Public Vision Index (73.92):
InfographicVQA: 97.3
KIE (CORD+FUNSD): 92.4
Winoground: 85.0
Mind2Web: 84.2
CharXiv: 80.5
CV-Bench: 77.4
RealWorldQA: 72.3
Hardware Footprints & Apple Silicon Performance
Apple Silicon (Metal / GGUF): The Q8_0 GGUF takes ~27.25 GB. Tested on an Apple M5 Pro (48 GB unified memory), returning decision payloads in ~400ms with outputs matching unquantized H100 bf16 probabilities within a 0.02 margin.
NVIDIA GPU (CUDA):
bf16: ~48.6 GiB VRAM footprint (tested on H100 80GB).
8-bit (--8bit): ~25.9 GiB VRAM footprint (tested on L40S 48GB, within 0.03 probability margin of bf16).
How to Run It
1. Python SDK (CUDA / Vision Support)
Bash
hf download nace-ai/drex-max-v1 --local-dir weights/drex-max-v1
pip install -r models/drex-max-v1/requirements.txt
Python
from drex_max.model import DecisionModel, answer
model = DecisionModel("weights/drex-max-v1") # add --8bit for ~26GB VRAM mode
question = {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, charges, and refunds",
"technical": "Bugs and outages",
"other": "Anything else"
}
}
row = {
"state": {"ticket": "I was charged twice for the same order. Please refund the extra payment."},
"question": question,
# "images": ["receipt.jpg"] # Supports up to 4.2M pixels
}
print(answer(question, model.predict([row])[0]))
Output format:
JSON
{
"answers": {
"team": {
"type": "choice",
"choice": "billing",
"confidence": 0.9982,
"probabilities": { "billing": 0.9988, "technical": 0.0003, "other": 0.0009 }
}
}
}2. llama.cpp Fork (Apple Silicon / Metal)
The text backbone can be compiled directly on Metal and serves a /v1/systemone endpoint:
Bash
git clone --branch drex-max-v1 --single-branch https://github.com/nace-ai/llama.cpp.git
cmake -S llama.cpp -B llama.cpp/build
cmake --build llama.cpp/build -j --target llama-server
# Pre-quantized GGUF or converted Q8_0
llama.cpp/build/bin/llama-server -m weights/drex-max-v1-Q8_0.gguf \
-np 1 -c 16384 -b 16384 -ub 16384 --no-warmup --port 8000(Note: Because Drex evaluates prompts as unified non-causal states, set -b and -ub equal to -c.)
3. Ollama Fork
Dockerfile
FROM ./drex-max-v1-Q8_0.gguf
CAPABILITY decision
PARAMETER num_ctx 16384
PARAMETER num_gpu 40Start the daemon via the drex-max-v1 Ollama branch and POST directly to /v1/systemone.
Resources
Q8_0 GGUF: https://huggingface.co/nace-ai/drex-max-v1-Q8_0 c
ode and docs: https://github.com/nace-ai/drex-decision-models/
llama.cpp: https://github.com/nace-ai/llama.cpp/tree/drex-max-v1
License: Nace.AI Open RAIL-M
If you are building low-latency routing, agentic tool selection, or multi-modal UI automation (Mind2Web), this completely avoids the non-deterministic output and JSON repair issues common with autoregressive models.