Feature Extraction
Transformers
Safetensors
English
penguinvl_vision_encoder
multi-modal
large-language-model
vision-language-model
vision-encoder
custom_code
Instructions to use tencent/Penguin-Encoder with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tencent/Penguin-Encoder with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="tencent/Penguin-Encoder", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("tencent/Penguin-Encoder", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| metrics: | |
| - accuracy | |
| base_model: | |
| - Qwen/Qwen3-0.6B | |
| library_name: transformers | |
| tags: | |
| - multi-modal | |
| - large-language-model | |
| - vision-language-model | |
| - vision-encoder | |
| <p align="center"> | |
| <img src="https://cdn-uploads.huggingface.co/production/uploads/6258a6455ea3a0a9b6de3f22/mIMYeUFquGSbm89lT61TG.png" width="160" /> | |
| </p> | |
| <h2 align="center">Vision Encoder of Penguin-VL</h2> | |
| <h4 align="center"> | |
| Exploring the Efficiency Limits of VLM with LLM-based Vision Encoders | |
| </h4> | |
| <h4 align="center"> | |
| <b>Project Page:</b> <a href="https://penguin-vl.github.io">penguin-vl.github.io</a> | | |
| <b>GitHub:</b> <a href="https://github.com/tencent-ailab/Penguin-VL">tencent-ailab/Penguin-VL</a> | | |
| <b>arXiv:</b> <a href="https://arxiv.org/abs/2603.06569">2603.06569</a> | |
| <br><br> | |
| <a href="https://penguin-vl.github.io"><img src="https://img.shields.io/badge/Project-Page-green?logo=github" alt="Project Page"></a> | |
| <a href="https://github.com/tencent-ailab/Penguin-VL"><img src="https://img.shields.io/badge/GitHub-Repo-blue?logo=github" alt="GitHub Badge"></a> | |
| <a href="https://huggingface.co/spaces/tencent/Penguin-VL"><img src="https://img.shields.io/badge/HuggingFace-Spaces-yellow?logo=huggingface" alt="Hugging Face Spaces"></a> | |
| <a href="https://arxiv.org/abs/2603.06569"><img src="https://img.shields.io/badge/arXiv-2603.06569-b31b1b.svg?logo=arxiv" alt="arXiv"></a> | |
| </h4> | |
| --- | |
| ## π° News | |
| * **2026.03** β PenguinVL-Encoder now available for general use. | |
| * **2026.03** β Released PenguinVL-2B, PenguinVL-8B. | |
| --- | |
| ## π Model Overview | |
| PenguinVL is a compact Vision-Language Model, designed to explore the efficiency limits of small-scale VLMs. | |
| Unlike most existing VLMs that rely on contrastive-pretrained vision encoders (e.g., CLIP/SigLIP), Penguin-VL initializes its vision encoder directly from a **text-only LLM**. This design avoids the objective mismatch between contrastive learning and autoregressive language modeling, enabling tighter alignment between visual representations and the language backbone. | |
| ### Key Characteristics | |
| - π§ **LLM-based Vision Encoder** | |
| The vision encoder is adapted from a pretrained text LLM (Qwen3-0.6B), modified with bidirectional attention and 2D-RoPE for spatial modeling. | |
| This provides strong semantic priors and native compatibility with the downstream LLM. | |
| --- | |
| ## π§ͺ Quick Start β Transformers Inference | |
| ```python | |
| import torch | |
| from transformers import AutoModel, AutoImageProcessor | |
| from transformers.image_utils import load_image | |
| model_name = "tencent/Penguin-Encoder" | |
| image_path = "your_img.jpg" | |
| images = load_image(image_path) | |
| model = AutoModel.from_pretrained( | |
| model_name, | |
| trust_remote_code=True, | |
| device_map="auto", | |
| torch_dtype=torch.bfloat16, | |
| attn_implementation="flash_attention_2", | |
| ) | |
| processor = AutoImageProcessor.from_pretrained(model_name, trust_remote_code=True) | |
| inputs = processor(images=images, merge_size=1) | |
| inputs = {k: torch.tensor(v).cuda() for k, v in inputs.items()} | |
| if "pixel_values" in inputs: | |
| inputs["pixel_values"] = inputs["pixel_values"].to(torch.bfloat16) | |
| image_features = model(**inputs) | |
| ``` | |
| ## π Model Zoo | |
| | Model | Base Model | HF Link | | |
| | -------------------- | ------------ | ------------------------------------------------------------ | | |
| | PenguinVL-8B | Qwen3-8B | [tencent/Penguin-VL-8B](https://huggingface.co/tencent/Penguin-VL-8B) | | |
| | PenguinVL-2B | Qwen3-1.7B | [tencent/Penguin-VL-2B](https://huggingface.co/tencent/Penguin-VL-2B) | | |
| | PenguinVL-Encoder | Qwen3-0.6B | [tencent/Penguin-Encoder](https://huggingface.co/tencent/Penguin-Encoder) | | |
| ## π Main Results | |
| Ablation Study: | |
|  | |
| Main Results can see the ablation section in our paper. | |
| ## Citation | |
| If you find Penguin-VL useful for your research and applications, please cite using this BibTeX: | |
| ```bibtex | |
| @article{Penguin-VL, | |
| title={Penguin-VL: Exploring the Efficiency Limits of VLM with LLM-based Vision Encoders}, | |
| author={Boqiang Zhang and Lei Ke and Ruihan Yang and Qi Gao and Tianyuan Qu and Rossell Chen and Dong Yu and Leoweiliang}, | |
| journal={arXiv preprint arXiv:2603.06569}, | |
| year={2026} | |
| } | |
| ``` |