★ Reading this for free? Get 20 structured AI courses + per-chapter AI tutor — the first chapter of every course free, no card.Start free in 30 seconds

Microsoft · Open-Weight · Apache 2.0

Microsoft's Mage-VL Runs Video Understanding on 8GB VRAM — Here's What It Can and Can't Watch

Mage-VL landed on Hugging Face on 25 July 2026 and its 30-day download counter read 485,964 on 18 August 2026 — heavy pickup for a model three weeks old, though that counter is a rolling window and will have moved by the time you read this. It is a video model small enough to be interesting: 4.74 billion parameters, Apache 2.0, and a vision encoder that reads compressed video the way a codec does rather than chopping it into evenly-spaced screenshots. This page is the fit check: what actually fits on your card, which setup paths exist today, and where the ambition outruns the tooling.

📅 Published: September 13, 2026🔄 Last Updated: September 13, 2026✓ Manually Reviewed

Quick answer: VRAM, quants, and the catch

Mage-VL is 4.74B parameters and 9.48 GB of BF16 weights, so 8GB only works through a quantized build. The one community GGUF release reports 7.56 GiB peak VRAM at a 16K context — but it runs on a patched llama.cpp inside Docker, not Ollama. On Apple Silicon the story is much cleaner: the architecture is merged into mlx-vlm, and a 4-bit conversion is 3.1 GB, with its author reporting a 4.65 GB peak on an M4.

BuildOn-disk sizeRuns with
BF16 safetensors (official)9.48 GB + 1.07 GB gateTransformers ≥ 5.7 / SGLang
GGUF Q8_0 backbone + Q8 vision4.69 GB + 353 MBPatched llama.cpp (Docker)
GGUF Q4_K_M backbone + Q8 vision2.72 GB + 353 MBPatched llama.cpp (Docker)
MLX 8-bit5.35 GBmlx-vlm ≥ 0.6.9
MLX 4-bit3.1 GBmlx-vlm + community plugin
AWQ4.09 GB + 1.07 GB gateTransformers / vLLM-class servers

Every size above is read from the actual file listing on each Hugging Face repository, not estimated — which is why the MLX 8-bit row says 5.35 GB rather than the 5.0 GB its model card quotes; the card is rounding its measured resident floor, the file on disk is 5,348,214,363 bytes. On a 24GB card you can skip quantization entirely — see the full local-model RAM/VRAM table for how a 4B vision model sits next to the text models you already run.

Key takeaways

  • 4.74B parameters, one checkpoint — image understanding, offline video and the streaming event gate all ship in the same weights.
  • Over 75% fewer visual tokens than uniform frame sampling, per the model card, for up to a 3.5x wall-clock speedup.
  • Apache 2.0 — commercial use with no rider.
  • No Ollama, no LM Studio, no Jan. One community GGUF repo, one MLX path, one official Transformers path. That is the whole ecosystem right now.
  • Big video wins over Qwen3-VL-4B on the card's own numbers — and clear losses on OCR-heavy still images.

What it actually is

Two components in one checkpoint: Mage-ViT, a vision encoder trained entirely from scratch, and a Qwen3-4B-Instruct-2507 decoder joined to it by a two-layer MLP projector. The Qwen3 backbone is the only pretrained piece. Microsoft did not initialise the vision tower from a web-scale image-text model — the card reports it was trained on roughly 100M unlabeled images and video frames and still matches encoders trained on billions of pairs.

The interesting part is how it consumes video. A conventional video LLM decodes the file, samples N frames at even intervals, and pushes a dense patch grid through the encoder for each one. Mage-VL instead reads the structure the encoder already produced: anchor (I) frames keep all their patches, predicted (P) frames keep only the patches where the codec spent bits. If nothing moved, nothing gets tokenised. A shared 3D rotary position encoding keeps the spatio-temporal layout intact across the sparse set.

On top of that sits a two-speed design the card calls System 1 / System 2: a lightweight cognition gate watches each rolling codec window and predicts whether anything worth talking about just happened. Only when it opens does the full decoder generate. That gate is trained separately in the final stage with the encoder and language model frozen, and ships as streammind_gate.safetensors — a 1.07 GB sidecar.

