tess-4-27b-mxfp4-mlx

MLX MX FP4 (micro-scaled 4-bit float) quantization of migtissera/Tess-4-27B, converted with mlx-vlm.

Tess-4-27B is a thinking-native, agentic 27B model built on Qwen/Qwen3.6-27B, post-trained on 64K-token long-context agentic traces plus a reasoning style distilled from a three-model teacher ensemble (Opus-4.8, GPT-5.5, GLM-5.2). It's multimodal (inherits Qwen3.6's vision tower — text and image input) and reasons via explicit <think>...</think> blocks before answering.

Architecture

Base model Tess-4-27B (Qwen3.5-VL / Qwen3_5ForConditionalGeneration arch, ~27B params, vision + video capable)
Quantization MX FP4 (micro-scaled 4-bit float)
Bits per weight 4.449
Disk size 14 GB (from ~52 GB bf16)
Format MLX (safetensors)
Minimum unified memory Runs comfortably on 24GB+ unified memory Macs. Smoke-tested on an Apple M4 Pro (24GB) — loads and generates coherent, on-topic output.

Usage

from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
from mlx_vlm.utils import load_config

model_path = "sahilchachra/tess-4-27b-mxfp4-mlx"
model, processor = load(model_path, trust_remote_code=True)
config = load_config(model_path, trust_remote_code=True)

prompt = apply_chat_template(processor, config, "Explain the difference between TCP and UDP.", num_images=0)
out = generate(model, processor, prompt, image=None, max_tokens=1024, verbose=False)
print(out.text if hasattr(out, "text") else out)

For image input, pass an image path/URL and set num_images=1 in apply_chat_template, and pass the image to generate(..., image=<path_or_url>).

CLI:

mlx_vlm.generate --model sahilchachra/tess-4-27b-mxfp4-mlx \
  --prompt "Explain the difference between TCP and UDP." \
  --max-tokens 1024

This model uses the Qwen3.5-family chat template with explicit <think>...</think> reasoning blocks — allow a generous max_tokens budget (1024+) so generation doesn't cut off mid-thought.

Smoke test

Verified via mlx_vlm.generate (text-only, image=None) with the model's Qwen3.5-family chat template, on an Apple M4 Pro (24GB unified memory):

Prompt: "Explain the difference between TCP and UDP in two sentences."
Output: Here's a thinking process:
1. **Analyze User Input:**
   - **Topic:** TCP vs UDP
   - **Constraint:** Explain the difference in exactly two sentences.
2. **Identify Key Differences:**
   - TCP (Transmission Control Protocol): Connection-oriented, reliable, guarantees delivery, ordered, error-checked, slower due to overhead.
   - UDP ...
Prompt: "Write a haiku about the ocean at night."
Output: Thinking Process:
1. **Analyze the Request:**
   - Topic: Ocean at night.
   - Form: Haiku (5-7-5 syllable structure).
2. **Brainstorming Imagery & Keywords:**
   - Visuals: Moon, stars, reflection, dark water, waves, foam, bioluminescence ...

Both outputs were truncated at max_tokens=80 mid-reasoning (this is a thinking-native model — allow a much larger max_tokens budget, e.g. 1024+, to reach the final <think>...</think> answer). Quantization preserves the model's signature deliberate, step-by-step reasoning style intact.

Other MLX variants

Credits

Downloads last month
42
Safetensors
Model size
6B params
Tensor type
U8
·
U32
·
BF16
·
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sahilchachra/tess-4-27b-mxfp4-mlx

Base model

Qwen/Qwen3.6-27B
Quantized
(37)
this model