Lance: El modelo unificado de 3B de ByteDance para comprensión, generación y edición de imágenes y videos
Lance de ByteDance es un modelo multimodal unificado de 3B parámetros que maneja comprensión, generación y edición de imágenes/videos con benchmarks competitivos.
ByteDance ha lanzado como código abierto Lance, un modelo multimodal unificado nativo de 3B parámetros activos que maneja comprensión, generación y edición de imágenes y videos dentro de un solo marco. Entrenado desde cero con una receta de múltiples tareas por etapas en hasta 128 GPUs A100, Lance logra un rendimiento competitivo en múltiples benchmarks a pesar de su tamaño relativamente pequeño.
Por qué Lance es importante
La mayoría de los modelos multimodales actuales están especializados (solo generación o solo comprensión) o requieren un número masivo de parámetros (7B–20B+) para unificar capacidades. Lance demuestra que un modelo de 3B puede igualar o superar a modelos más grandes en tareas de generación de imágenes, edición de imágenes, generación de videos y comprensión de videos. Esto es significativo para:
- Eficiencia de implementación: Menores requisitos de VRAM (GPU de 40GB+) e inferencia más rápida
- Accesibilidad para investigación: Menor presupuesto computacional para entrenamiento y ajuste fino
- Arquitectura unificada: Un solo modelo para múltiples tareas sin cabezales específicos por tarea
Arquitectura y entrenamiento
Lance es un modelo unificado nativo, lo que significa que usa una sola arquitectura tanto para tareas de comprensión como de generación. Detalles clave:
- Parámetros activos: 3B (no parámetros totales, sino los activados durante la inferencia)
- Entrenamiento: Receta de múltiples tareas por etapas desde cero
- Cómputo: Hasta 128 GPUs A100
- Resolución: Hasta 768×768 para imágenes, 480p a 12 FPS para video
Tareas compatibles
Lance admite siete tipos de tareas de forma nativa:
| Tarea | Descripción |
|---|---|
| t2i | Generación de texto a imagen |
| t2v | Generación de texto a video |
| i2v | Generación de imagen a video |
| image_edit | Edición de imágenes |
| video_edit | Edición de videos |
| x2t_image | Comprensión de imágenes (subtitulado, VQA) |
| x2t_video | Comprensión de videos (subtitulado, QA) |
Instalación y configuración
Requisitos
- Python 3.10+
- CUDA 12.4+
- GPU con al menos 40GB de VRAM (probado en A100)
Inicio rápido
git clone https://github.com/bytedance/Lance.git
cd Lance
conda create -n Lance python=3.11 -y
conda activate Lance
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu126
pip install -r requirements.txt
pip install flash-attn==2.8.3 --no-build-isolation
Descargar los pesos del modelo desde Hugging Face:
from huggingface_hub import snapshot_download
save_dir = "./downloads/"
repo_id = "bytedance-research/Lance"
cache_dir = save_dir + "/cache"
snapshot_download(
cache_dir=cache_dir,
local_dir=save_dir,
repo_id=repo_id,
local_dir_use_symlinks=False,
resume_download=True,
allow_patterns=["*.json", "*.safetensors", "*.bin", "*.py", "*.md", "*.txt", "*.pth"]
)
Ejemplos de inferencia
Texto a video
bash inference_lance.sh \
--TASK_NAME t2v \
--MODEL_PATH downloads/Lance_3B_Video \
--RESOLUTION video_480p \
--NUM_FRAMES 121 \
--VIDEO_HEIGHT 480 \
--VIDEO_WIDTH 848 \
--SAVE_PATH_GEN results/t2v
Imagen a video (¡Nuevo!)
bash inference_lance.sh \
--TASK_NAME i2v \
--MODEL_PATH downloads/Lance_3B_Video \
--RESOLUTION video_480p \
--NUM_FRAMES 61 \
--VIDEO_HEIGHT 480 \
--VIDEO_WIDTH 848 \
--SAVE_PATH_GEN results/i2v
Texto a imagen
bash inference_lance.sh \
--TASK_NAME t2i \
--MODEL_PATH downloads/Lance_3B \
--RESOLUTION image_768res \
--VIDEO_HEIGHT 768 \
--VIDEO_WIDTH 768 \
--SAVE_PATH_GEN results/t2i
Edición de video
bash inference_lance.sh \
--TASK_NAME video_edit \
--MODEL_PATH downloads/Lance_3B_Video \
--RESOLUTION video_480p \
--SAVE_PATH_GEN results/video_edit
Comprensión de imágenes
bash inference_lance.sh \
--TASK_NAME x2t_image \
--MODEL_PATH downloads/Lance_3B \
--RESOLUTION image_768res \
--SAVE_PATH_GEN results/x2t_image
Parámetros clave
| Parámetro | Valor por defecto | Descripción |
|---|---|---|
MODEL_PATH |
downloads/Lance_3B |
Ruta a los pesos (Lance_3B o Lance_3B_Video) |
NUM_GPUS |
1 | Número de GPUs |
VALIDATION_NUM_TIMESTEPS |
30 | Pasos de eliminación de ruido |
CFG_TEXT_SCALE |
4.0 | Escala de guía libre de clasificador |
NUM_FRAMES |
50 | Máximo 121 para video |
ENHANCE_PROMPT |
false | Habilitar reescritura de prompts (requiere clave API de OpenAI) |
Rendimiento en benchmarks
Lance logra resultados competitivos en múltiples benchmarks:
Generación de imágenes (GenEval)
- General: 0.90 (iguala a TUNA-7B, supera a Janus-Pro-7B con 0.80)
- Colores: 0.97 (mejor entre todos los modelos)
- Posición: 0.87 (empata con TUNA-7B)
Edición de imágenes (GEdit-Bench)
- Promedio: 7.30 (supera a InternVL-U 1.7B con 6.66 y a BAGEL con 6.52)
Generación de video (VBench)
- Puntuación total: 85.11 (supera a TUNA 1.5B con 84.06 y a Hunyuan Video con 83.43)
Demo de Gradio
Lance incluye una interfaz local de Gradio para uso interactivo:
python lance_gradio.py --server-name 0.0.0.0 --server-port 7860
Esto proporciona una interfaz web para todas las tareas compatibles.
Hoja de ruta
El equipo planea lanzar código de ajuste fino, permitiendo la personalización para dominios o tareas específicas.
Limitaciones
- Proyecto de investigación, no un producto pulido
- La calidad de salida varía según los prompts, resoluciones y complejidad del movimiento
- Entrenado hasta imágenes de 768×768 y video de 480p
- Requiere GPU con 40GB+ de VRAM
Conclusión
Lance representa un paso significativo hacia modelos multimodales unificados eficientes. Con 3B parámetros activos, demuestra que modelos más pequeños pueden competir con modelos mucho más grandes cuando se entrenan con una receta de múltiples tareas bien diseñada. Para desarrolladores e investigadores que buscan experimentar con comprensión y generación unificada de imágenes/videos, Lance proporciona un punto de partida práctico y de código abierto.
Comience aquí: Repositorio de GitHub | Modelo en Hugging Face | Informe técnico