VendorMicrosoft
Parameters4,741,793,792 (BF16 tensor count on the HF repo)
Vision encoderMage-ViT — 24 layers, 1024 hidden, 16x16 patches, 2x2 spatial merge, from scratch
Language backboneQwen3-4B-Instruct-2507 — 36 layers, 2560 hidden, 32 heads / 8 KV
Backbone position limit262,144 (config max_position_embeddings — real usable context is far lower in practice)
Codecs acceptedH.264/AVC, HEVC/H.265, or the neural codec DCVC-RT
LicenseApache 2.0
Repo created25 July 2026 (last revision 10 August 2026)
Hugging Facemicrosoft/Mage-VL

Fit by VRAM tier

The lever that decides your VRAM is not the model — it is the context length and the frame budget. A 4.74B model is small. What blows up memory is the number of codec canvases you feed it. The GGUF maintainer measured the same clip at 7.56 GiB with a 16,384-token context and about 10.4 GiB at 32,768 — a 2.8 GiB swing from one setting. Read the table with that in mind.

TierUse this buildWeightsWhat you get
8 GBGGUF Q8_0 + vision Q8_0, ctx 16,3845.04 GB7.56 GiB peak in the maintainer's run on a 50s 1080p clip. Tight but real. Q4_K_M drops weights to 3.07 GB if you need headroom.
12 GBGGUF Q8_0 + vision F16, ctx 16-32K5.35 GB~10.4 GiB at ctx 32,768 per the maintainer's measurement. Room for longer clips and the streaming gate resident.
16 GBThe GGUF project's shipped default profile, or AWQ under Transformers5.04 / 5.16 GBThis is the tier the runtime was tuned for: one slot, F16 KV, 256 sampled frames, 150k pixels per canvas.
24 GBBF16 safetensors, Transformers, full codec path9.48 GB (+1.07 GB gate)No quantization questions at all. Both codec engines, the neural DCVC-RT path, and long clips.
32 GBBF16 + SGLang server9.48 GB (+1.07 GB gate)Enough headroom to serve it as an OpenAI-compatible endpoint and still run large frame budgets.
Apple 16 GB unifiedMLX 4-bit3.1 GB4.65 GB peak and 30.6 tok/s on an M4 for image work, per the 4-bit conversion's own card. Frame-sampled video only.
Apple 24-32 GB unifiedMLX 8-bit5.35 GB~5.0 GB resident floor plus ~5.8 GB activation for 16-frame video at the default 4096-token budget; 85.7 tok/s on an M5 Max, per the conversion's own card.
Apple 48 GB+ unifiedMLX 8-bit at an 8192-token budget (bf16 needs a self-converted checkpoint)5.35 GB, or 8.85 GB resident at bf16The 8192-token budget alone costs ~14.2 GB of activation, which is what actually needs this tier. Note there is no published mlx-community/Mage-VL-bf16 repo — the 8.85 GB bf16 figure is the 8-bit card's own comparison run, so bf16 means converting the checkpoint yourself.

The GGUF and MLX numbers are the respective maintainers' own measurements — the GGUF figures on a Radeon AI PRO R9700 under Vulkan, the MLX figures on an M4 and an M5 Max. None of them are ours: we do not own that Radeon card, and we have not re-run these clips, so treat every figure as the maintainer's claim rather than an independent result. If you are picking Apple hardware for this kind of work, MLX vs CUDA for local AI covers why the unified-memory path behaves so differently from a discrete card.

Setup: the three real paths

There is no one-line install. Pick the path that matches your hardware, and accept that two of the three involve some assembly.

1. Transformers — the official path

This is the reference implementation, and the only one that gives you every capability. It needs Transformers 5.7 or newer, and ffmpeg/ffprobe on your PATH for anything codec-related.

pip install "transformers>=5.7" accelerate pillow torch torchvision \
  opencv-python codec-video-prep

# image
python inference.py --mode offline --image examples/dog.jpg \
  --question "Describe this image in detail."

