hpcai-tech/Open-Sora-v2
Open-Sora-v2 es un modelo abierto de generación de vídeo desarrollado por HPC-AI Technology para producir vídeos de alta calidad a partir de texto o de una imagen de referencia. La versión 2.0 incluye un modelo de 11B parámetros compatible con resoluciones de 256px y 768px, admite generación texto-a-vídeo e imagen-a-vídeo en un único modelo, y está optimizada especialmente para flujos imagen-a-vídeo. El proyecto busca democratizar la producción eficiente de vídeo mediante herramientas, pesos y documentación abiertos.
Como usar
Instalación:
# create a virtual env and activate (conda as an example)
conda create -n opensora python=3.10
conda activate opensora
# download the repo
git clone https://github.com/hpcaitech/Open-Sora
cd Open-Sora
# Ensure torch >= 2.4.0
pip install -v . # for development mode, `pip install -v -e .`
pip install xformers==0.0.27.post2 --index-url https://download.pytorch.org/whl/cu121 # install xformers according to your cuda version
pip install flash-attn --no-build-isolation
Descarga del modelo desde Hugging Face:
pip install "huggingface_hub[cli]"
huggingface-cli download hpcai-tech/Open-Sora-v2 --local-dir ./ckpts
Generación texto-a-vídeo a 256px:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea"
Generación texto-a-vídeo a 768px con varias GPU:
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "raining, sea"
Generación imagen-a-vídeo:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --cond_type i2v_head --prompt "A plump pig wallows in a muddy pond on a rustic farm, its pink snout poking out as it snorts contentedly. The camera captures the pig's playful splashes, sending ripples through the water under the midday sun. Wooden fences and a red barn stand in the background, framed by rolling green hills. The pig's muddy coat glistens in the sunlight, showcasing the simple pleasures of its carefree life." --ref assets/texts/i2v.png
Control de movimiento:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --motion-score 4
Refinamiento de prompt con OpenAI:
export OPENAI_API_KEY=sk-xxxx
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --refine-prompt True
Reproducibilidad:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --sampling_option.seed 42 --seed 42
Funcionalidades
- Generación texto-a-vídeo mediante pipeline texto-a-imagen-a-vídeo apoyado en Flux para mejorar la calidad.
- Generación imagen-a-vídeo usando una imagen de referencia y un prompt descriptivo.
- Soporte para resoluciones 256x256 y 768x768 con el modelo de 11B parámetros.
- Opciones de relación de aspecto como 16:9, 9:16, 1:1 y 2.39:1.
- Control de longitud con `--num_frames`, usando valores de tipo 4k+1 por debajo de 129 frames.
- Control de movimiento mediante `--motion-score`, incluido modo dinámico con evaluador automático.
- Refinamiento de prompts con ChatGPT mediante `--refine-prompt True`.
- Reproducibilidad mediante semillas de muestreo y generación múltiple con `--num-sample`.
- Aceleración multi-GPU con ColossalAI, tensor parallelism para 256px y sequence parallelism para 768px.
- Licencia Apache 2.0 y pesos en formato Safetensors.
Casos de uso
- Crear vídeos cortos a partir de prompts de texto para prototipos creativos, investigación o contenido audiovisual.
- Animar una imagen de referencia manteniendo la coherencia visual del sujeto o escena inicial.
- Evaluar y comparar modelos abiertos de generación de vídeo frente a sistemas como Sora, HunyuanVideo o Step-Video.
- Investigar entrenamiento, ajuste fino y evaluación de modelos de vídeo generativo abiertos.
- Generar muestras reproducibles para experimentos con distintas semillas, puntuaciones de movimiento, resoluciones y relaciones de aspecto.