qwen3-vl-2b
A Core AI bundle of Qwen/Qwen3-VL-2B-Instruct for the Aether SDK (iOS and macOS 27+).
- Source:
Qwen/Qwen3-VL-2B-Instructat revision89644892e4d85e24eaac8bacfd4f463576704203, licence Apache-2.0. The licence is included asLICENSE.Qwen/Qwen3-VL-2B-Instructdeclares apache-2.0 in its model card but ships no licence file;LICENSEis the canonical text from apache.org. - Changes from the source: converted from PyTorch to Core AI (
.aimodel) by Aether forge (recipeqwen3-vl-2b@3). Weights are int8-linear-perblock32 (8-bit weights). Two assets per variant: the text tower (these weights) and the vision encoder (float16 weights, float32 compute), a separate-visionasset that loads only for image turns. The tokenizer files are the source's own. - Input: text and images (
imageInput); text out.
Variants
| Variant | Platform | Arch | Compute | Compiled | Assets | Download |
|---|---|---|---|---|---|---|
macos-any-gpu |
macos | any | gpu | no (specialized on first load) | qwen3_vl_2b-vision.aimodel 814.9 MB, qwen3_vl_2b.aimodel 1.83 GB |
2.66 GB |
ios-any-gpu |
ios | any | gpu | no (specialized on first load) | qwen3_vl_2b-vision.aimodel 814.9 MB, qwen3_vl_2b.aimodel 1.83 GB |
2.66 GB |
Verification
Every row is a record in verification/ about exactly these bytes (matched by bundle digest). Reference rows
are strict T2 passes of the unquantized export on the same fixture, in verification/reference/.
| Variant | Tier | Result | Detail | Device | OS build | Compute | Record |
|---|---|---|---|---|---|---|---|
ios-any-gpu |
T2 | pass | 18/18 strict; profile quantized-8bit; fixture 7cfe8f0add2a4f6a |
iPhone18,2 | 24A437 | target | d6f97d20 |
ios-any-gpu |
T2 | pass | 7/7 strict; profile quantized-8bit; fixture 26eb0569fc25e644 |
iPhone18,2 | 24A437 | target | fd089f9d |
macos-any-gpu |
T2 | pass | 7/7 strict; profile quantized-8bit; fixture 26eb0569fc25e644 |
Mac17,6 | 26A428 | gpu | 247be5b7 |
macos-any-gpu |
T2 | pass | 18/18 strict; profile quantized-8bit; fixture 7cfe8f0add2a4f6a |
Mac17,6 | 26A428 | gpu | 2913acba |
macos-any-gpu |
T2 | pass | 6/7 strict; profile quantized-8bit; budgeted: square-colors; fixture 26eb0569fc25e644 |
Mac17,6 | 26A428 | cpuOnly | d88791d3 |
macos-any-gpu |
T2 | pass | 18/18 strict; profile quantized-8bit; fixture 7cfe8f0add2a4f6a |
Mac17,6 | 26A428 | cpuOnly | f861c82b |
macos-any-gpu |
T3 | pass | vision-shapes-v1; 91.2% vs reference 91.2%; 80 items |
Mac17,6 | 26A428 | gpu | 72234db1 |
| unquantized reference (not published) | T2 | pass | 7/7 strict; profile strict; fixture 26eb0569fc25e644 |
Mac17,6 | 26A428 | gpu | bc7e5f16 |
| unquantized reference (not published) | T2 | pass | 18/18 strict; profile strict; fixture 7cfe8f0add2a4f6a |
Mac17,6 | 26A428 | gpu | d2d7ee33 |
The quantized profile also requires: T2 strict on the unquantized reference export (met by the reference row).
Use
aether run qwen3-vl-2b --prompt "Hello"
aether run qwen3-vl-2b --image photo.jpg --prompt "What is in this picture?"
import Aether
let aether = try Aether()
let chat = try await aether.chat("qwen3-vl-2b")
let photo = URL(fileURLWithPath: "photo.jpg")
let reply = try await chat.respond(to: ChatMessage(role: .user, content: [
.image(ImageInput(.url(photo))), .text("What is in this picture?"),
]))
print(reply.text)
Model tree for aether-models/qwen3-vl-2b
Base model
Qwen/Qwen3-VL-2B-Instruct