Introdução geral
O Pyramid Flow é um método eficiente de geração de vídeo autorregressivo baseado na técnica Flow Matching. O método permite a geração e a descompressão de conteúdo de vídeo com maior eficiência computacional por meio da interpolação entre diferentes resoluções e níveis de ruído. O Pyramid Flow é capaz de gerar vídeos de 10 segundos de alta qualidade com resolução de 768p a 24 FPS e oferece suporte à geração de imagem para vídeo. Toda a estrutura é otimizada de ponta a ponta, usando um único modelo DiT, treinado em 20,7 mil horas de treinamento da GPU A100.
Experiência on-line: https://huggingface.co/spaces/Pyramid-Flow/pyramid-flow
Lista de funções
- Geração eficiente de vídeoGera vídeo de 10 segundos de alta qualidade com resolução de 768p a 24 FPS.
- Geração de imagem para vídeoSuporte para geração de vídeo a partir de imagens.
- Suporte a várias resoluções: Os pontos de verificação do modelo estão disponíveis nas resoluções 768p e 384p.
- Descarga da CPUDescarregamento da CPU: Há suporte para dois tipos de descarregamento da CPU para reduzir os requisitos de memória da GPU.
- Suporte a várias GPUsScripts de inferência de várias GPUs: fornece scripts de inferência de várias GPUs que suportam paralelismo de sequência para economizar memória por GPU.
Usando a Ajuda
Configurações ambientais
- Use o conda para criar um ambiente:
cd Fluxo da pirâmide conda create --name pyramid-flow python=3.8.10 conda activate pyramid-flow
- Instale a dependência:
pip install -r requirements.txt
Download e carregamento de modelos
- Faça o download dos pontos de controle do modelo no Huggingface:
# Download dos pontos de controle dos modelos 768p e 384p
- Modelos de carregamento:
model_dtype, torch_dtype = 'bf16', torch.bfloat16 modelo = PyramidDiTForVideoGeneration( 'PATH', Catálogo de pontos de controle para downloads do # model_dtype. model_variant='diffusion_transformer_768p', # ou "diffusion_transformer_384p ) model.vae.enable_tiling() model.enable_sequential_cpu_offload()
Geração de texto para vídeo
- Defina os parâmetros de geração e gere o vídeo:
frames = model.generate( prompt="Seu alerta de texto"., num_inference_steps=[20, 20, 20], video_num_inference_steps=[10, 10, 10], height=768, largura=1280, temp=16, # temp=16: 5s, temp=31: 10s guidance_scale=9.0, # 384p Definido para 7 video_guidance_scale=5.0, output_type="pil", save_memory=Verdadeiro) ) export_to_video(frames, , ) ". /text_to_video_sample.mp4", fps=24)
Geração de imagem para vídeo
- Defina os parâmetros de geração e gere o vídeo:
prompt = "Voo FPV sobre a Grande Muralha" com torch.no_grad(), torch.cuda.amp.autocast(enabled=Verdadeiro, dtype=torch_dtype). frames = model.generate_i2v( prompt=prompt, , input_image=image, , dtype=torch_dtype input_image=image, num_inference_steps=[[], dtype=torch_dtype num_inference_steps=[[10, 10, 10], temp=16, video_guidance_scale=4.0, output_type="pil", save_memory=Verdadeiro) ) export_to_video(frames, , ) ". /image_to_video_sample.mp4", fps=24)
Inferência multi-GPU
- Inferência usando várias GPUs:
# Execução de scripts de inferência em 2 ou 4 GPUs
Niu One Click Deployment Edition
O código de descriptografia do arquivo de inicialização é colocado no endereço de download. Se o download do modelo for interrompido com frequência após a inicialização, consulte o documento oficial para fazer o download do arquivo do modelo separadamente, que tem cerca de 30 G.