Views
No views yet
| 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 |
| Prompt type | Median tok/s | Example |
|---|---|---|
| Describe (EN, 1 sentence) | 158.7 | "A smiling man in a white lab coat gestures with his right hand..." |
| What text appears? | 90.3 | "OICOMELVANG" |
| Count objects/people | 40.0 | "There are 3 people in the image." |
| Main subject | 59.2 | "The main subject is a man wearing a white lab coat." |
| Describe (ZH) | 130.4 | "他說:"OICOMELVANG, 25158"" |
text_config + vision_config top-level, language_model.* / vision_tower.* / multi_modal_projector.* tensor prefixes) so it slots cleanly into mlx-vlm once a visionpsy_nano handler lands there. Until then, load it via the MLX port bundled in mlx-video (branch visionpsy-mlx-port):1pip install mlx safetensors transformers pillow
2git clone -b visionpsy-mlx-port https://github.com/KaedeTai/mlx-video.git
3cd mlx-video1from huggingface_hub import snapshot_download
2from mlx_video.models.visionpsy_nano import load_visionpsy_nano
3from mlx_video.models.visionpsy_nano.processor import load_processor
4from PIL import Image
5
6# Snapshot from HF (or point at your local folder)
7path = snapshot_download("KaedeTai/VisionPsy-Nano-460M-MLX")
8
9model, cfg = load_visionpsy_nano(path)
10proc = load_processor(path, cfg=cfg)
11
12img = Image.open("photo.jpg").convert("RGB")
13batch = proc("Describe this image in one sentence.", image=img)
14
15tokens = list(model.generate(
16 batch["input_ids"],
17 pixel_values=batch["pixel_values"],
18 image_token_id=batch["image_token_id"],
19 max_new_tokens=64,
20 eos_token_id=proc.tokenizer.eos_token_id,
21))
22print(proc.decode(tokens, skip_special_tokens=True))load_visionpsy_nano reads the repacked config via a compat shim; the original _original_config block is retained inside config.json for round-tripping.decoder.* / vision_encoder.* / MP.* to language_model.* / vision_tower.* / multi_modal_projector.* to match mlx-vlm conventions.lm_* / vit_* keys refactored into nested text_config / vision_config blocks with standard field names (hidden_size, num_hidden_layers, etc.).decoder.rotary_embd.* buffers removed — MLX's nn.RoPE computes frequencies on the fly.