Diffusers documentation
Helios
Helios
Helios: Real Real-Time Long Video Generation Model de Peking University & ByteDance & etc, por Shenghai Yuan, Yuanyang Yin, Zongjian Li, Xinwei Huang, Xiao Yang, Li Yuan.
- Presentamos Helios, el primer modelo de generación de video de 14B que funciona a 17 FPS en una sola GPU NVIDIA H100 y soporta generación a escala de minutos, igualando la calidad de una línea base sólida. Logramos avances en tres dimensiones clave: (1) robustez ante la deriva en videos largos sin usar heurísticas comunes anti-deriva como self-forcing, error banks o muestreo de fotogramas clave; (2) generación en tiempo real sin técnicas estándar de aceleración como KV-cache, enmascarado causal o atención dispersa; y (3) entrenamiento sin marcos de paralelismo o particionamiento, lo que permite tamaños de lote a escala de difusión de imágenes mientras se ajustan hasta cuatro modelos de 14B en 80 GB de memoria de GPU. Específicamente, Helios es un modelo de difusión autoregresivo de 14B con una representación de entrada unificada que soporta de forma nativa tareas T2V, I2V y V2V. Para mitigar la deriva en la generación de videos largos, caracterizamos sus modos de fallo típicos y proponemos estrategias de entrenamiento simples pero efectivas que simulan explícitamente la deriva durante el entrenamiento, eliminando el movimiento repetitivo en su origen. Para la eficiencia, comprimimos en gran medida el contexto histórico y ruidoso y reducimos el número de pasos de muestreo, lo que genera costos computacionales comparables o inferiores a los de los modelos generativos de video de 1.3B. Además, introducimos optimizaciones a nivel de infraestructura que aceleran tanto la inferencia como el entrenamiento, reduciendo al mismo tiempo el consumo de memoria. Experimentos extensos demuestran que Helios supera consistentemente a los métodos anteriores tanto en la generación de videos cortos como largos. Todo el código y los modelos están disponibles en [this https URL](https://pku-yuangroup.github.io/Helios-Page).
Los siguientes modelos de Helios son compatibles con Diffusers:
- Helios-Base: Mejor calidad, con v-predicción, CFG estándar y HeliosScheduler personalizado.
- Helios-Mid: Peso intermedio, con v-predicción, CFG-Zero* y HeliosScheduler personalizado.
- Helios-Distilled: la mejor eficiencia, con x0-prediction y HeliosDMDScheduler personalizado.
Haz clic en los modelos Helios en la barra lateral derecha para ver más ejemplos de generación de video.
Optimización de la memoria y la velocidad de inferencia
El siguiente ejemplo demuestra cómo generar un video a partir de texto optimizado para la memoria o la velocidad de inferencia.
Consulte la guía Reduce memory usage para obtener más detalles sobre las diversas técnicas de ahorro de memoria.
El modelo Helios de abajo requiere ~6 GB de VRAM.
import torch
from diffusers import AutoModel, HeliosPipeline
from diffusers.hooks.group_offloading import apply_group_offloading
from diffusers.utils import export_to_video
vae = AutoModel.from_pretrained("BestWishYsh/Helios-Base", subfolder="vae", dtype=torch.float32)
# group-offloading
pipeline = HeliosPipeline.from_pretrained(
"BestWishYsh/Helios-Base",
vae=vae,
dtype=torch.bfloat16
)
pipeline.enable_group_offload(
onload_device=torch.device("cuda"),
offload_device=torch.device("cpu"),
offload_type="leaf_level",
use_stream=True,
record_stream=True,
)
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear,
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=99,
num_inference_steps=50,
guidance_scale=5.0,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_t2v_output.mp4", fps=24)Compilation es lento la primera vez, pero las llamadas posteriores al pipeline son más rápidas. Los Attention Backends, como FlashAttention y SageAttention, pueden aumentar significativamente la velocidad al optimizar el cálculo del mecanismo de atención. El Context Parallelism divide la secuencia de entrada entre varios dispositivos para permitir el procesamiento de contextos largos en paralelo, reduciendo la presión de memoria y la latencia. El Caching también puede acelerar la inferencia al almacenar y reutilizar salidas intermedias.
import torch
from diffusers import AutoModel, HeliosPipeline
from diffusers.utils import export_to_video
vae = AutoModel.from_pretrained("BestWishYsh/Helios-Base", subfolder="vae", dtype=torch.float32)
pipeline = HeliosPipeline.from_pretrained(
"BestWishYsh/Helios-Base",
vae=vae,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
# attention backend
# pipeline.transformer.set_attention_backend("flash")
pipeline.transformer.set_attention_backend("_flash_3_hub") # For Hopper GPUs
# torch.compile
torch.backends.cudnn.benchmark = True
pipeline.text_encoder.compile(mode="max-autotune-no-cudagraphs", dynamic=False)
pipeline.vae.compile(mode="max-autotune-no-cudagraphs", dynamic=False)
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=False)
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear,
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=99,
num_inference_steps=50,
guidance_scale=5.0,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_t2v_output.mp4", fps=24)Generación con Helios-Base
El siguiente ejemplo demuestra cómo usar Helios-Base para generar video a partir de texto, imagen o video.
import torch
from diffusers import AutoModel, HeliosPipeline
from diffusers.utils import export_to_video, load_video, load_image
vae = AutoModel.from_pretrained("BestWishYsh/Helios-Base", subfolder="vae", dtype=torch.float32)
pipeline = HeliosPipeline.from_pretrained(
"BestWishYsh/Helios-Base",
vae=vae,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear,
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=99,
num_inference_steps=50,
guidance_scale=5.0,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_t2v_output.mp4", fps=24)
# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water,
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest,
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
image=load_image(image_path).resize((640, 384)),
num_frames=99,
num_inference_steps=50,
guidance_scale=5.0,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_i2v_output.mp4", fps=24)
# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop,
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere.
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
video=load_video(video_path),
num_frames=99,
num_inference_steps=50,
guidance_scale=5.0,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_v2v_output.mp4", fps=24)Generación con Helios-Mid
El siguiente ejemplo demuestra cómo usar Helios-Mid para generar video a partir de texto, imagen o video.
import torch
from diffusers import AutoModel, HeliosPyramidPipeline
from diffusers.utils import export_to_video, load_video, load_image
vae = AutoModel.from_pretrained("BestWishYsh/Helios-Mid", subfolder="vae", dtype=torch.float32)
pipeline = HeliosPyramidPipeline.from_pretrained(
"BestWishYsh/Helios-Mid",
vae=vae,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear,
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=99,
pyramid_num_inference_steps_list=[20, 20, 20],
guidance_scale=5.0,
use_zero_init=True,
zero_steps=1,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_t2v_output.mp4", fps=24)
# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water,
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest,
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
image=load_image(image_path).resize((640, 384)),
num_frames=99,
pyramid_num_inference_steps_list=[20, 20, 20],
guidance_scale=5.0,
use_zero_init=True,
zero_steps=1,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_i2v_output.mp4", fps=24)
# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop,
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere.
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
video=load_video(video_path),
num_frames=99,
pyramid_num_inference_steps_list=[20, 20, 20],
guidance_scale=5.0,
use_zero_init=True,
zero_steps=1,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_v2v_output.mp4", fps=24)Generación con Helios-Distilled
El siguiente ejemplo demuestra cómo usar Helios-Distilled para generar video a partir de texto, imagen o video.
import torch
from diffusers import AutoModel, HeliosPyramidPipeline
from diffusers.utils import export_to_video, load_video, load_image
vae = AutoModel.from_pretrained("BestWishYsh/Helios-Distilled", subfolder="vae", dtype=torch.float32)
pipeline = HeliosPyramidPipeline.from_pretrained(
"BestWishYsh/Helios-Distilled",
vae=vae,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear,
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=240,
pyramid_num_inference_steps_list=[2, 2, 2],
guidance_scale=1.0,
is_amplify_first_chunk=True,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_t2v_output.mp4", fps=24)
# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water,
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest,
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
image=load_image(image_path).resize((640, 384)),
num_frames=240,
pyramid_num_inference_steps_list=[2, 2, 2],
guidance_scale=1.0,
is_amplify_first_chunk=True,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_i2v_output.mp4", fps=24)
# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop,
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere.
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
video=load_video(video_path),
num_frames=240,
pyramid_num_inference_steps_list=[2, 2, 2],
guidance_scale=1.0,
is_amplify_first_chunk=True,
generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_v2v_output.mp4", fps=24)Muestras de Texto a Video
| Prompt | Video generado |
|---|---|
| Un guerrero vikingo conduciendo un autobús urbano moderno lleno de pasajeros. El vikingo tiene el cabello rubio largo recogido hacia atrás, barba, y viste un casco y una armadura forrados de piel. Lleva una túnica y pantalones tradicionales, pero también usa un cinturón de seguridad mientras se concentra en navegar por las calles concurridas. El interior del autobús es típico, con filas de asientos ocupados por diversos pasajeros que siguen sus rutinas diarias. Las tomas exteriores muestran el bullicioso entorno urbano, incluyendo edificios altos y tráfico. Plano medio centrado en el vikingo al volante, con primeros planos ocasionales de su expresión decidida. | |
| Una fotografía de naturaleza de estilo documental tomada desde un camión de cámaras en movimiento hacia la izquierda, que captura a un cangrejo que se escabulle rápidamente hacia su madriguera. El cangrejo tiene un caparazón duro de color verde pardo y garras largas, y se mueve con velocidad decidida sobre el suelo arenoso. Su cuerpo está ligeramente arqueado mientras se hunde en la arena, dejando un pequeño rastro detrás. El fondo muestra una playa poco profunda con rocas y conchas marinas dispersas, y el horizonte presenta una suave curva de la línea de costa. La foto tiene una textura natural y realista, que enfatiza el movimiento natural del cangrejo y la textura de la arena. Un primer plano desde un ángulo ligeramente elevado. |
Muestras de imagen a video
| Imagen | Prompt | Video generado |
|---|---|---|
![]() | Un elegante coche rojo Kia avanza a toda velocidad por una carretera rural bajo un cielo nublado; su diseño moderno y movimiento dinámico se acentúan por el desenfoque de movimiento de los campos y árboles circundantes que se extienden hasta el horizonte. El exterior brillante del coche refleja el cielo cubierto, destacando su forma aerodinámica y su postura deportiva. La matrícula dice "KIA 626" y los faros del vehículo están encendidos, lo que añade a la sensación de movimiento y energía. La carretera curva suavemente, con el coche situado ligeramente fuera del centro, creando una sensación de impulso hacia adelante. Una vista frontal de tres cuartos dinámica captura la poderosa presencia del coche contra el sereno telón de fondo de colinas ondulantes y árboles dispersos. | |
![]() | Un primer plano captura a un gato naranja esponjoso con ojos verdes llamativos y bigotes blancos, mirando fijamente hacia la cámara. El pelaje del gato es suave y bien cuidado, con una mezcla de tonos cálidos de naranja y crema. Sus grandes ojos expresivos son de un verde vívido, reflejando curiosidad y alerta. La nariz del gato es pequeña y rosada, y su boca está ligeramente abierta, dejando entrever un atisbo de su lengua rosada. El fondo está suavemente desenfocado, sugiriendo un ambiente interior acogedor con tonos neutros. La foto tiene una profundidad de campo reducida, enfocando nítidamente en la cara del gato mientras el fondo permanece desenfocado. Un disparo de primer plano desde una perspectiva ligeramente elevada. |
Vitrinas de video interactivas
| Prompt | Video generado |
|---|---|
| El prompt se puede encontrar aquí | |
| El prompt se puede encontrar aquí |
Recursos
Obtén más información sobre Helios con los siguientes recursos.
- Mira video1 y video2 para ver una demostración de las funciones clave de Helios.
- El artículo de investigación, Helios: Real Real-Time Long Video Generation Model, para más detalles.
HeliosPipeline
clase diffusers.HeliosPipeline
< source >( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModelvae: AutoencoderKLWanscheduler: HeliosSchedulertransformer: HeliosTransformer3DModel )
Parámetros
- tokenizer (
T5Tokenizer) — Tokenizer de T5, específicamente la variante google/umt5-xxl. - text_encoder (
T5EncoderModel) — T5, concretamente la variante google/umt5-xxl. - transformer (HeliosTransformer3DModel) — Transformer condicional para desruidar los latentes de entrada.
- scheduler (HeliosScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de la imagen codificada. - vae (AutoencoderKLWan) — Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.
Pipeline para la generación de texto a video / imagen a video / video a video usando Helios.
Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneheight: int = 384width: int = 640num_frames: int = 132num_inference_steps: int = 50sigmas: list = Noneguidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_latents: typing.Optional[torch.Tensor] = Nonefake_image_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_image_latents: bool = Trueimage_noise_sigma_min: float = 0.111image_noise_sigma_max: float = 0.135video: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonevideo_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_video_latents: bool = Truevideo_noise_sigma_min: float = 0.111video_noise_sigma_max: float = 0.135history_sizes: list = [16, 2, 1]num_latent_frames_per_chunk: int = 9keep_first_frame: bool = Trueis_skip_first_chunk: bool = False ) → ~HeliosPipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, paseprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o los prompts a evitar durante la generación de imágenes. Si no se define, pasenegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (guidance_scale<1). - height (
int, por defecto384) — La altura en píxeles de la imagen generada. - width (
int, por defecto640) — El ancho en píxeles de la imagen generada. - num_frames (
int, por defecto132) — El número de fotogramas en el video generado. - num_inference_steps (
int, por defecto50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido. Si no se definen, se utiliza la programación predeterminada del programador. - guidance_scale (
float, por defecto5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.guidance_scalese define comowde la ecuación 2 de Imagen Paper. La escala de guía se activa al establecerguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto deprompt, generalmente a costa de una menor calidad de imagen. - num_videos_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generan por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Untorch.Generatorpara hacer que la generación sea determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Si no se proporcionan, se generan a partir denegative_prompt. - output_type (
str, opcional, por defecto"np") — El formato de salida de la imagen generada. Elija entrePIL.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver unHeliosPipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, opcional) — Una función o una subclase dePipelineCallbackoMultiPipelineCallbacksque se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
int, por defecto512) — La longitud máxima de secuencia del codificador de texto. Si el prompt es más largo que esto, se truncará. Si el prompt es más corto, se rellenará hasta esta longitud. - image (
PipelineImageInput, opcional) — Imagen de entrada utilizada para la condición de imagen a video. - image_latents (
torch.Tensor, opcional) — Latentes de imagen precodificados para usar en lugar deimage. - fake_image_latents (
torch.Tensor, opcional) — Latentes de imagen falsos opcionales utilizados durante la condicionamiento. - add_noise_to_image_latents (
bool, opcional, valor predeterminadoTrue) — Si se debe añadir ruido a los latentes de la imagen antes del desruido. - image_noise_sigma_min (
float, opcional, valor predeterminado0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de imagen. - image_noise_sigma_max (
float, opcional, valor predeterminado0.135) — Valor máximo de sigma para el ruido añadido a los latentes de imagen. - video (
PipelineImageInput, opcional) — Video de entrada utilizado para la condición de video a video. - video_latents (
torch.Tensor, opcional) — Latentes de video precodificados para usar en lugar devideo. - add_noise_to_video_latents (
bool, opcional, valor predeterminadoTrue) — Si se debe añadir ruido a los latentes del vídeo antes del desruido. - video_noise_sigma_min (
float, opcional, valor predeterminado0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de video. - video_noise_sigma_max (
float, opcional, valor predeterminado0.135) — Valor máximo de sigma para el ruido añadido a los latentes de video. - history_sizes (
list, opcional, valor predeterminado[16, 2, 1]) — Tamaños de la ventana de historial utilizados para la generación por bloques autorregresiva. - num_latent_frames_per_chunk (
int, opcional, valor predeterminado9) — Número de fotogramas latentes producidos por bloque durante la generación autoregresiva. - keep_first_frame (
bool, opcional, valor predeterminadoTrue) — Si se conserva el primer fotograma entre los fragmentos. - is_skip_first_chunk (
bool, opcional, valor predeterminadoFalse) — Si se debe omitir la generación del primer fragmento.
Devuelve
~HeliosPipelineOutput o tuple
Si return_dict es True, se devuelve HeliosPipelineOutput; en caso contrario, se devuelve una tuple donde
el primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool
que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).
La función de llamada para el pipeline de generación.
Ejemplos:
>>> import torch
>>> from diffusers.utils import export_to_video
>>> from diffusers import AutoencoderKLWan, HeliosPipeline
>>> # Available models: BestWishYsh/Helios-Base, BestWishYsh/Helios-Mid, BestWishYsh/Helios-Distilled
>>> model_id = "BestWishYsh/Helios-Base"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = HeliosPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> output = pipe(
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=384,
... width=640,
... num_frames=132,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24)encode_prompt
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora siguidance_scalees menor que1). - do_classifier_free_guidance (
bool, opcional, valor predeterminadoTrue) — Si se debe usar classifier free guidance o no. - num_videos_per_prompt (
int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - device — (
torch.device, opcional): dispositivo de torch - dtype — (
torch.dtype, opcional): dtype de torch
Codifica el prompt en estados ocultos del codificador de texto.
HeliosPyramidPipeline
clase diffusers.HeliosPyramidPipeline
< source >( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModelvae: AutoencoderKLWanscheduler: diffusers.schedulers.scheduling_helios.HeliosScheduler | diffusers.schedulers.scheduling_helios_dmd.HeliosDMDSchedulertransformer: HeliosTransformer3DModelis_cfg_zero_star: bool = Falseis_distilled: bool = False )
Parámetros
- tokenizer (
T5Tokenizer) — Tokenizer de T5, específicamente la variante google/umt5-xxl. - text_encoder (
T5EncoderModel) — T5, concretamente la variante google/umt5-xxl. - transformer (HeliosTransformer3DModel) — Transformer condicional para desruidar los latentes de entrada.
- scheduler ([
HeliosScheduler,HeliosDMDScheduler]) — Un scheduler para usar en combinación contransformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKLWan) — Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.
Pipeline para la generación de texto a video / imagen a video / video a video usando Helios.
Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneheight: int = 384width: int = 640num_frames: int = 132sigmas: list = Noneguidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_latents: typing.Optional[torch.Tensor] = Nonefake_image_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_image_latents: bool = Trueimage_noise_sigma_min: float = 0.111image_noise_sigma_max: float = 0.135video: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonevideo_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_video_latents: bool = Truevideo_noise_sigma_min: float = 0.111video_noise_sigma_max: float = 0.135history_sizes: list = [16, 2, 1]num_latent_frames_per_chunk: int = 9keep_first_frame: bool = Trueis_skip_first_chunk: bool = Falsepyramid_num_inference_steps_list: list = [10, 10, 10]use_zero_init: bool | None = Truezero_steps: int | None = 1is_amplify_first_chunk: bool = False ) → ~HeliosPipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, paseprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o los prompts a evitar durante la generación de imágenes. Si no se define, pasenegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (guidance_scale<1). - height (
int, por defecto384) — La altura en píxeles de la imagen generada. - width (
int, por defecto640) — El ancho en píxeles de la imagen generada. - num_frames (
int, por defecto132) — El número de fotogramas en el video generado. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido. Si no se definen, se utiliza la programación predeterminada del programador. - guidance_scale (
float, por defecto5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.guidance_scalese define comowde la ecuación 2 de Imagen Paper. La escala de guía se activa al establecerguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto deprompt, generalmente a costa de una menor calidad de imagen. - num_videos_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generan por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Untorch.Generatorpara hacer que la generación sea determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Si no se proporcionan, se generan a partir denegative_prompt. - output_type (
str, opcional, por defecto"np") — El formato de salida de la imagen generada. Elija entrePIL.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver unHeliosPipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, opcional) — Una función o una subclase dePipelineCallbackoMultiPipelineCallbacksque se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
int, por defecto512) — La longitud máxima de secuencia del codificador de texto. Si el prompt es más largo que esto, se truncará. Si el prompt es más corto, se rellenará hasta esta longitud. - image (
PipelineImageInput, opcional) — Imagen de entrada utilizada para la condición de imagen a video. - image_latents (
torch.Tensor, opcional) — Latentes de imagen precodificados para usar en lugar deimage. - fake_image_latents (
torch.Tensor, opcional) — Latentes de imagen falsos opcionales utilizados durante la condicionamiento. - add_noise_to_image_latents (
bool, opcional, valor predeterminadoTrue) — Si se debe añadir ruido a los latentes de la imagen antes del desruido. - image_noise_sigma_min (
float, opcional, valor predeterminado0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de imagen. - image_noise_sigma_max (
float, opcional, valor predeterminado0.135) — Valor máximo de sigma para el ruido añadido a los latentes de imagen. - video (
PipelineImageInput, opcional) — Video de entrada utilizado para la condición de video a video. - video_latents (
torch.Tensor, opcional) — Latentes de video precodificados para usar en lugar devideo. - add_noise_to_video_latents (
bool, opcional, valor predeterminadoTrue) — Si se debe añadir ruido a los latentes del vídeo antes del desruido. - video_noise_sigma_min (
float, opcional, valor predeterminado0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de video. - video_noise_sigma_max (
float, opcional, valor predeterminado0.135) — Valor máximo de sigma para el ruido añadido a los latentes de video. - history_sizes (
list, opcional, valor predeterminado[16, 2, 1]) — Tamaños de la ventana de historial utilizados para la generación por bloques autorregresiva. - num_latent_frames_per_chunk (
int, opcional, valor predeterminado9) — Número de fotogramas latentes producidos por bloque durante la generación autoregresiva. - keep_first_frame (
bool, opcional, valor predeterminadoTrue) — Si se conserva el primer fotograma entre los fragmentos. - is_skip_first_chunk (
bool, opcional, valor predeterminadoFalse) — Si se debe omitir la generación del primer fragmento. - pyramid_num_inference_steps_list (
list, opcional, valor predeterminado[10, 10, 10]) — Número de pasos de inferencia para cada etapa de la pirámide durante la generación de la Etapa 2. - use_zero_init (
bool, opcional, valor predeterminadoTrue) — Si se aplica la inicialización a cero de CFG al inicio del desruido. - zero_steps (
int, opcional, valor predeterminado1) — Número de pasos iniciales que utilizan la inicialización cero de CFG. - is_amplify_first_chunk (
bool, opcional, valor predeterminadoFalse) — Si se amplifica la guía en el primer fragmento (relacionado con DMD).
Devuelve
~HeliosPipelineOutput o tuple
Si return_dict es True, se devuelve HeliosPipelineOutput; en caso contrario, se devuelve una tuple donde
el primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool
que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).
La función de llamada para el pipeline de generación.
Ejemplos:
>>> import torch
>>> from diffusers.utils import export_to_video
>>> from diffusers import AutoencoderKLWan, HeliosPyramidPipeline
>>> # Available models: BestWishYsh/Helios-Base, BestWishYsh/Helios-Mid, BestWishYsh/Helios-Distilled
>>> model_id = "BestWishYsh/Helios-Base"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = HeliosPyramidPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> output = pipe(
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=384,
... width=640,
... num_frames=132,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24)encode_prompt
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora siguidance_scalees menor que1). - do_classifier_free_guidance (
bool, opcional, valor predeterminadoTrue) — Si se debe usar classifier free guidance o no. - num_videos_per_prompt (
int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - device — (
torch.device, opcional): dispositivo de torch - dtype — (
torch.dtype, opcional): dtype de torch
Codifica el prompt en estados ocultos del codificador de texto.
HeliosPipelineOutput
clase diffusers.pipelines.helios.pipeline_output.HeliosPipelineOutput
< source >( frames: Tensor )
Parámetros
- frames (
torch.Tensor,np.ndarrayo List[List[PIL.Image.Image]]) — Lista de salidas de video. Puede ser una lista anidada de longitudbatch_size,donde cada sublista contiene secuencias de imágenes PIL desruidas de longitudnum_frames.También puede ser un array de NumPy o un tensor de Torch de forma(batch_size, num_frames, channels, height, width).
Clase de salida para las tuberías de Helios.