# video via the traditional codec path (H.264/HEVC)
python inference.py --mode offline --video clip.mp4 \
  --video-backend codec --codec-engine traditional --num-frames 32 \
  --question "Describe this video."

inference.py ships in the model repository. Swap --codec-engine traditional for neural to use the bundled DCVC-RT engine, or --video-backend frames to fall back to plain frame sampling and skip the codec machinery entirely.

2. GGUF — the 8GB path, and the fiddly one

One community repository, JohnTdi/Mage-VL-GGUF, published 11 August 2026. It does not work with the llama.cpp you already have. The project ships pinned Vulkan and CUDA Docker images that clone llama.cpp, apply a runtime patch implementing Mage's temporal patching, 2x2 spatial merger and 3D RoPE, and start llama-server with both GGUF files. Requirements are Linux, Docker Engine, and Docker Compose 2.30 or newer — there is no native macOS or Windows route here.

git clone https://github.com/JohnTDI-cpu/mage-vl-gguf.git
cd mage-vl-gguf
./install.sh   # detects Vulkan/CUDA, picks an 8/16/24-32 GB profile

# then, once it is up:
curl --fail http://localhost:8080/v1/video/analyze \
  -F video=@./clip.mp4 \
  -F 'prompt=Describe the important events in temporal order.' \
  -F max_tokens=256

You can override detection with MAGE_PROFILE=8|16|24|32. The 16 GB profile's exact defaults are documented (16,384 context, 256 sampled frames, 150,000 pixels per canvas, F16 KV cache); the 8 GB profile's are not spelled out, so if you are on an 8GB card, expect to tune MAGE_SAMPLED_FRAMES and MAGE_MAX_PIXELS down yourself.

Quantization cost, per the maintainer's own evaluation: WikiText-2 perplexity moves from 7.6592 at BF16 to 7.6710 at Q8_0 (+0.15%) and 7.8739 at Q4_K_M (+2.80%). On Video-MME the BF16 reference is 64.00, Q8 + vision Q8 scored 63.33, and Q4 + vision Q8 scored 61.96. Q8 is close to free; Q4 costs you about two points of video accuracy.

3. MLX — the cleanest path, if you are on a Mac

The mage_vl architecture was merged into mlx-vlm on 29 July 2026, so no fork or branch install is needed and no PyTorch is required at all.

pip install "mlx-vlm>=0.6.9"

python - <<'PY'
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template

model, processor = load("mlx-community/Mage-VL-8bit")
prompt = apply_chat_template(processor, model.config,
                             "Describe this image in detail.", num_images=1)
print(generate(model, processor, prompt, image=["dog.jpg"], max_tokens=64).text)
PY

The catch: the mlx-community conversions deliberately exclude the DCVC neural-codec runtime and the StreamMind gate weights. So on the MLX path you get image and frame-sampled video, but not the codec-native token reduction that is the model's whole point, and not the proactive streaming gate. A separate community port (sr29/Mage-VL-mlx-4bit) does implement the gate, pulling the weights from the upstream repo, but still notes the codec backend needs the external codec engine.

Benchmarks vs Qwen3-VL-4B

This is the cleanest comparison in open vision-language models right now: same 4B Qwen3 backbone, only the vision encoder differs. All figures below are from Microsoft's model card — vendor-reported, not our measurements.

BenchmarkMage-VLQwen3-VL-4BRead
VideoMME64.059.7General video QA
MLVU-dev68.761.5Long video
VideoEval-Pro45.220.7The largest single gap on the card
Timelens-QVHighlight57.434.9"When did X happen?"
VSI-Bench64.353.3Spatial reasoning
MV-Bench65.166.7Qwen wins
DocVQA-val95.1494.69Effectively a tie
TextVQA-val77.2880.55Qwen wins
CC-OCR Doc32.2539.69Qwen wins clearly

The pattern is consistent and useful: Mage-VL wins anything that depends on when and wherethings happened, and loses on reading small text off a still frame. If your job is "find the moment the delivery van pulled up", this is the better model. If it is "transcribe this scanned invoice", it is not — go to a dedicated OCR model instead.

