---
title: Vision ingest on a Mac
summary: How long GroundSlate's vision models take to describe a still and a six-frame video chunk on Apple Silicon, using the prompts the app actually sends.
---

# Vision ingest on a Mac

How long GroundSlate's vision models take to describe a still and a six-frame video chunk on Apple Silicon, using the prompts the app actually sends.

## Machines

- [MacBook Pro, Apple M3 Max, 64 GB unified memory](/resources/groundslate/benchmarks/machines/macbook-pro-m3-max-64): Reference Mac

## The measurement

- Machine: MacBook Pro, Apple M3 Max, 64 GB unified memory
- Run: 2026-08-27, 2026-08-27-macbook-pro-m3-max-64
- Sidecar: mlx-vlm 0.6.10, json_object, max_tokens 4000, APC off, continuous batching on

## Still and video chunk speed by model

- Still: One photograph, resized to 768 px on the long edge, sent with the still prompt GroundSlate uses.
- Video chunk: Six frames at 768 px in order, asking for the JSON GroundSlate ingests. A real ingest chunk is larger: up to 14 frames at 1568 px.

| Model | Repo | Size | Still | Still prefill | Still decode tok/s | Still tok | Still vs default | Video chunk | Video chunk tok | Video chunk vs default |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Gemma 4 E4B | `mlx-community/gemma-4-e4b-it-4bit` | 5.2 GB | 3.49s | 0.87s | 52 | 136 | 1.00× | 7.86s | 323 | 1.00× |
| Gemma 4 E2B | `mlx-community/gemma-4-e2b-it-4bit` | 3.0 GB | 2.88s | 1.20s | 79 | 132 | 0.83× | 10.97s | 578 | 1.40× |
| Qwen3-VL 4B | `mlx-community/Qwen3-VL-4B-Instruct-4bit` | 3.1 GB | 3.12s | 1.05s | 77 | 159 | 0.89× | 14.14s | 665 | 1.80× |
| Gemma 4 26B-A4B | `mlx-community/gemma-4-26b-a4b-it-4bit` | 15.5 GB | 3.13s | 0.97s | 71 | 153 | 0.90× | 11.83s | 635 | 1.51× |
| Qwen3-VL 8B | `mlx-community/Qwen3-VL-8B-Instruct-4bit` | 5.8 GB | 5.89s | 2.02s | 46 | 179 | 1.69× | 24.72s | 737 | 3.15× |
| Gemma 4 12B | `mlx-community/gemma-4-12B-it-4bit` | 8.1 GB | 6.45s | 1.96s | 34 | 154 | 1.85× | 27.49s | 627 | 3.50× |

Derived from the same medians:

- Gemma 4 E4B, 26 ms/tok still, 39 tok/s still wall, 24 ms/tok video chunk, 41 tok/s video chunk wall
- Gemma 4 E2B, 22 ms/tok still, 46 tok/s still wall, 19 ms/tok video chunk, 53 tok/s video chunk wall
- Qwen3-VL 4B, 20 ms/tok still, 51 tok/s still wall, 21 ms/tok video chunk, 47 tok/s video chunk wall
- Gemma 4 26B-A4B, 20 ms/tok still, 49 tok/s still wall, 19 ms/tok video chunk, 54 tok/s video chunk wall
- Qwen3-VL 8B, 33 ms/tok still, 30 tok/s still wall, 34 ms/tok video chunk, 30 tok/s video chunk wall
- Gemma 4 12B, 42 ms/tok still, 24 tok/s still wall, 44 ms/tok video chunk, 23 tok/s video chunk wall

## Findings

On chunks, Qwen3-VL 4B writes tokens as fast as E4B, about 60 per second, but writes about twice as many, so it takes 1.8 times as long. Speculative decoding and MTP do not run with json_object, so output length decides the time.
Gemma 4 26B-A4B describes a still in 3.13 seconds, a little faster than E4B. The dense 12B is the slowest at 6.45 seconds. On chunks, 26B writes about twice as many tokens as E4B, so it takes longer even though it writes them faster.

