Downloads · 30 days
843
11% of all-time downloads
zeromodels/qwen3-vl-2b-thinking
qwen3-vl-2b-thinking is a image-text-to-text model from zeromodels. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for zeromodels. The card lists the license as apache-2.0.
[](https://github.com/IMvision12/ZeroModels) [](https://imvision12.github.io/ZeroModels/qwen3vl/) [](https://huggingface.co/collections/zeromodels/qwen3-vl-6a8eae21fc80cae7d2f56fe0)
Downloads · 30 days
843
11% of all-time downloads
All-time downloads
7.9K
Public
Repo size
4.3 GB
Likes
0
Public
Click a slice to open those files.
.h54.3 GB · 100%
From the Hugging Face model README
Pure-Keras 3 conversion of Qwen/Qwen3-VL-2B-Thinking for zeromodels. One implementation runs unmodified on TensorFlow / Torch / JAX. This is the 2B variant, served here as image + text -> text via Qwen3VLProcessor; weights are stored in bfloat16.
For model details, license, and usage terms, see the upstream model card.
Paper: Qwen3 Technical Report (arXiv:2505.09388) · HF Papers
Paper: Qwen2.5-VL Technical Report (arXiv:2502.13923) · HF Papers
Paper: Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution (arXiv:2409.12191) · HF Papers
Paper: Qwen-VL: A Frontier Large Vision-Language Model with Versatile Abilities (arXiv:2308.12966) · HF Papers
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from zeromodels.models.qwen3_vl import Qwen3VLTextGenerate, Qwen3VLProcessor
model = Qwen3VLTextGenerate.from_weights("zeromodels/qwen3-vl-2b-thinking")
processor = Qwen3VLProcessor.from_weights("zeromodels/qwen3-vl-2b-thinking")
inputs = processor(conversation=[
{"role": "user", "content": [{"type": "text", "text": "Hello, who are you?"}]}
])
outputs = model.generate(**inputs, max_new_tokens=64)
print(processor.decode(outputs[0]))
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from PIL import Image
from zeromodels.models.qwen3_vl import Qwen3VLConditionalGenerate, Qwen3VLProcessor
model = Qwen3VLConditionalGenerate.from_weights("zeromodels/qwen3-vl-2b-thinking")
processor = Qwen3VLProcessor.from_weights("zeromodels/qwen3-vl-2b-thinking")
inputs = processor(conversation=[
{"role": "user", "content": [
{"type": "image", "image": Image.open("photo.jpg")},
{"type": "text", "text": "Describe this image in one sentence."},
]}
])
outputs = model.generate(**inputs, max_new_tokens=64)
print(processor.decode(outputs[0]))
Load any Qwen3-VL variant the same way with from_weights("zeromodels/<variant>"):
| Variant | Hub |
|---|---|
qwen3-vl-2b-instruct | zeromodels/qwen3-vl-2b-instruct |
qwen3-vl-2b-thinking | zeromodels/qwen3-vl-2b-thinking |
qwen3-vl-4b-instruct | zeromodels/qwen3-vl-4b-instruct |
qwen3-vl-4b-thinking | zeromodels/qwen3-vl-4b-thinking |
qwen3-vl-8b-instruct | zeromodels/qwen3-vl-8b-instruct |
qwen3-vl-8b-thinking | zeromodels/qwen3-vl-8b-thinking |
qwen3-vl-32b-instruct | zeromodels/qwen3-vl-32b-instruct |
qwen3-vl-32b-thinking | zeromodels/qwen3-vl-32b-thinking |
A huge thank you to the Qwen team at Alibaba for creating and releasing these models.
License: Apache 2.0.