VisionPsy-Nano-460M-Flash-MLX

MLX port of qvac/VisionPsy-Nano-460M-Flash — the latency-optimized sibling of VisionPsy-Nano-460M — converted to run natively on Apple Silicon.

  • Architecture: SigLIP2-base-patch16-512 vision encoder + pixel-shuffle modality projector + SmolLM2-360M-Instruct decoder (same weights as Standard except the projector uses fewer visual tokens per image, ~7 tiles vs ~13 tiles at 512x512)
  • Parameters: ~460M
  • Precision: bfloat16 (~1.0 GB on disk, down from 2.0 GB fp32)
  • Runtime: MLX on Apple Silicon (M-series)
  • License: Apache-2.0

Benchmarks (MLX bf16, M-series)

Measured across 7 images x 5 prompts, 64 max new tokens, greedy decode:

Metric Standard Flash
Avg decode tok/s 99 152
Median decode tok/s 90 157
Avg peak GPU memory 2.64 GB 2.64 GB
Load time ~0.4 s ~0.7 s

Per-prompt-type medians (Flash):

Prompt type Median tok/s Example
Describe (EN, 1 sentence) 198.5 "A man in a white lab coat with the name 'De WARON' on it stands behind a desk..."
What text appears? 96.9 "De Wooning"
Count objects/people 61.4 "1"
Main subject 170.1 "The main subject is a man wearing a white lab coat with the name 'De Woon' and a logo on it."
Describe (ZH) 221.2 "这是一...話是柯尼特, 黃色胸部..."

Flash gets the biggest speedups on text-heavy images (receipts: ~295 tok/s, neon text: ~244 tok/s) where fewer visual tokens still capture the content.

Usage

Layout matches mlx-vlm conventions. Until mlx-vlm adds a visionpsy_nano handler, load via the MLX port at KaedeTai/mlx-video @ visionpsy-mlx-port:

from huggingface_hub import snapshot_download
from mlx_video.models.visionpsy_nano import load_visionpsy_nano
from mlx_video.models.visionpsy_nano.processor import load_processor
from PIL import Image

path = snapshot_download("KaedeTai/VisionPsy-Nano-460M-Flash-MLX")

model, cfg = load_visionpsy_nano(path)
proc = load_processor(path, cfg=cfg)

img = Image.open("photo.jpg").convert("RGB")
batch = proc("Describe this image in one sentence.", image=img)

tokens = list(model.generate(
    batch["input_ids"],
    pixel_values=batch["pixel_values"],
    image_token_id=batch["image_token_id"],
    max_new_tokens=64,
    eos_token_id=proc.tokenizer.eos_token_id,
))
print(proc.decode(tokens, skip_special_tokens=True))

Attribution

See also

Downloads last month
-
Safetensors
Model size
0.5B params
Tensor type
BF16
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

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

Model tree for KaedeTai/VisionPsy-Nano-460M-Flash-MLX

Finetuned
(1)
this model