Phase 12 - Lesson 08

LLaVA-OneVision: Imagen Única, Multiimagen y Video en un Solo Modelo

Antes de LLaVA-OneVision (Li et al., agosto de 2024), el mundo de los VLMs open-weight tenía linajes separados: LLaVA-1.5 para imágenes únicas, modelos de múltiples imágenes como Mantis y VILA, y modelos de video como Video-LLaVA y Video-LLaMA. Cada uno ganaba en su propio benchmark y fallaba en los demás. LLaVA-OneVision propuso que un único currículo de entrenamiento podría entrenar un solo modelo para dominar los tres escenarios, y que los efectos emergentes de transferencia de tareas (habilidades de imagen única exportadas a video, razonamiento multiimagen exportado a imagen única) superaban la suma de los especialistas. La receta es deceptivamente simple: un presupuesto de tokens visuales que se mantiene constante entre escenarios, más un currículo explícito que avanza de imagen única a OneVision (multiimagen) y luego a video. Esta lección analiza el presupuesto, el currículo y los comportamientos emergentes.

Tipo: Build Lenguajes: Python (stdlib, planificador de currículo + solucionador de presupuesto de tokens) Prerrequisitos: Phase 12 · 05 (LLaVA), Phase 12 · 06 (any-resolution) Tiempo: ~180 minutos

Objetivos de Aprendizaje

  • Diseñar un presupuesto de tokens visuales que se mantenga constante para entradas de imagen única, multiimagen y video.
  • Organizar un currículo de entrenamiento que transfiera habilidades de imagen única a video sin sufrir un olvido catastrófico.
  • Explicar por qué un solo modelo supera a los especialistas con el mismo número de parámetros cuando el currículo se realiza correctamente.
  • Nombrar las tres capacidades emergentes reportadas por LLaVA-OneVision: razonamiento multicámara, prompting de conjunto de marcas (set-of-mark) y agente de captura de pantalla de iPhone.

El Problema

La imagen única, la multiimagen y el video exigen características diferentes al modelo.

La imagen única requiere tokens de alta resolución (AnyRes, ~2880 tokens visuales) para capturar OCR y detalles finos. Presupuesto por muestra: una imagen, 2880 tokens.

La multiimagen requiere varias imágenes a resolución moderada (~576 tokens cada una) para que el razonamiento entre imágenes quepa en el contexto. Presupuesto por muestra: 4-8 imágenes, 576 tokens cada una, 2300-4600 tokens.

El video requiere muchos fotogramas (frames) a baja resolución (~196 tokens por fotograma después del pooling) para capturar la dinámica temporal. Presupuesto por muestra: 8-32 fotogramas, 196 tokens cada uno, 1600-6200 tokens.

Si entrena modelos separados, elige un solo presupuesto. Si entrena un solo modelo, necesita que el presupuesto escale de manera sensata entre escenarios sin saturar el contexto.

Antes de OneVision, la respuesta por defecto era "entrenar un escenario e ignorar los demás". Video-LLaVA adaptó video a un modelo de imagen con etapas de entrenamiento adicionales. LLaVA-NeXT agregó soporte multiimagen con división en bloques (tiling). Ninguno de ellos manejaba los tres escenarios de manera limpia.

El Concepto

El presupuesto de tokens de OneVision

LLaVA-OneVision elige un presupuesto unificado de tokens visuales de aproximadamente 3000-4000 tokens por muestra, asignado de manera diferente según el escenario:

  • Imagen única: AnyRes-9 (bloques 3x3 + miniatura), cada bloque a 384 con 729 parches, pooling bilineal agresivo de 2x2 → 182 por bloque. Total: 9 * 182 + 182 = 1820 tokens. O AnyRes-4 a 729 por bloque = 2916 + 729.
  • Multiimagen: cada imagen a resolución moderada (384, sin bloques/tiling), 729 tokens sin pooling. Presupuesto de 6 imágenes → 4374 tokens.
  • Video: 32 fotogramas a resolución 384 con pooling bilineal agresivo de 3x3 → 81 tokens por fotograma. Total: 32 * 81 = 2592 tokens.

