Downloads · 30 days
8
9% of all-time downloads
sahilchachra/tess-4-27b-mxfp8-mlx
tess-4-27b-mxfp8-mlx is a image-text-to-text model from sahilchachra. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for mlx. The card lists the license as apache-2.0.
MLX MX FP8 (micro-scaled 8-bit float) quantization of migtissera/Tess-4-27B, converted with mlx-vlm.
Downloads · 30 days
8
9% of all-time downloads
All-time downloads
90
Public
Parameters
27.4B
28.7 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors28.7 GB · 100%
How the weights are stored.
U3226.9B · 98%
From the Hugging Face model README
MLX MX FP8 (micro-scaled 8-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.
| Base model | Tess-4-27B (Qwen3.5-VL / Qwen3_5ForConditionalGeneration arch, ~27B params, vision + video capable) |
| Quantization | MX FP8 (micro-scaled 8-bit float) |
| Bits per weight | 8.381 |
| Disk size | 27 GB (from ~52 GB bf16) |
| Format | MLX (safetensors) |
| Minimum unified memory | Needs 32GB+ unified memory. Quantization completed cleanly (clean file output, correct bpw), but on the 24GB Apple M4 Pro used for this conversion, loading the model for generation hit a Metal kIOGPUCommandBufferCallbackErrorOutOfMemory — the 27GB of weights plus KV cache/activations exceed what a 24GB machine can allocate to the GPU. Not smoke-tested locally; expected to run fine on higher-memory Apple Silicon (32GB/48GB/64GB+). |
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-mxfp8-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-mxfp8-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.
Not run locally — see the RAM note above. Quantization itself completed without error (correct file layout, correct bits-per-weight reported by mlx_vlm convert). If you run this on a 32GB+ Mac and hit issues, please open a discussion on this repo.