Estamos lanzando jina-vlm, un modelo de lenguaje visual con 2.4B de parámetros que logra un rendimiento de vanguardia en el cuestionamiento visual multilingüe entre los VLMs abiertos de escala 2B. Al combinar un codificador de visión SigLIP2 con una columna vertebral de lenguaje Qwen3 a través de un conector de agrupación de atención, jina-vlm ofrece un sólido rendimiento en 29 idiomas, a la vez que sigue siendo lo suficientemente eficiente como para ejecutarse en hardware de consumo.
| Modelo | Tamaño | VQA Promedio | MMMB | Multi. MMB | DocVQA | OCRBench |
|---|---|---|---|---|---|---|
| jina-vlm | 2.4B | 72.3 | 78.8 | 74.3 | 90.6 | 778 |
| Qwen2-VL-2B | 2.1B | 66.4 | 71.3 | 69.4 | 89.2 | 809 |
| Qwen3-VL-2B | 2.8B | 71.6 | 75.0 | 72.3 | 92.3 | 858 |
| InternVL3-2B | 2.2B | 69.2 | 73.6 | 71.9 | 87.4 | 835 |
| InternVL3.5-2B | 2.2B | 71.6 | 74.6 | 70.9 | 88.5 | 836 |





tagArquitectura
Dos desafíos han limitado la implementación práctica de VLM: las capacidades multilingües a menudo se degradan durante la adaptación visual, y los VLMs de alta calidad siguen siendo computacionalmente caros. jina-vlm aborda ambos problemas mediante elecciones arquitectónicas cuidadosas (nuestro conector de agrupación de atención reduce los tokens visuales en 4× con un impacto mínimo en el rendimiento) y una receta de entrenamiento que preserva explícitamente las capacidades multilingües.
La innovación arquitectónica clave es nuestro conector de lenguaje visual. En lugar de pasar los 729 tokens visuales por mosaico al modelo de lenguaje, aplicamos una agrupación de atención de 2×2 que reduce esto a 182 tokens, una reducción de 4× con una pérdida mínima de información. El conector funciona de la siguiente manera:
- Fusión de características multicapa: Concatenamos las características de las capas ViT 18 y 24 (la tercera desde el final y la novena desde el final), capturando tanto detalles espaciales de grano fino como semántica de alto nivel.
- Agrupación de atención: Para cada vecindario de parches de 2×2, calculamos una consulta como la media de las características del vecindario, luego aplicamos la atención cruzada para producir una única representación agrupada.
- Proyección SwiGLU: Las características agrupadas se proyectan a la dimensión del modelo de lenguaje a través de una unidad lineal cerrada.
Esta ganancia de eficiencia se describe a continuación:
| Métrica | Sin Agrupación | Con Agrupación | Reducción |
|---|---|---|---|
| Tokens visuales (12 mosaicos + miniatura) | 9,477 | 2,366 | 4.0× |
| FLOPs de prellenado del LLM | 27.2 TFLOPs | 6.9 TFLOPs | 3.9× |
| Memoria de caché KV | 2.12 GB | 0.53 GB | 4.0× |
Dado que el ViT procesa cada mosaico de forma idéntica independientemente de la agrupación, estos ahorros se aplican exclusivamente al modelo de lenguaje, que es el coste dominante durante la inferencia.
tagProcedimiento de Entrenamiento
Un modo de fallo común en el entrenamiento de VLM es el olvido catastrófico: el modelo de lenguaje pierde sus capacidades de solo texto a medida que se adapta a las entradas visuales. Esto es particularmente grave para los modelos multilingües, donde la adaptación visual puede degradar el rendimiento en idiomas que no son el inglés.
Abordamos esto a través de un pipeline de entrenamiento de dos etapas con datos multilingües explícitos y preservación de solo texto.
Etapa 1: Entrenamiento de Alineación
La primera etapa se centra en el anclaje semántico entre idiomas utilizando conjuntos de datos de subtítulos que abarcan diversos dominios visuales: escenas naturales, documentos, infografías y diagramas. Crucialmente, incluimos un 15% de datos de solo texto para mantener la comprensión del lenguaje de la columna vertebral. El conector utiliza una tasa de aprendizaje más alta (2e-4) y un calentamiento más corto que el codificador y el decodificador, lo que le permite adaptarse rápidamente mientras los componentes preentrenados cambian gradualmente.
Etapa 2: Ajuste Fino de Instrucciones
La segunda etapa entrena el seguimiento de instrucciones para las tareas de VQA y razonamiento. Combinamos conjuntos de datos públicos que abarcan VQA académico, comprensión de documentos, OCR, matemáticas y razonamiento, con datos de instrucciones solo de texto para mantener las capacidades lingüísticas.
Los datos combinados comprenden aproximadamente 5 millones de muestras multimodales y 12.000 millones de tokens de texto en 29 idiomas, con aproximadamente la mitad en inglés y el resto en chino, árabe, alemán, español, francés, italiano, japonés, coreano, portugués, ruso, turco, vietnamita, tailandés, indonesio, hindi, bengalí y otros.
tagEmpezando
tagA través de la API de Jina
Proporcionamos una API compatible con OpenAI en https://api-beta-vlm.jina.ai.
tagImagen desde URL
| Formato | Ejemplo |
|---|---|
| URL HTTP/HTTPS | https://example.com/image.jpg |
| URI de datos Base64 | data:image/jpeg;base64,/9j/4AAQ... |
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}'
Imagen local (base64)
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,'$(base64 -i image.jpg)'"}}
]
}]
}'
Consulta solo de texto
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}'
Respuesta en streaming
Añade "stream": true para recibir los tokens a medida que se generan:
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"stream": true,
"messages": [{"role": "user", "content": "Write a haiku about coding"}]
}'
Cuando el servicio se inicia en frío, recibirás:
{
"error": {
"message": "Model is loading, please retry in 30-60 seconds. Cold start takes ~30s after the service scales up.",
"code": 503
}
}
Simplemente vuelve a intentar tu solicitud después de esperar.
tagA través de la CLI
El repositorio de HuggingFace incluye un script infer.py para experimentos rápidos:
# Single image
python infer.py -i image.jpg -p "What's in this image?"
# Streaming output
python infer.py -i image.jpg -p "Describe this image" --stream
# Multiple images
python infer.py -i img1.jpg -i img2.jpg -p "Compare these images"
# Text-only
python infer.py -p "What is the capital of France?"tagA través de Transformers
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
from PIL import Image
# Load model and processor
model = AutoModelForCausalLM.from_pretrained(
"jinaai/jina-vlm",
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto"
)
processor = AutoProcessor.from_pretrained(
"jinaai/jina-vlm",
trust_remote_code=True
)
# Load an image
image = Image.open("document.png")
# Create the conversation
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": "What is the main topic of this document?"}
]
}
]
# Process and generate
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt"
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256, do_sample=False)
response = processor.decode(outputs[0], skip_special_tokens=True)
print(response)tagConclusión
jina-vlm demuestra que los VLMs pequeños pueden lograr una sólida comprensión visual multilingüe a través de una arquitectura cuidadosa y opciones de entrenamiento. El conector de agrupación de atención proporciona una reducción de tokens de 4× con un impacto mínimo en el rendimiento, y la incorporación de datos solo de texto durante el entrenamiento multimodal preserva las capacidades lingüísticas que de otro modo se degradarían.
Observamos varias limitaciones del enfoque actual:
- Sobrecarga de mosaicos: el procesamiento se escala linealmente con el número de mosaicos. Para imágenes de muy alta resolución, esto puede ser significativo. Además, el mosaico puede perjudicar las tareas que requieren una comprensión holística de la escena, como el conteo de objetos o el razonamiento espacial a través de los límites de los mosaicos. La miniatura global mitiga parcialmente esto, pero los enfoques de resolución nativa pueden ser más adecuados para tales tareas.
- Razonamiento multiimagen: el rendimiento en los benchmarks multiimagen es más débil debido a los datos de entrenamiento limitados en este régimen. La optimización para respuestas visuales concisas parece entrar en conflicto con el razonamiento extendido de varios pasos, como lo demuestra la degradación de MMLU-Pro.
El trabajo futuro podría explorar un manejo de resolución más eficiente, mejoras específicas para tareas de conteo y espaciales, e investigar si nuestra receta de entrenamiento multilingüe se transfiere a escalas de modelos más grandes.