La asignación mantiene la cantidad total de tokens aproximadamente constante. El LLM nunca ve un lote (batch) que sature su contexto. El codificador produce una geometría diferente por escenario, pero el LLM consume el mismo presupuesto.

El currículo en tres etapas

LLaVA-OneVision entrena en tres etapas:

  1. SFT de imagen única (etapa SI). Todos los datos son de imagen única más texto. Entrena con entrada de alta resolución AnyRes. Esto enseña percepción, OCR y comprensión detallada. Utiliza datos de LLaVA-NeXT más datos de imagen única específicos de OneVision.
  2. SFT de OneVision (etapa OV). Mezcla imagen única + multiimagen + video (fotogramas muestreados uniformemente). Entrena con el presupuesto unificado de tokens. Esto enseña al modelo a manejar lotes heterogéneos. Sin reinicio de pesos; continúa a partir de la etapa SI.
  3. Transferencia de tareas (etapa TT). Continúa con una mezcla de tareas específicas, típicamente más enfocada en multiimagen o video, según el producto. Ajuste fino opcional para el despliegue.

Crítico: la ordenación del currículo importa. Entrenar primero en video o primero en multiimagen produce un rendimiento de imagen peor que entrenar primero en imagen única, incluso con los mismos datos. El artículo realiza ablaciones explícitas de esto.

Por qué funciona el currículo

El entrenamiento con imagen única construye la base perceptual. Los tokens de parches llevan características visuales detalladas; el LLM aprende a integrarlas con el texto. La multiimagen y el video introducen desafíos estructurales (qué imagen es cuál, qué sucedió primero) que son difíciles de aprender sin una base perceptual sólida.

Si entrena todos los escenarios desde cero juntos, el modelo sufre de subajuste (underfitting) en la percepción (datos de imagen única limitados por lote) y sobreajuste (overfitting) en la estructura (muchos datos de multiimagen / video). Resultado: un modelo que sigue patrones de razonamiento entre imágenes pero es visualmente superficial.

La ordenación del currículo proporciona fuerza de percepción a partir de la etapa SI y, luego, razonamiento composicional/temporal a partir de la etapa OV, sin perder ninguno de los dos.

Habilidades emergentes en múltiples escenarios

El artículo de LLaVA-OneVision reporta tres capacidades emergentes:

  1. Razonamiento multicámara. Entrenado en multiimagen + video por separado; en la inferencia, se le solicita razonar sobre una escena de conducción multicámara. El modelo integra correctamente las vistas a pesar de no haber visto nunca ese formato exacto en el entrenamiento.
  2. Prompting de conjunto de marcas (Set-of-mark). El usuario anota objetos en una imagen con marcas numeradas; el modelo razona sobre "qué está haciendo la marca 3 con respecto a la marca 7". No fue entrenado ni con marcas ni con anotaciones; aprendió de la combinación de alineación espacial (spatial grounding) + referencia multiimagen.
  3. Agente de captura de pantalla de iPhone. El usuario proporciona una captura de pantalla de una pantalla de iPhone y pide planificar el siguiente clic. Entrenado en capturas de pantalla de interfaz de usuario (UI), videos de flujos de trabajo de usuarios y pares de imágenes de antes/después. Se generaliza para el caso de uso de agente.

Estas no son tareas entrenadas; emergen de la estructura composicional del currículo.

Pooling de tokens visuales

El presupuesto de tokens requiere pooling. OneVision utiliza interpolación bilineal en la cuadrícula de parches 2D: 24x24 = 576 parches se convierten en 12x12 = 144 (factor de 2x) o 8x8 = 64 (factor de 3x). El pooling se realiza en el espacio de la cuadrícula de parches, no en el espacio de tokens, para preservar la localidad.

La elección del factor de pooling por escenario es en sí misma un hiperparámetro. Menos pooling = más tokens = representación más rica. Más pooling = menos tokens = caben más fotogramas / imágenes.

LLaVA-OneVision-1.5

