Image-Text-to-Text
MLX
Safetensors
English
Chinese
visionpsy_nano
vlm
vision-language-model
apple-silicon
siglip2
smollm2
conversational
Instructions to use KaedeTai/VisionPsy-Nano-460M-Flash-MLX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use KaedeTai/VisionPsy-Nano-460M-Flash-MLX with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("KaedeTai/VisionPsy-Nano-460M-Flash-MLX") config = load_config("KaedeTai/VisionPsy-Nano-460M-Flash-MLX") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
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
- Original model: Tether AI Research / QVAC — qvac/VisionPsy-Nano-460M-Flash (Apache-2.0)
- MLX port + weight repack: KaedeTai
- Base components: SigLIP2 (Google), SmolLM2 (Hugging Face)
See also
- Standard variant: KaedeTai/VisionPsy-Nano-460M-MLX
- Original release blog + benchmarks: qvac/VisionPsy-Nano-460M
- MLX port source: github.com/KaedeTai/mlx-video @ visionpsy-mlx-port
- Downloads last month
- -
Model size
0.5B params
Tensor type
BF16
·
Hardware compatibility
Log In to add your hardware
Quantized