## Prompts

### Still

```
You are a still-photo analyst. Look at this single photograph. Reply ONLY with compact JSON: {"desc":"a full paragraph of 4-6 factual sentences about this photograph. Cover, in this order: who is present and what they are doing; where this is and what kind of place it is; the notable objects and any text visible on signs, screens or clothing; the light, weather and time of day if they are apparent; and anything distinctive worth remembering about the moment. Write only what you can SEE. Do not speculate about feelings, relationships or backstory, do not pad with generic phrases, and never begin a sentence with 'The image shows' or 'This photo captures' — state the observation directly","subject":"<what the main subject is>","shot":"wide|medium|close|macro","setting":"indoor|outdoor|unknown","venue_type":"<what KIND of place this is: beach, restaurant, playground, living room, parking lot, forest trail, ... or unknown>","notable_objects":["<up to 5 salient objects>"]}. Answer "unknown" for setting or venue_type whenever you are unsure — abstaining costs you nothing. venue_type is a KIND of place, never a NAME: 'a beach', not 'Bondi Beach'. CRITICAL: never invent or guess the name of any person or business. Do NOT read a name off signage or clothing and attribute it to a person. Describe people generically — 'a woman', 'a child on a swing', 'a man in a red jacket'. Use a person's name ONLY if it is explicitly supplied to you in the context above; otherwise use no name at all. NAME OBJECTS SPECIFICALLY when you can actually identify them: 'a can of Coca-Cola' beats 'a drink', 'a yellow school bus' beats 'a vehicle'. Read product labels and use the brand when it is legible. But do NOT guess a specific dish, product, or place name if you are unsure — describe what you actually see (shape, colour, setting), not a confident wrong label. Trust any provided context over your assumptions.
```

### Video chunk

```
You are watching one continuous segment of a video (t=0.00s to 12.00s), given as 6 frames in chronological order:
Image 1 = t=0.00s
Image 2 = t=2.00s
Image 3 = t=4.00s
Image 4 = t=6.00s
Image 5 = t=8.00s
Image 6 = t=10.00s
No people have been identified in this segment.
Describe this video segment. Reply ONLY with JSON:
{"shots":[{"start":<sec>,"end":<sec>,"desc":"<=20 words","subject":"<s>","shot":"wide|medium|close|macro","motion":"static|slow|fast","center_x":<0..1>,"setting":"indoor|outdoor|unknown","venue_type":"<kind>","notable_objects":["<up to 5>"]}],"best_segment":{"start":<sec>,"end":<sec>,"reason":"<=15 words"},"track":[{"t":<sec>,"x":<0..1>} x6],"summary":"2-4 factual sentences. Each subject AT MOST ONCE.","visual_kind":"footage"}
```

## Methodology

- Machine: MacBook Pro, Apple M3 Max, 64 GB unified memory
- Engine: mlx, mlx-vlm 0.6.10
- Sidecar: mlx_vlm.server on 127.0.0.1:8788
- Batching: Continuous batching on
- APC: Off
- Response format: json_object
- Max tokens: 4000
- Warmup: 1 discarded, then 3 stills and 2 chunks
- Speculative decoding: off
- Default model: mlx-community/gemma-4-e4b-it-4bit
- Models locked: Yes
- Chunk note: The timed chunk used six frames and the same JSON schema as ingest. Ingest also adds a longer set of rules about merging shots and naming people, which the timed prompt leaves out.

## Models and tools

### Gemma 4 E2B