La continuación de 2025 (LLaVA-OneVision-1.5, arXiv 2509.23661) es "totalmente abierta" en datos de entrenamiento, pesos de modelo y código. Reduce la brecha con los modelos propietarios en algunos benchmarks y democratiza la receta. Mismo currículo, más datos, mejor LLM base. Ningún cambio de arquitectura.

Contraste con Qwen2.5-VL

Qwen2.5-VL (Lección 12.09) toma decisiones diferentes. Utiliza M-RoPE y FPS dinámico en lugar de pooling fijo. Su presupuesto escala con la entrada: un video de 1 minuto usa más tokens que uno de 5 segundos. LLaVA-OneVision fija el presupuesto y escala el pooling. Ambos enfoques funcionan; intercambian configurabilidad por previsibilidad.

Use It

code/main.py es un planificador de presupuesto y currículo para un VLM al estilo OneVision. Dado un presupuesto de tokens por muestra y una mezcla de escenarios objetivo (por ejemplo, 40% imagen única, 30% multiimagen, 30% video), este:

  • Asigna resolución, factor de pooling y fotogramas por escenario.
  • Verifica que cada escenario quepa en el presupuesto compartido.
  • Informa la cantidad esperada de tokens, FLOPs del LLM y qué escenarios están subtokenizados.
  • Imprime un cronograma de entrenamiento etapa por etapa.

Úselo para planificar un ajuste fino de OneVision o para verificar la consistencia del costo por solicitud de un despliegue de VLM.

Ship It

Esta lección produce outputs/skill-onevision-budget-planner.md. Dada una distribución de tareas objetivo y un presupuesto por muestra, emite el factor AnyRes, el pooling por fotograma, la cantidad de fotogramas de video y los pesos de las etapas del currículo. Úselo siempre que entrene o ajuste un VLM de escenario unificado.

Ejercicios

  1. Su producto admite un 80% de imagen única, un 10% de multiimagen (2-4 imágenes) y un 10% de video (8-16 fotogramas). Diseñe el presupuesto de tokens. ¿Dónde colocaría el presupuesto adicional que ahorra al no realizar una multiimagen pesada?

  2. Lea la Sección 4.3 de LLaVA-OneVision (capacidades emergentes). Proponga una cuarta habilidad emergente que el currículo probablemente desbloquearía pero que el artículo no reportó.

  3. Invierta la ordenación del currículo: entrene primero en multiimagen, luego en imagen única y luego en video. Prediga qué benchmarks se degradan y por qué.

  4. El artículo reporta benchmarks de video entrenados con solo 8 fotogramas por muestra. ¿Se generaliza eso a videos de 30 segundos en la inferencia? ¿Qué se rompe primero: el presupuesto de tokens o el razonamiento temporal?

  5. El pooling bilineal de parches de 24x24 a 12x12 es una reducción de 4x por dimensión. Implemente el pooling en Python estándar y verifique que el promedio sobre cada bloque de 2x2 coincida con la salida bilineal.

Términos Clave

Término Lo que la gente dice Lo que realmente significa
Escenario OneVision "Imagen única, multiimagen o video" Uno de los tres formatos de entrada que maneja el VLM unificado; el presupuesto se mantiene constante en todos ellos
Presupuesto de tokens "Cuántos tokens por muestra" Total de tokens visuales que el LLM ve por muestra de entrenamiento / inferencia, típicamente 3000-4000
Currículo "Orden de entrenamiento" El orden de las etapas (imagen única → multiimagen → video) elegido para la transferencia emergente
Pooling bilineal "Reducción de tokens" Aplicación de interpolación bilineal a la cuadrícula de parches (2D) para reducir la cantidad de tokens preservando la localidad
Habilidad emergente "No entrenado, pero funciona" Capacidad que aparece en la inferencia sin datos de entrenamiento correspondientes, debido a la composición del currículo
AnyRes-k "Configuración de k bloques" k sub-bloques de resolución fija más una miniatura, típicamente k ∈ {4, 9}
Transferencia de tareas "Generalización entre escenarios" Habilidades aprendidas en imagen única que se aplican a video (y viceversa) a través de un backbone compartido

Lecturas Adicionales

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).