Mage-VL-mlx-4bit / README.md
sr29's picture
Update README.md
c39d802 verified
|
Raw
History Blame Contribute Delete
2.82 kB
---
license: apache-2.0
base_model: microsoft/Mage-VL
tags:
- mlx
- apple-silicon
- vision-language
- image-text-to-text
- video
- streaming
pipeline_tag: image-text-to-text
library_name: mlx
---
# Mage-VL 4-bit (MLX, Apple Silicon)
An **MLX** (4-bit) conversion of [microsoft/Mage-VL](https://huggingface.co/microsoft/Mage-VL) —
a 5B image/video vision-language model (Qwen3-4B text backbone + a from-scratch
**Mage-ViT** "Codec-ViT" vision encoder) — that runs on Apple Silicon.
Port code, converter, and validators: **https://github.com/rsravanreddy/Mage-VL-MLX**
- Weights: `3.1 GB` (4-bit, group size 64)
- Runs image, video (frame-sampling), and the **streaming event gate** locally on a Mac.
## Usage
```bash
# 1. install the MLX stack + register the mage_vl plugin
pip install mlx mlx-lm mlx-vlm numpy pillow tokenizers jinja2 av
git clone https://github.com/rsravanreddy/Mage-VL-MLX && cd Mage-VL-MLX
ln -s "$PWD/mage_vl" "$(python -c 'import mlx_vlm,os;print(os.path.dirname(mlx_vlm.__file__))')/models/mage_vl"
# 2. download these weights
hf download sr29/Mage-VL-mlx-4bit --local-dir mage-vl-mlx
# 3. run (image or video)
python scripts/generate.py --mlx mage-vl-mlx --tokenizer-src mage-vl-mlx \
--image path/to/image.jpg --prompt "Describe this image."
python scripts/generate.py --mlx mage-vl-mlx --tokenizer-src mage-vl-mlx \
--video path/to/video.mp4 --num-frames 8 --prompt "What is happening?"
```
## Performance (Apple M4, 16GB)
| model | weights | image decode | image peak RAM |
|-------|--------:|-------------:|---------------:|
| 4-bit | 3.1 GB | 30.6 tok/s | 4.65 GB |
| 8-bit | 5.0 GB | 19.1 tok/s | 6.55 GB |
4-bit is recommended for 16GB; 8-bit gives richer output if you have RAM.
## Validation
- **Image preprocessing**: bit-exact vs the HF `Qwen2VLImageProcessor` (max_abs_diff 0.0).
- **Vision tower**: numerically matches the reference weights end-to-end
(`max_abs_diff 3.0e-4`, fp32, full 24 layers).
- **Streaming Mamba mixer**: matches a canonical selective-scan reference (`4.3e-7`).
- **Generation**: qualitatively correct on image + video.
- **Not yet done**: full end-to-end logit parity vs the HF model (memory-gated);
the codec (token-reduction) video backend needs the external codec engine.
## Streaming
Mage-VL's proactive **event gate** (`streammind_gate`) is ported
(`mage_vl/streaming.py`). See `scripts/stream.py` for a per-frame silent/speak
timeline. Note: the gate weights (`streammind_gate.safetensors`) are separate and
downloaded from the upstream Mage-VL repo.
## License & attribution
Apache-2.0. Derivative of [microsoft/Mage-VL](https://huggingface.co/microsoft/Mage-VL)
(Apache-2.0); reuses the Qwen3 language model from
[mlx-vlm](https://github.com/Blaizzy/mlx-vlm). Weights converted, not retrained.