- Repo: `mlx-community/gemma-4-e2b-it-4bit`
- Maker: Google DeepMind
- License: [Apache License 2.0](https://ai.google.dev/gemma/docs/gemma_4_license)
- Size: 3.0 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/gemma-4-e2b

### Gemma 4 E4B

- Repo: `mlx-community/gemma-4-e4b-it-4bit`
- Maker: Google DeepMind
- License: [Apache License 2.0](https://ai.google.dev/gemma/docs/gemma_4_license)
- GroundSlate default
- Size: 5.2 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/gemma-4-e4b

Still output:

```json
{
  "desc": "Three individuals are visible, with the woman in the foreground smiling while looking off into the distance. They are situated outdoors on a walkway overlooking a large body of water, possibly the ocean. In the background to the left, a Ferris wheel is partially visible. The scene is bathed in the warm, golden light of either sunrise or sunset. The subjects are dressed in casual attire, and the composition focuses on the expansive view.",
  "subject": "smiling woman",
  "shot": "medium",
  "setting": "outdoor",
  "venue_type": "seaside walkway",
  "notable_objects": [
    "Ferris wheel",
    "railing",
    "ocean"
  ]
}
```

Video chunk output:

```json
{
  "shots": [
    {
      "start": 0.0,
      "end": 2.0,
      "desc": "A young woman smiles while looking out at the ocean at sunset.",
      "subject": "Young woman",
      "shot": "medium",
      "motion": "slow",
      "center_x": 0.3,
      "setting": "outdoor",
      "venue_type": "rooftop",
      "notable_objects": [
        "ocean",
        "sunset"
      ]
    },
    {
      "start": 2.0,
      "end": 4.0,
      "desc": "The woman continues to smile, with others visible behind her.",
      "subject": "Young woman",
      "shot": "medium",
      "motion": "static",
      "center_x": 0.3,
      "setting": "outdoor",
      "venue_type": "rooftop",
      "notable_objects": [
        "ocean",
        "sunset"
      ]
    },
    {
      "start": 4.0,
      "end": 6.0,
      "desc": "The scene remains the same, capturing the beautiful sunset view.",
      "subject": "Group of people",
      "shot": "medium",
      "motion": "static",
      "center_x": 0.5,
      "setting": "outdoor",
      "venue_type": "rooftop",
      "notable_objects": [
        "ocean",
        "sunset"
      ]
    }
  ],
  "best_segment": {
    "start": 0.0,
    "end": 6.0,
    "reason": "Establishes the setting and mood of the scene."
  },
  "track": [
    {
      "t": 0.0,
      "x": 0.3
    },
    {
      "t": 2.0,
      "x": 0.3
    },
    {
      "t": 4.0,
      "x": 0.3
    },
    {
      "t": 6.0,
      "x": 0.3
    }
  ],
  "summary": "The video captures a group of young people enjoying a beautiful sunset view from an elevated location. The main subject, a young woman, smiles warmly while looking out over the vast ocean. The setting appears to be a rooftop or high vantage point overlooking the water.",
  "visual_kind": "footage"
}
```

### Gemma 4 12B

- Repo: `mlx-community/gemma-4-12B-it-4bit`
- Maker: Google DeepMind
- License: [Apache License 2.0](https://ai.google.dev/gemma/docs/gemma_4_license)
- Size: 8.1 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/gemma-4-12b

### Gemma 4 26B-A4B

- Repo: `mlx-community/gemma-4-26b-a4b-it-4bit`
- Maker: Google DeepMind
- License: [Apache License 2.0](https://ai.google.dev/gemma/docs/gemma_4_license)
- Size: 15.5 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/gemma-4-26b-a4b

### Qwen3-VL 4B

- Repo: `mlx-community/Qwen3-VL-4B-Instruct-4bit`
- Maker: Alibaba
- License: [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)
- Size: 3.1 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/qwen3-vl-4b

### Qwen3-VL 8B

- Repo: `mlx-community/Qwen3-VL-8B-Instruct-4bit`
- Maker: Alibaba
- License: [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)
- Size: 5.8 GB
- Tools: list_models, set_vision_model, index_video, index_image, process_video, reindex_clips, name_video, summarize_video
- Page: /resources/groundslate/benchmarks/vision/qwen3-vl-8b
