--- pipeline_tag: image-text-to-text license: apache-2.0 base_model: Qwen/Qwen3-VL-8B-Thinking library_name: zeromodels language: - en tags: - keras - zeromodels - qwen3_vl - qwen3-vl - multimodal - vision - image-text-to-text - pytorch - jax - tf --- # Run Qwen3-VL with Keras 3: JAX, PyTorch, or TensorFlow [![GitHub](https://img.shields.io/badge/GitHub-ZeroModels-181717?logo=github)](https://github.com/IMvision12/ZeroModels) [![Docs](https://img.shields.io/badge/Docs-Qwen3--VL-1f6feb)](https://imvision12.github.io/ZeroModels/qwen3_vl/) [![HuggingFace](https://img.shields.io/badge/HuggingFace-Qwen3--VL-ffd21e?logo=huggingface&logoColor=black)](https://huggingface.co/collections/zeromodels/qwen3-vl-6a8eae21fc80cae7d2f56fe0) # zeromodels/qwen3-vl-8b-thinking Pure-**Keras 3** conversion of [`Qwen/Qwen3-VL-8B-Thinking`](https://huggingface.co/Qwen/Qwen3-VL-8B-Thinking) for [zeromodels](https://github.com/IMvision12/ZeroModels). One implementation runs unmodified on **TensorFlow / Torch / JAX**. This is the **8B** 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](https://huggingface.co/Qwen/Qwen3-VL-8B-Thinking). Paper: [Qwen3 Technical Report (arXiv:2505.09388)](https://arxiv.org/abs/2505.09388) · [HF Papers](https://huggingface.co/papers/2505.09388) Paper: [Qwen2.5-VL Technical Report (arXiv:2502.13923)](https://arxiv.org/abs/2502.13923) · [HF Papers](https://huggingface.co/papers/2502.13923) Paper: [Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution (arXiv:2409.12191)](https://arxiv.org/abs/2409.12191) · [HF Papers](https://huggingface.co/papers/2409.12191) Paper: [Qwen-VL: A Frontier Large Vision-Language Model with Versatile Abilities (arXiv:2308.12966)](https://arxiv.org/abs/2308.12966) · [HF Papers](https://huggingface.co/papers/2308.12966) ## ✨ Quick start ### Text-only ```python 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-8b-thinking") processor = Qwen3VLProcessor.from_weights("zeromodels/qwen3-vl-8b-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])) ``` ### Image + text ```python 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-8b-thinking") processor = Qwen3VLProcessor.from_weights("zeromodels/qwen3-vl-8b-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 | Hub | | --- | --- | | `qwen3-vl-2b-instruct` | [zeromodels/qwen3-vl-2b-instruct](https://huggingface.co/zeromodels/qwen3-vl-2b-instruct) | | `qwen3-vl-2b-thinking` | [zeromodels/qwen3-vl-2b-thinking](https://huggingface.co/zeromodels/qwen3-vl-2b-thinking) | | `qwen3-vl-4b-instruct` | [zeromodels/qwen3-vl-4b-instruct](https://huggingface.co/zeromodels/qwen3-vl-4b-instruct) | | `qwen3-vl-4b-thinking` | [zeromodels/qwen3-vl-4b-thinking](https://huggingface.co/zeromodels/qwen3-vl-4b-thinking) | | `qwen3-vl-8b-instruct` | [zeromodels/qwen3-vl-8b-instruct](https://huggingface.co/zeromodels/qwen3-vl-8b-instruct) | | `qwen3-vl-8b-thinking` | [zeromodels/qwen3-vl-8b-thinking](https://huggingface.co/zeromodels/qwen3-vl-8b-thinking) | | `qwen3-vl-32b-instruct` | [zeromodels/qwen3-vl-32b-instruct](https://huggingface.co/zeromodels/qwen3-vl-32b-instruct) | | `qwen3-vl-32b-thinking` | [zeromodels/qwen3-vl-32b-thinking](https://huggingface.co/zeromodels/qwen3-vl-32b-thinking) | ## Special Thanks A huge thank you to the Qwen team at Alibaba for creating and releasing these models. License: Apache 2.0.