On OVO-Bench, which tests online video understanding, the card puts Mage-VL at 64.00 overall against Qwen3-VL-4B's 63.00 and a human reference of 92.77 — with Mage-VL taking a large lead on real-time perception (79.84 vs 72.8) while losing on backward tracing (48.15 vs 53.1). For still images specifically, our best local vision-language models comparison is the better guide — and MiniCPM-V remains the lighter option if you only need to look at pictures.

Honest limitations

The model is ready; the tooling is weeks old. That gap is the entire risk of adopting this today.

  • !The ecosystem is one repo deep. One community GGUF conversion, published 11 August 2026 — seventeen days after the model — and sitting in the low hundreds of downloads when we checked. No Ollama entry, no LM Studio or Jan listing. If that maintainer stops, the 8GB path stops with them.
  • !The GGUF route is Linux + Docker only. It rebuilds a patched llama.cpp from pinned source. That is a real install, not a download.
  • !The MLX route drops the headline feature. The mlx-community conversions ship without the neural codec runtime and without the streaming gate. You get a competent 4B video model on a Mac; you do not get codec-native sparsity.
  • !Codec preprocessing is the bottleneck, not inference. Decode ran at 80.66 tok/s in the maintainer's test, but the DCVC-RT plus canvas-construction stage only managed 1.55 fps at 1080p. Video prep, not generation, is what you wait on.
  • !OCR on video frames is weak. The GGUF project found a single general prompt can miss a readable on-screen caption even at maximum visual detail, and built a separate OCR-focused inference pass to work around it. Treat any text-on-screen requirement as needing a second model.
  • !Audio is ignored. The GGUF gateway states audio tracks are discarded. If your question is "what did they say", you need a Whisper pipeline alongside it.

Security cameras and screen recordings

This is the use case that makes a 4.74B video model worth the setup pain — and the honest answer is one camera at reduced resolution, not a whole property. The streaming gate exists precisely so you are not running a 4B model against every frame of an empty driveway. It scores each rolling window, stays quiet on routine content, and only wakes the decoder when something completes.

The GGUF runtime wires this to RTSP/RTMP, HTTP/HLS and local sources, encoding each transport segment once and sharing the embedding between the gate and the triggered response. The maintainer reports throughput on a Radeon AI PRO R9700 of 14.30 fps at 854x480, 6.34 fps at 1280x720, and 1.55 fps at 1920x1080 — which is why the shipped 16 GiB profile accepts a 1080p or 4K source but downsizes it to at most 480 pixels high and analyses at 8 fps. That is a reasonable trade for "did anyone approach the door". It is not enough to read a licence plate.

If what you actually want is object-and-person detection across several cameras with sensible notifications, Frigate with an Ollama model is still the more practical architecture — cheap detection first, a language model only on the clips that matter. Mage-VL is the better fit for the second half of that pipeline: give it the 30-second clip Frigate already flagged and ask what happened in it. Our broader local AI video analysis guide covers the tooling around that pattern, and local AI vision tasks maps which job needs which class of model.

Frequently asked questions

