Qwen3.6-35B-A3B-Vision-CoreML-fp16

The vision encoder of Qwen/Qwen3.6-35B-A3B, compiled for Core ML in fp16. It lets a Qwen3.6-35B-A3B GGUF answer questions about images in tempo9: a GGUF carries the language model, and tempo9 runs the vision encoder through Core ML, on the GPU or the Neural Engine, instead of from an mmproj file.

Use

With tempo9 1.2.2 or later, --tower auto reads the GGUF's header and fetches this encoder:

tempo9 --hf thinkspread/Qwen3.6-35B-A3B-Q5K-IQ3XXS-GGUF --tower auto

To keep the encoder in a directory of your own, download it and pass the directory:

hf download thinkspread/Qwen3.6-35B-A3B-Vision-CoreML-fp16 \
  --local-dir ~/models/Qwen3.6-35B-A3B-Vision-CoreML-fp16
tempo9 --hf thinkspread/Qwen3.6-35B-A3B-Q5K-IQ3XXS-GGUF \
  --tower ~/models/Qwen3.6-35B-A3B-Vision-CoreML-fp16

thinkspread/Qwen3.6-35B-A3B-Q5K-IQ3XXS-GGUF and this encoder fit a 24 GB Mac together at the default settings.

Then send the image as an image_url data URI to /v1/chat/completions. Any OpenAI client works; with nothing but the standard library:

python3 - photo.png <<'EOF'
import base64, json, sys, urllib.request
img = base64.b64encode(open(sys.argv[1], "rb").read()).decode()
body = {"model": "local", "messages": [{"role": "user", "content": [
    {"type": "image_url", "image_url": {"url": "data:image/png;base64," + img}},
    {"type": "text", "text": "What is in this picture?"}]}]}
req = urllib.request.Request("http://127.0.0.1:11435/v1/chat/completions",
    json.dumps(body).encode(), {"content-type": "application/json"})
print(json.load(urllib.request.urlopen(req))["choices"][0]["message"]["content"])
EOF
  • The matched encoder for Qwen3.6-35B-A3B. Qwen3.6 keeps the vision architecture of Qwen3.5-35B-A3B and retrained its weights: all 333 tensors differ, by 3.2 % (relative L2) overall. The Qwen3.5 encoder also loads with this model, and on the two images below it answered about as well, but this is the one released with the model. How the GGUF is quantized does not matter. For Qwen3.5-35B-A3B use thinkspread/Qwen3.5-35B-A3B-Vision-CoreML-fp16.
  • One image per request, as a data: URI.
  • An image costs about one prompt token per 32Γ—32 pixels, plus two. Images larger than about one megapixel (4096 patches of 16Γ—16) are scaled down, aspect ratio kept.
  • Apple Silicon, macOS 26 or later.

Files

file what it is
qwen35_vit_b1024.mlmodelc encoder for images up to 1024 patches (β‰ˆ 512Γ—512 px)
qwen35_vit_b4096.mlmodelc encoder for images up to 4096 patches (β‰ˆ 1024Γ—1024 px)
tower_meta.json shapes, buckets, and the accuracy measured at export
tower_pos_embed.f32, tower_aux.npz position-embedding table

The two encoders share their weights and differ only in input size; a small image runs on the smaller one.

Accuracy

Measured at export: Core ML fp16 output against the Hugging Face fp32 vision encoder on the exporter's reference images, worst case, norm-weighted cosine similarity.

compute tier cosine
GPU 0.99996
Neural Engine 0.99826

The tempo9 server runs the encoder on Core ML's GPU tier. The Neural Engine row is for apps that move it there to keep the GPU free for the language model.

Checked

Apple M5 Pro, 24 GB, tempo9 1.2.1, thinkspread/Qwen3.6-35B-A3B-Q5K-IQ3XXS-GGUF, greedy, thinking off, two synthetic images:

  • A sign reading "OPEN 9-5", "Closed Mondays" and "Tel 0571-8823-4410" beside a yellow triangle: all three lines transcribed exactly, and the shape and color named correctly.
  • A red circle, a blue square and the text "PIER 37": shapes and colors right; the text was read as "FIRST".

How it was made

The 333 model.visual.* tensors were read from the two safetensors shards of Qwen/Qwen3.6-35B-A3B that hold them, and exported with coremltools 9 into two fixed-size buckets. The exporter gates on three checks: its host-side position tables against transformers, its wrapper against the Hugging Face vision model in fp32, and the Core ML output against that fp32 reference (the table above).

License

Apache 2.0, inherited from the base model.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for thinkspread/Qwen3.6-35B-A3B-Vision-CoreML-fp16

Finetuned
(438)
this model