Diffusers documentation
Kandinsky 5.0 Video
Kandinsky 5.0 Video
Kandinsky 5.0 adalah keluarga model difusi untuk generasi Video & Gambar.
Kandinsky 5.0 Lite adalah lini model generasi video ringan (2B parameter) yang menempati peringkat #1 di antara model open-source dalam kelasnya. Model ini melampaui model yang lebih besar dan menawarkan pemahaman terbaik tentang konsep-konsep Rusia dalam ekosistem open-source.
Kandinsky 5.0 Pro adalah lini model generasi video berkualitas tinggi berskala besar (19B parameter). Model ini menawarkan generasi berkualitas tinggi dalam resolusi HD serta lebih banyak format generasi seperti I2V.
Model ini memperkenalkan beberapa inovasi utama:
- Pipeline difusi laten dengan Flow Matching untuk stabilitas pelatihan yang lebih baik
- Diffusion Transformer (DiT) sebagai tulang punggung generatif utama dengan cross-attention ke embedding teks
- Pengkodean teks ganda menggunakan Qwen2.5-VL dan CLIP untuk pemahaman teks yang komprehensif
- HunyuanVideo 3D VAE untuk enkripsi dan dekripsi video yang efisien
- Mekanisme perhatian sparsa (NABLA) untuk pemrosesan urutan panjang yang efisien
Kodebase asli dapat ditemukan di kandinskylab/Kandinsky-5.
Lihat organisasi Kandinsky Lab di Hub untuk checkpoint model resmi untuk generasi teks-ke-video, termasuk varian pretrained, SFT, no-CFG, dan distilled.
Model yang Tersedia
Kandinsky 5.0 T2V Pro:
| model_id | Deskripsi | Kasus Penggunaan |
|---|---|---|
| kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers | Model Pro Teks-ke-Video 5 detik | Generasi teks-ke-video berkualitas tinggi |
| kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers | 5 second Image-to-Video Pro model | Generasi gambar-ke-video berkualitas tinggi |
Kandinsky 5.0 T2V Lite: | model_id | Deskripsi | Kasus Penggunaan | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | Model Supervised Fine-Tuned 5 detik | Kualitas generasi tertinggi | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | Model Supervised Fine-Tuned 10 detik | Kualitas generasi tertinggi | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | Distilasi Classifier-Free Guidance 5 detik | Inferensi 2× lebih cepat | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | Distilasi Classifier-Free Guidance 10 detik | Inferensi 2× lebih cepat | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | Distilasi Diffusion 5 detik menjadi 16 langkah | Inferensi 6× lebih cepat, kehilangan kualitas minimal | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | Distilasi Diffusion 10 detik menjadi 16 langkah | Inferensi 6× lebih cepat, kehilangan kualitas minimal | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | Model Base pretrained 5 detik | Riset dan fine-tuning | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | Model Base pretrained 10 detik | Riset dan fine-tuning |
Contoh Penggunaan
Generasi Teks-ke-Video Dasar
Pro
⚠️ Peringatan! semua model Pro harus diinfer menggunakan pipeline.enable_model_cpu_offload()
import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video
# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex") # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload() # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs
# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"
output = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
height=768,
width=1024,
num_frames=121, # ~5 seconds at 24fps
num_inference_steps=50,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=24, quality=9)Lite
import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video
# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"
output = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
height=512,
width=768,
num_frames=121, # ~5 seconds at 24fps
num_inference_steps=50,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=24, quality=9)Model 10 detik
⚠️ Peringatan! semua model 10 detik harus digunakan dengan Flex attention dan kompilasi max-autotune-no-cudagraphs:
pipe = Kandinsky5T2VPipeline.from_pretrained(
"kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers",
dtype=torch.bfloat16
)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
pipe.transformer.set_attention_backend(
"flex"
) # <--- Set attention backend to Flex
pipe.transformer.compile(
mode="max-autotune-no-cudagraphs",
dynamic=True
) # <--- Compile with max-autotune-no-cudagraphs
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"
output = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
height=512,
width=768,
num_frames=241,
num_inference_steps=50,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=24, quality=9)Model Distilled Diffusion
⚠️ Peringatan! semua model nocfg dan diffusion distilled harus diinfer tanpa CFG (guidance_scale=1.0):
model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
output = pipe(
prompt="A beautiful sunset over mountains",
num_inference_steps=16, # <--- Model is distilled in 16 steps
guidance_scale=1.0, # <--- no CFG
).frames[0]
export_to_video(output, "output.mp4", fps=24, quality=9)Generasi Gambar-ke-Video Dasar
⚠️ Peringatan! semua model Pro harus diinfer menggunakan pipeline.enable_model_cpu_offload()
import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video
# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex") # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload() # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs
# Generate video
image = load_image(
"https://huggingface.co/kandinsky-community/kandinsky-3/resolve/main/assets/title.jpg?download=true"
)
height = 896
width = 896
image = image.resize((width, height))
prompt = "An funny furry creture smiles happily and holds a sign that says 'Kandinsky'"
negative_prompt = ""
output = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
height=height,
width=width,
num_frames=121, # ~5 seconds at 24fps
num_inference_steps=50,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=24, quality=9)Evaluasi berdampingan Kandinsky 5.0 Pro
| Perbandingan dengan Veo 3 | Perbandingan dengan Veo 3 fast |
| Perbandingan dengan mode Text-to-Video Wan 2.2 A14B | Perbandingan dengan mode Image-to-Video Wan 2.2 A14B |
Evaluasi berdampingan Kandinsky 5.0 Lite
Evaluasi didasarkan pada prompt yang diperluas dari Movie Gen benchmark, yang tersedia di kolom expanded_prompt pada file benchmark/moviegen_bench.csv.
![]() | ![]() |
![]() | ![]() |
![]() |
Evaluasi berdampingan Kandinsky 5.0 Lite Distill
![]() | ![]() |
Kandinsky5T2VPipeline
kelas diffusers.Kandinsky5T2VPipeline
< source >( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )
Parameter
- transformer (
Kandinsky5Transformer3DModel) — Transformer bersyarat untuk menghilangkan noise pada latens video yang telah dikodekan. - vae (AutoencoderKLHunyuanVideo) — Model Variational Auto-Encoder hunyuanvideo-community/HunyuanVideo (vae) untuk mengodekan dan mendekodekan video ke dan dari representasi laten.
- text_encoder (
Qwen2_5_VLForConditionalGeneration) — Text-encoder Qwen2.5-VL yang dibekukan. - tokenizer (
AutoProcessor) — Tokenizer untuk Qwen2.5-VL. - text_encoder_2 (
CLIPTextModel) — CLIP yang dibekukan, khususnya varian clip-vit-large-patch14. - tokenizer_2 (
CLIPTokenizer) — Tokenizer untuk CLIP. - scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler yang digunakan bersama
transformeruntuk menghilangkan noise pada latens video yang telah dikodekan.
Pipeline untuk generasi teks-ke-video menggunakan Kandinsky 5.0.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_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_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_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 = 512 ) → ~KandinskyPipelineOutput or tuple
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, berikanprompt_embedssebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Jika tidak didefinisikan, berikannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan panduan (guidance_scale<1). - height (
int, defaultnya512) — Tinggi video yang dihasilkan dalam piksel. - width (
int, defaultnya768) — Lebar video yang dihasilkan dalam piksel. - num_frames (
int, defaultnya25) — Jumlah frame dalam video yang dihasilkan. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising. - guidance_scale (
float, defaultnya5.0) — Skala panduan seperti yang didefinisikan dalam classifier-free guidance. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya. - prompt_embeds_qwen (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari encoder teks Qwen. - prompt_embeds_clip (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari encoder teks CLIP. - negative_prompt_embeds_qwen (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari encoder teks Qwen. - negative_prompt_embeds_clip (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari encoder teks CLIP. - prompt_cu_seqlens (
torch.Tensor, opsional) — Panjang kumulatif urutan untuk embedding prompt Qwen, digunakan untuk perhatian dengan panjang variabel. - negative_prompt_cu_seqlens (
torch.Tensor, opsional) — Panjang kumulatif sekuens untuk embedding prompt negatif Qwen, digunakan untuk perhatian dengan panjang variabel. - output_type (
str, opsional, default"pil") — Format output dari video yang dihasilkan. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanKandinskyPipelineOutput. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. - max_sequence_length (
int, defaultnya512) — Panjang maksimum sekuens untuk pengkodean teks.
Mengembalikan
~KandinskyPipelineOutput atau tuple
Jika return_dict adalah True, KandinskyPipelineOutput dikembalikan, selain itu sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan gambar yang dihasilkan.
Fungsi panggilan untuk pipeline pada generasi.
Contoh:
>>> import torch
>>> from diffusers import Kandinsky5T2VPipeline
>>> from diffusers.utils import export_to_video
>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers
>>> model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
>>> pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")
>>> prompt = "A cat and a dog baking a cake together in a kitchen."
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"
>>> output = pipe(
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=512,
... width=768,
... num_frames=121,
... num_inference_steps=50,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24, quality=9)check_inputs
< source >( promptnegative_promptheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )
Parameter
- prompt — Prompt input
- negative_prompt — Prompt negatif untuk panduan
- height — Tinggi video
- width — Lebar video
- prompt_embeds_qwen — Embedding prompt Qwen yang sudah dihitung sebelumnya
- prompt_embeds_clip — Embedding prompt CLIP yang sudah dihitung sebelumnya
- negative_prompt_embeds_qwen — Embedding prompt negatif Qwen yang sudah dihitung sebelumnya
- negative_prompt_embeds_clip — Embedding prompt negatif CLIP yang sudah dihitung sebelumnya
- prompt_cu_seqlens — Panjang kumulatif urutan yang sudah dihitung sebelumnya untuk prompt positif Qwen
- negative_prompt_cu_seqlens — Panjang kumulatif urutan yang sudah dihitung sebelumnya untuk prompt negatif Qwen
- callback_on_step_end_tensor_inputs — Input tensor callback
Membuang
ValueError
ValueError— Jika input tidak valid
Validasi parameter input untuk pipeline.
encode_prompt
< source >( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]
Parameter
- prompt (
strataulist[str]) — Prompt yang akan dienkod. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - max_sequence_length (
int, opsional, default 512) — Panjang maksimum sekuens untuk pengkodean teks. - device (
torch.device, opsional) — Perangkat Torch. - dtype (
torch.dtype, opsional) — Torch dtype.
Mengembalikan
tuple[torch.Tensor, torch.Tensor, torch.Tensor]
- Qwen text embeddings dengan bentuk (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
- CLIP pooled embeddings dengan bentuk (batch_size * num_videos_per_prompt, clip_embedding_dim)
- Panjang sekuens kumulatif (
cu_seqlens) untuk Qwen embeddings dengan bentuk (batch_size * num_videos_per_prompt + 1,)
Mengkodekan satu prompt (positif atau negatif) ke dalam hidden states text encoder.
Metode ini menggabungkan embedding dari kedua encoder teks Qwen2.5-VL dan CLIP untuk membuat representasi teks yang komprehensif untuk generasi video.
fast_sta_nabla
< source >( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor
Parameter
- T (int) — Jumlah frame temporal
- H (int) — Tinggi di ruang laten
- W (int) — Lebar di ruang laten
- wT (int) — Ukuran jendela perhatian temporal
- wH (int) — Ukuran jendela perhatian tinggi
- wW (int) — Ukuran jendela perhatian lebar
- device (str) — Perangkat untuk membuat tensor
Mengembalikan
torch.Tensor
Sparse attention mask dengan bentuk (THW, THW)
Buat mask sparse temporal attention (STA) untuk generasi video yang efisien.
Metode ini menghasilkan mask yang membatasi perhatian pada frame dan posisi spasial di sekitarnya, sehingga mengurangi kompleksitas komputasi untuk generasi video.
get_sparse_params
< source >( sampledevice ) → Dict
Generate parameter perhatian jarang untuk transformer berdasarkan dimensi sampel.
Metode ini menghitung konfigurasi perhatian sparsel yang diperlukan untuk pemrosesan video yang efisien dalam model transformer.
prepare_latents
< source >( batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Parameter
- batch_size (int) — Jumlah video yang akan dihasilkan
- num_channels_latents (int) — Jumlah channel di ruang laten
- height (int) — Tinggi video yang dihasilkan
- width (int) — Lebar video yang dihasilkan
- num_frames (int) — Jumlah frame dalam video
- dtype (torch.dtype) — Tipe data untuk latents
- device (torch.device) — Perangkat untuk membuat latents
- generator (torch.Generator) — Generator angka acak
- latents (torch.Tensor) — Latens yang sudah ada untuk digunakan
Mengembalikan
torch.Tensor
Tensor laten yang disiapkan
Siapkan variabel laten awal untuk pembuatan video.
Metode ini membuat latens noise acak atau menggunakan latens yang disediakan sebagai titik awal untuk proses denoising.
Kandinsky5I2VPipeline
kelas diffusers.Kandinsky5I2VPipeline
< source >( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )
Parameter
- transformer (
Kandinsky5Transformer3DModel) — Transformer bersyarat untuk menghilangkan noise pada latens video yang telah dikodekan. - vae (AutoencoderKLHunyuanVideo) — Model Variational Auto-Encoder hunyuanvideo-community/HunyuanVideo (vae) untuk mengodekan dan mendekodekan video ke dan dari representasi laten.
- text_encoder (
Qwen2_5_VLForConditionalGeneration) — Text-encoder Qwen2.5-VL yang dibekukan. - tokenizer (
AutoProcessor) — Tokenizer untuk Qwen2.5-VL. - text_encoder_2 (
CLIPTextModel) — CLIP yang dibekukan, khususnya varian clip-vit-large-patch14. - tokenizer_2 (
CLIPTokenizer) — Tokenizer untuk CLIP. - scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler yang digunakan bersama
transformeruntuk menghilangkan noise pada latens video yang telah dikodekan.
Pipeline untuk generasi gambar-ke-video menggunakan Kandinsky 5.0.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_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_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, NoneType], diffusers.callbacks.PipelineCallback | diffusers.callbacks.MultiPipelineCallbacks]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~KandinskyPipelineOutput or tuple
Parameter
- image (
PipelineImageInput) — Gambar input untuk mengondisikan generasi. Harus berupa gambar, daftar gambar, atautorch.Tensor. - prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, berikanprompt_embedssebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Jika tidak didefinisikan, berikannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan panduan (guidance_scale<1). - height (
int, defaultnya512) — Tinggi video yang dihasilkan dalam piksel. - width (
int, defaultnya768) — Lebar video yang dihasilkan dalam piksel. - num_frames (
int, defaultnya121) — Jumlah frame dalam video yang dihasilkan. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising. - guidance_scale (
float, defaultnya5.0) — Skala panduan seperti yang didefinisikan dalam classifier-free guidance. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya. - prompt_embeds_qwen (
torch.Tensor, opsional) — Embedding teks Qwen yang telah dibuat sebelumnya. - prompt_embeds_clip (
torch.Tensor, opsional) — Embedding teks CLIP yang telah dibuat sebelumnya. - negative_prompt_embeds_qwen (
torch.Tensor, opsional) — Embedding teks negatif Qwen yang telah dibuat sebelumnya. - negative_prompt_embeds_clip (
torch.Tensor, opsional) — Embedding teks negatif CLIP yang telah dibuat sebelumnya. - prompt_cu_seqlens (
torch.Tensor, opsional) — Panjang kumulatif urutan yang telah dibuat sebelumnya untuk prompt positif Qwen. - negative_prompt_cu_seqlens (
torch.Tensor, opsional) — Panjang kumulatif urutan yang telah dibuat sebelumnya untuk prompt negatif Qwen. - output_type (
str, opsional, default"pil") — Format output dari video yang dihasilkan. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanKandinskyPipelineOutput. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising. - callback_on_step_end_tensor_inputs (
List, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. - max_sequence_length (
int, defaultnya512) — Panjang maksimum sekuens untuk pengkodean teks.
Mengembalikan
~KandinskyPipelineOutput atau tuple
Jika return_dict adalah True, KandinskyPipelineOutput dikembalikan, selain itu sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan video yang dihasilkan.
Fungsi panggilan untuk pipeline pada generasi gambar-ke-video.
Contoh:
>>> import torch
>>> from diffusers import Kandinsky5I2VPipeline
>>> from diffusers.utils import export_to_video, load_image
>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers
>>> model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
>>> pipe = Kandinsky5I2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
... )
>>> prompt = "An astronaut floating in space with Earth in the background, cinematic shot"
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"
>>> output = pipe(
... image=image,
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=512,
... width=768,
... num_frames=121,
... num_inference_steps=50,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24, quality=9)check_inputs
< source >( promptnegative_promptimageheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )
Parameter
- prompt — Prompt input
- negative_prompt — Prompt negatif untuk panduan
- image — Gambar input untuk kondisioning
- height — Tinggi video
- width — Lebar video
- prompt_embeds_qwen — Embedding prompt Qwen yang sudah dihitung sebelumnya
- prompt_embeds_clip — Embedding prompt CLIP yang sudah dihitung sebelumnya
- negative_prompt_embeds_qwen — Embedding prompt negatif Qwen yang sudah dihitung sebelumnya
- negative_prompt_embeds_clip — Embedding prompt negatif CLIP yang sudah dihitung sebelumnya
- prompt_cu_seqlens — Panjang kumulatif urutan yang sudah dihitung sebelumnya untuk prompt positif Qwen
- negative_prompt_cu_seqlens — Panjang kumulatif urutan yang sudah dihitung sebelumnya untuk prompt negatif Qwen
- callback_on_step_end_tensor_inputs — Input tensor callback
Membuang
ValueError
ValueError— Jika input tidak valid
Validasi parameter input untuk pipeline.
encode_prompt
< source >( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]
Parameter
- prompt (
strataulist[str]) — Prompt yang akan dienkod. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - max_sequence_length (
int, opsional, default 512) — Panjang maksimum sekuens untuk pengkodean teks. - device (
torch.device, opsional) — Perangkat Torch. - dtype (
torch.dtype, opsional) — Torch dtype.
Mengembalikan
tuple[torch.Tensor, torch.Tensor, torch.Tensor]
- Qwen text embeddings dengan bentuk (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
- CLIP pooled embeddings dengan bentuk (batch_size * num_videos_per_prompt, clip_embedding_dim)
- Panjang sekuens kumulatif (
cu_seqlens) untuk Qwen embeddings dengan bentuk (batch_size * num_videos_per_prompt + 1,)
Mengkodekan satu prompt (positif atau negatif) ke dalam hidden states text encoder.
Metode ini menggabungkan embedding dari kedua encoder teks Qwen2.5-VL dan CLIP untuk membuat representasi teks yang komprehensif untuk generasi video.
fast_sta_nabla
< source >( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor
Parameter
- T (int) — Jumlah frame temporal
- H (int) — Tinggi di ruang laten
- W (int) — Lebar di ruang laten
- wT (int) — Ukuran jendela perhatian temporal
- wH (int) — Ukuran jendela perhatian tinggi
- wW (int) — Ukuran jendela perhatian lebar
- device (str) — Perangkat untuk membuat tensor
Mengembalikan
torch.Tensor
Sparse attention mask dengan bentuk (THW, THW)
Buat mask sparse temporal attention (STA) untuk generasi video yang efisien.
Metode ini menghasilkan mask yang membatasi perhatian pada frame dan posisi spasial di sekitarnya, sehingga mengurangi kompleksitas komputasi untuk generasi video.
get_sparse_params
< source >( sampledevice ) → Dict
Generate parameter perhatian jarang untuk transformer berdasarkan dimensi sampel.
Metode ini menghitung konfigurasi perhatian sparsel yang diperlukan untuk pemrosesan video yang efisien dalam model transformer.
prepare_latents
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Parameter
- image (PipelineImageInput) — Gambar input untuk mengondisikan generasi
- batch_size (int) — Jumlah video yang akan dihasilkan
- num_channels_latents (int) — Jumlah channel di ruang laten
- height (int) — Tinggi video yang dihasilkan
- width (int) — Lebar video yang dihasilkan
- num_frames (int) — Jumlah frame dalam video
- dtype (torch.dtype) — Tipe data untuk latents
- device (torch.device) — Perangkat untuk membuat latents
- generator (torch.Generator) — Generator angka acak
- latents (torch.Tensor) — Latens yang sudah ada untuk digunakan
Mengembalikan
torch.Tensor
Tensor laten yang disiapkan dengan frame pertama sebagai gambar yang dikodekan
Siapkan variabel laten awal untuk pembuatan video dari gambar.
Metode ini membuat latens noise acak untuk semua frame kecuali frame pertama, yang diganti dengan gambar input yang telah dienkod.
Sitasi
@misc{kandinsky2025,
author = {Alexander Belykh and Alexander Varlamov and Alexey Letunovskiy and Anastasia Aliaskina and Anastasia Maltseva and Anastasiia Kargapoltseva and Andrey Shutkin and Anna Averchenkova and Anna Dmitrienko and Bulat Akhmatov and Denis Dimitrov and Denis Koposov and Denis Parkhomenko and Dmitrii and Ilya Vasiliev and Ivan Kirillov and Julia Agafonova and Kirill Chernyshev and Kormilitsyn Semen and Lev Novitskiy and Maria Kovaleva and Mikhail Mamaev and Mikhailov and Nikita Kiselev and Nikita Osterov and Nikolai Gerasimenko and Nikolai Vaulin and Olga Kim and Olga Vdovchenko and Polina Gavrilova and Polina Mikhailova and Tatiana Nikulina and Viacheslav Vasilev and Vladimir Arkhipkin and Vladimir Korviakov and Vladimir Polovnikov and Yury Kolabushin},
title = {Kandinsky 5.0: A family of diffusion models for Video & Image generation},
howpublished = {\url{https://github.com/kandinskylab/Kandinsky-5}},
year = 2025
}