Can Mage-VL really run on 8GB of VRAM?
On the GGUF path, yes — with caveats. The community GGUF release (JohnTdi/Mage-VL-GGUF) measured 7.56 GiB peak VRAM for the Q8 backbone plus Q8 vision projector at a 16,384-token context, 256 sampled frames and a 150,000-pixel codec canvas, analysing a 50.6-second 1080x1920 H.264 clip. That is the maintainer's measurement on a Radeon AI PRO R9700 under Vulkan, not ours. It fits an 8GB card only because the context is capped at 16K; the same setup at 32,768 context used about 10.4 GiB. The full BF16 Transformers checkpoint is 9.48 GB of weights before you load anything else, so BF16 needs 12GB minimum and realistically 16GB.
Is Mage-VL available in Ollama?
No. As of 18 August 2026 there is no mage-vl entry in the Ollama library — ollama.com/library/mage-vl returns a 404 — and no LM Studio or Jan listing. There is exactly one community GGUF repository, and it does not run on upstream llama.cpp either: it ships a runtime patch that implements Mage's temporal patching, 2x2 spatial merger and 3D RoPE, delivered as pinned Vulkan/CUDA Docker images. If you want a one-command pull, Mage-VL is not there yet.
What does "codec-native" actually mean here?
Instead of decoding a video into evenly-spaced frames and pushing a dense grid of patches through the encoder, Mage-VL follows the structure of the codec itself. It splits the stream into anchor (I) frames and predicted (P) frames, keeps every anchor patch, and keeps only the predicted-frame patches where the codec spent bits — the regions with real motion or new detail. Per the model card, that cuts visual tokens by over 75% and delivers up to a 3.5x wall-clock speedup over uniform frame sampling. The encoder is codec-agnostic: H.264/AVC and HEVC feed it motion vectors plus residual energy, while the neural codec DCVC-RT feeds it a learned rate map.
Is Mage-VL better than Qwen3-VL for video?
For video and temporal grounding, the model card says yes, and the margins are large. Same 4B Qwen3 backbone, only the vision encoder swapped: VideoMME 64.0 vs 59.7, MLVU-dev 68.7 vs 61.5, VideoEval-Pro 45.2 vs 20.7, Timelens-QVHighlight 57.4 vs 34.9, VSI-Bench 64.3 vs 53.3. Those are vendor-reported figures. But Qwen3-VL-4B still wins MV-Bench (66.7 vs 65.1), TextVQA (80.55 vs 77.28) and CC-OCR Doc (39.69 vs 32.25). On still images the two are close enough that you would not switch for images alone.
Can I use it to watch a security camera?
That is the use case it was designed for, and it is the one with the most friction. The proactive streaming gate — a lightweight classifier that stays silent on routine footage and wakes the full model only when something happens — ships in the same checkpoint as streammind_gate.safetensors. The GGUF runtime exposes it for RTSP/RTMP and HTTP/HLS sources. But the maintainer measured the codec preprocessing path at 14.30 fps at 854x480, 6.34 fps at 1280x720 and just 1.55 fps at 1920x1080 on a Radeon AI PRO R9700, so a 1080p camera gets downscaled before it is analysed. One camera, downscaled, is realistic. A bank of them is not.
What license is Mage-VL under?
Apache 2.0, confirmed on the model card and in the repository metadata. That covers commercial use with no royalty and no acceptable-use rider. The neural-codec component bundled in the repo ships its own DCVC LICENSE and NOTICE files, and the training datasets are not redistributed, so dataset terms remain separate from the weights.

Where these numbers come from

  • → Parameter count, file sizes, license, architecture and all benchmark figures: the microsoft/Mage-VL model card and repository metadata, read 18 August 2026.
  • → GGUF file sizes, peak VRAM, perplexity, Video-MME/MMBench re-runs and codec fps: the JohnTdi/Mage-VL-GGUF model card and its linked runtime repository. These are the maintainer's measurements on a Radeon AI PRO R9700 under Vulkan.
  • → MLX sizes and speeds: the mlx-community/Mage-VL-8bit and sr29/Mage-VL-mlx-4bit cards, measured by their authors on an M5 Max and an M4 respectively.
  • → Absence from Ollama: ollama.com/library/mage-vl returned 404 on 18 August 2026.

Related

🎯
AI Learning Path

Go from reading about AI to building with AI

20 structured courses. Hands-on projects. Runs on your machine. Start free.

Or own it for life — Lifetime $149 $599, pay once
LM

Written by the Local AI Master Team

The team behind Local AI Master

We build Local AI Master around practical, testable local AI workflows: model selection, hardware planning, RAG systems, agents, and MLOps. The goal is to turn scattered tutorials into a structured learning path you can follow on your own hardware.

✓ Local AI Curriculum✓ Hands-On Projects✓ Open Source Contributor
More on AI Models Directory
See the full AI Models Directory guide.
📚
Free · no account required

Grab the AI Starter Kit — career roadmap, cheat sheet, setup guide

No spam. Unsubscribe with one click.

🎯
AI Learning Path

Found your model? Now build something with it.

25 hands-on courses — RAG, agents, fine-tuning — all running locally. First chapter free, no card.

Or own it for life — Lifetime $149 $599, pay once
Free Tools & Calculators