Diffusers documentation
Kandinsky 5.0 Video
Kandinsky 5.0 Video
Kandinsky 5.0 هي عائلة من نماذج الانتشار لتوليد الفيديو والصور.
تشكيلة Kandinsky 5.0 Lite من نماذج توليد الفيديو خفيفة الوزن (2 مليار معامل) التي تحتل المرتبة الأولى بين النماذج مفتوحة المصدر في فئتها. تتفوق على النماذج الأكبر حجمًا وتوفر أفضل فهم للمفاهيم الروسية في منظومة المصادر المفتوحة.
تشكيلة Kandinsky 5.0 Pro من نماذج توليد الفيديو الكبيرة عالية الجودة (19 مليار معامل). توفر توليدًا عالي الجودة بدقة HD بالإضافة إلى صيغ توليد أخرى مثل I2V.
يُقدّم النموذج عدة ابتكارات رئيسية:
- خط أنابيب الانتشار الكامن مع Flow Matching لتحسين استقرار التدريب
- Diffusion Transformer (DiT) كعمود فقري توليدي رئيسي مع انتباه متقاطع إلى تمثيلات النص
- ترميز نصي مزدوج باستخدام Qwen2.5-VL و CLIP لفهم شامل للنص
- HunyuanVideo 3D VAE لتشفير وفك ترميز الفيديو بكفاءة
- آليات الانتباه المتناثر (NABLA) لمعالجة التسلسلات الطويلة بكفاءة
يمكن العثور على قاعدة الكود الأصلية في kandinskylab/Kandinsky-5.
اطّلع على منظمة Kandinsky Lab على Hub للحصول على نقاط التفتيش الرسمية للنماذج لتوليد الفيديو من النص، بما في ذلك النماذج المُسبقة التدريب، ونماذج SFT، ونماذج no-CFG، والنماذج المُقطّرة.
النماذج المتاحة
Kandinsky 5.0 T2V Pro:
| model_id | الوصف | حالات الاستخدام |
|---|---|---|
| kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers | نموذج Text-to-Video Pro لمدة 5 ثوانٍ | توليد فيديو من نص عالي الجودة |
| kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers | نموذج Pro لتحويل الصور إلى فيديو في 5 ثوانٍ | توليد فيديو من صورة بجودة عالية |
Kandinsky 5.0 T2V Lite: | model_id | الوصف | حالات الاستخدام | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | نموذج مُدرب بدقة تحت الإشراف (Supervised Fine-Tuned) لمدة 5 ثوانٍ | أعلى جودة توليد | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | نموذج مُدرب بدقة تحت الإشراف (Supervised Fine-Tuned) لمدة 10 ثوانٍ | أعلى جودة توليد | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | مُقطّر (distilled) بتوجيه بدون مُصنّف (Classifier-Free Guidance) لمدة 5 ثوانٍ | استنتاج أسرع بمرتين | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | مُقطّر (distilled) بتوجيه بدون مُصنّف (Classifier-Free Guidance) لمدة 10 ثوانٍ | استنتاج أسرع بمرتين | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | مُقطّر (distilled) من Diffusion إلى 16 خطوة لمدة 5 ثوانٍ | استنتاج أسرع 6 مرات، مع فقدان جودة ضئيل | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | مُقطّر (distilled) من Diffusion إلى 16 خطوة لمدة 10 ثوانٍ | استنتاج أسرع 6 مرات، مع فقدان جودة ضئيل | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | نموذج أساسي مُدرّب مسبقاً (Base pretrained) لمدة 5 ثوانٍ | البحث والتدريب الدقيق | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | نموذج أساسي مُدرّب مسبقاً (Base pretrained) لمدة 10 ثوانٍ | البحث والتدريب الدقيق |
أمثلة على الاستخدام
توليد النص إلى الفيديو الأساسي
احترافي
⚠️ تحذير! يجب استنتاج جميع نماذج Pro باستخدام 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)خفيفة
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)نماذج في 10 ثوانٍ
⚠️ تحذير! يجب استخدام جميع النماذج المدة 10 ثوانٍ مع Flex attention وتجميع 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)نموذج التوليف المُقطّر
⚠️ تحذير! يجب استنتاج جميع نماذج nocfg والنماذج المُقطّرة للانتشار دون 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)توليد الفيديو من الصورة الأساسي
⚠️ تحذير! يجب استنتاج جميع نماذج Pro باستخدام 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)Kandinsky 5.0 Pro التقييم جنبًا إلى جنب
| المقارنة مع Veo 3 | المقارنة مع Veo 3 fast |
| مقارنة مع وضع تحويل النص إلى فيديو في Wan 2.2 A14B | المقارنة مع وضع تحويل الصورة إلى فيديو في Wan 2.2 A14B |
Kandinsky 5.0 Lite تقييم جنبًا إلى جنب
تستند التقييم إلى الأوامر الموسّعة من Movie Gen benchmark، وهي متاحة في عمود expanded_prompt في الملف benchmark/moviegen_bench.csv.
![]() | ![]() |
![]() | ![]() |
![]() |
Kandinsky 5.0 Lite Distill تقييم جنبًا إلى جنب
![]() | ![]() |
Kandinsky5T2VPipeline
فئة diffusers.Kandinsky5T2VPipeline
< source >( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )
المعاملات
- transformer (
Kandinsky5Transformer3DModel) — نموذج Transformer مشروط لإزالة الضوضاء من متغيرات الفيديو المُرمّزة. - vae (AutoencoderKLHunyuanVideo) — نموذج الترميز التبايني التلقائي hunyuanvideo-community/HunyuanVideo (vae) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.
- text_encoder (
Qwen2_5_VLForConditionalGeneration) — مُشفِّر نص ثابت Qwen2.5-VL. - tokenizer (
AutoProcessor) — مُقسِّم لـ Qwen2.5-VL. - text_encoder_2 (
CLIPTextModel) — نموذج CLIP مجمّد، تحديداً النسخة clip-vit-large-patch14. - tokenizer_2 (
CLIPTokenizer) — مُقسِّم لـ CLIP. - scheduler (FlowMatchEulerDiscreteScheduler) —
جدول زمني يُستخدم بالاقتران مع
transformerلإزالة الضوضاء من كائنات الفيديو المُرمّزة.
خط أنابيب لتوليد الفيديو من النص باستخدام Kandinsky 5.0.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
__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
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الفيديو. إذا لم يُعرَّف، فمرّرprompt_embedsبدلاً من ذلك. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي يجب تجنّبها أثناء توليد الفيديو. إذا لم يُعرَّف، فمرّرnegative_prompt_embedsبدلاً من ذلك. يُتجاهل عند عدم استخدام التوجيه (guidance_scale<1). - height (
int، القيمة الافتراضية512) — ارتفاع الفيديو المولّد بالبكسلات. - width (
int، القيمة الافتراضية768) — عرض الفيديو المولّد بالبكسل. - num_frames (
int، القيمة الافتراضية25) — عدد الإطارات في الفيديو المولّد. - num_inference_steps (
int، القيمة الافتراضية50) — عدد خطوات إزالة الضوضاء. - guidance_scale (
float، القيمة الافتراضية5.0) — مقياس التوجيه كما هو مُعرَّف في التوجيه الحر من التصنيف. - num_videos_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا. - prompt_embeds_qwen (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من مُشفِّر النص الخاص بـ Qwen. - prompt_embeds_clip (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من مُشفِّر النص في CLIP. - negative_prompt_embeds_qwen (
torch.Tensor، اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا من مُشفّر النص Qwen. - negative_prompt_embeds_clip (
torch.Tensor، اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا من مُشفّر النص في CLIP. - prompt_cu_seqlens (
torch.Tensor، اختياري) — أطوال التسلسلات التراكمية لتضمينات موجه Qwen، وتُستخدم للانتباه بطول متغير. - negative_prompt_cu_seqlens (
torch.Tensor, اختياري) — أطوال التسلسلات التراكمية لتضمينات موجه Qwen السلبي، وتُستخدم للانتباه بطول متغير. - output_type (
str، اختياري، الافتراضي"pil") — صيغة مخرجات الفيديو المولّد. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاعKandinskyPipelineOutputأم لا. - callback_on_step_end (
Callable،PipelineCallback،MultiPipelineCallbacks، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء. - callback_on_step_end_tensor_inputs (
list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالةcallback_on_step_end. - max_sequence_length (
int، القيمة الافتراضية512) — أقصى طول للسلسلة لتشفير النص.
يعيد
~KandinskyPipelineOutput أو tuple
إذا كان return_dict هو True، يُعاد KandinskyPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالصور المولّدة.
دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.
أمثلة:
>>> 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 )
المعاملات
- prompt — موجه الإدخال
- negative_prompt — موجه سلبي للإرشاد
- height — ارتفاع الفيديو
- width — عرض الفيديو
- prompt_embeds_qwen — تمثيلات موجه Qwen محسوبة مسبقًا
- prompt_embeds_clip — تمثيلات موجهات CLIP محسوبة مسبقًا
- negative_prompt_embeds_qwen — تمثيلات سلبية مُسبقة الحساب لـ Qwen
- negative_prompt_embeds_clip — تمثيلات سلبية مُسبقة الحساب لـ CLIP
- prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا للموجّه الإيجابي في Qwen
- negative_prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا لـ Qwen negative prompt
- callback_on_step_end_tensor_inputs — مدخلات تينسور الدالة الاستدعائية
يرفع
ValueError
ValueError— إذا كانت المدخلات غير صالحة
تحقّق من معاملات الإدخال للخطّ الأنابيب.
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]
المعاملات
- prompt (
strأوlist[str]) — الموجّه الذي سيتم ترميزه. - num_videos_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه. - max_sequence_length (
int، اختياري، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص. - device (
torch.device، اختياري) — جهاز Torch. - dtype (
torch.dtype، اختياري) — نوع البيانات في Torch.
يعيد
tuple[torch.Tensor, torch.Tensor, torch.Tensor]
- تضمينات نص Qwen ذات الشكل (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
- تضمينات CLIP المجمّعة ذات الشكل (batch_size * num_videos_per_prompt, clip_embedding_dim)
- الأطوال التراكمية للتسلسلات (
cu_seqlens) لتضمينات Qwen من الشكل (batch_size * num_videos_per_prompt + 1,)
يقوم بتشفير موجه واحد (إيجابي أو سلبي) إلى حالات مخفية لمشفّر النص.
تجمع هذه الطريقة بين التضمينات (embeddings) المستخرجة من كلا مشفري النص في Qwen2.5-VL وCLIP لإنشاء تمثيلات نصية شاملة لتوليد الفيديو.
fast_sta_nabla
< source >( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor
المعاملات
- T (int) — عدد الإطارات الزمنية
- H (int) — الارتفاع في الفضاء الكامن
- W (int) — العرض في الفضاء الكامن
- wT (int) — حجم نافذة الانتباه الزمني
- wH (int) — حجم نافذة الانتباه للارتفاع
- wW (int) — حجم نافذة الانتباه العرضية
- device (str) — الجهاز الذي سيتم إنشاء المصفوفة عليه
يعيد
torch.Tensor
قناع انتباه متناثر (Sparse attention mask) من الشكل (THW, THW)
أنشئ قناع انتباه زمني متناثر (STA) لتوليد الفيديو بكفاءة.
تولّد هذه الطريقة قناعاً يحدّ الانتباه إلى الإطارات والمواقع المكانية القريبة، مما يقلّل التعقيد الحسابي لتوليد الفيديو.
get_sparse_params
< source >( sampledevice ) → Dict
توليد معاملات الانتباه المتناثر (sparse attention) للمحوّل (transformer) بناءً على أبعاد العينة.
تُحسب هذه الطريقة إعداد الانتباه المتناثر (sparse attention) اللازمة لمعالجة الفيديو بكفاءة في نموذج الترانسفورمر.
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
المعاملات
- batch_size (int) — عدد مقاطع الفيديو التي سيتم توليدها
- num_channels_latents (int) — عدد القنوات في الفضاء الكامن
- height (int) — ارتفاع الفيديو المولّد
- width (int) — عرض الفيديو المولّد
- num_frames (int) — عدد الإطارات في الفيديو
- dtype (torch.dtype) — نوع البيانات للقيم الكامنة
- device (torch.device) — الجهاز الذي سيتم إنشاء المتغيرات الكامنة عليه
- generator (torch.Generator) — مولّد الأرقام العشوائية
- latents (torch.Tensor) — كامنات موجودة مسبقًا للاستخدام
يعيد
torch.Tensor
موتر كامن مُعدّ
جهّز متغيرات كامنة أولية لتوليد الفيديو.
تُنشئ هذه الطريقة ضوضاء عشوائية في الفضاء الكامن أو تستخدم الفضاء الكامن المُقدَّم كنقطة انطلاق لعملية إزالة الضوضاء.
Kandinsky5I2VPipeline
فئة diffusers.Kandinsky5I2VPipeline
< source >( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )
المعاملات
- transformer (
Kandinsky5Transformer3DModel) — نموذج Transformer مشروط لإزالة الضوضاء من متغيرات الفيديو المُرمّزة. - vae (AutoencoderKLHunyuanVideo) — نموذج الترميز التبايني التلقائي hunyuanvideo-community/HunyuanVideo (vae) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.
- text_encoder (
Qwen2_5_VLForConditionalGeneration) — مُشفِّر نص ثابت Qwen2.5-VL. - tokenizer (
AutoProcessor) — مُقسِّم لـ Qwen2.5-VL. - text_encoder_2 (
CLIPTextModel) — نموذج CLIP مجمّد، تحديداً النسخة clip-vit-large-patch14. - tokenizer_2 (
CLIPTokenizer) — مُقسِّم لـ CLIP. - scheduler (FlowMatchEulerDiscreteScheduler) —
جدول زمني يُستخدم بالاقتران مع
transformerلإزالة الضوضاء من كائنات الفيديو المُرمّزة.
خط أنابيب لتوليد الفيديو من الصور باستخدام Kandinsky 5.0.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
__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
المعاملات
- image (
PipelineImageInput) — الصورة المدخلة التي تُشترط عليها عملية التوليد. يجب أن تكون صورة، أو قائمة من الصور، أوtorch.Tensor. - prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الفيديو. إذا لم يُعرَّف، فمرّرprompt_embedsبدلاً من ذلك. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي يجب تجنّبها أثناء توليد الفيديو. إذا لم يُعرَّف، فمرّرnegative_prompt_embedsبدلاً من ذلك. يُتجاهل عند عدم استخدام التوجيه (guidance_scale<1). - height (
int، القيمة الافتراضية512) — ارتفاع الفيديو المولّد بالبكسلات. - width (
int، القيمة الافتراضية768) — عرض الفيديو المولّد بالبكسل. - num_frames (
int، القيمة الافتراضية121) — عدد الإطارات في الفيديو المولّد. - num_inference_steps (
int، القيمة الافتراضية50) — عدد خطوات إزالة الضوضاء. - guidance_scale (
float، القيمة الافتراضية5.0) — مقياس التوجيه كما هو مُعرَّف في التوجيه الحر من التصنيف. - num_videos_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا. - prompt_embeds_qwen (
torch.Tensor، اختياري) — تضمينات نصية Qwen مُولّدة مسبقًا. - prompt_embeds_clip (
torch.Tensor، اختياري) — تضمينات نصية CLIP مُولّدة مسبقًا. - negative_prompt_embeds_qwen (
torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا لنموذج Qwen. - negative_prompt_embeds_clip (
torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا بواسطة CLIP. - prompt_cu_seqlens (
torch.Tensor، اختياري) — أطوال التسلسل التراكمية المُولَّدة مسبقًا للموجّه الإيجابي في Qwen. - negative_prompt_cu_seqlens (
torch.Tensor، اختياري) — أطوال التسلسل التراكمية المُولَّدة مسبقًا لـ Qwen negative prompt. - output_type (
str، اختياري، الافتراضي"pil") — صيغة مخرجات الفيديو المولّد. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاعKandinskyPipelineOutputأم لا. - callback_on_step_end (
Callable،PipelineCallback،MultiPipelineCallbacks، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء. - callback_on_step_end_tensor_inputs (
List, اختياري) — قائمة مدخلات المصفوفات لدالةcallback_on_step_end. - max_sequence_length (
int، القيمة الافتراضية512) — أقصى طول للسلسلة لتشفير النص.
يعيد
~KandinskyPipelineOutput أو tuple
إذا كان return_dict هو True، يُعاد KandinskyPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالفيديوهات المولّدة.
دالة الاستدعاء call لخط الأنابيب pipeline لتوليد الفيديو من الصورة.
أمثلة:
>>> 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 )
المعاملات
- prompt — موجه الإدخال
- negative_prompt — موجه سلبي للإرشاد
- image — صورة الإدخال للتكييف
- height — ارتفاع الفيديو
- width — عرض الفيديو
- prompt_embeds_qwen — تمثيلات موجه Qwen محسوبة مسبقًا
- prompt_embeds_clip — تمثيلات موجهات CLIP محسوبة مسبقًا
- negative_prompt_embeds_qwen — تمثيلات سلبية مُسبقة الحساب لـ Qwen
- negative_prompt_embeds_clip — تمثيلات سلبية مُسبقة الحساب لـ CLIP
- prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا للموجّه الإيجابي في Qwen
- negative_prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا لـ Qwen negative prompt
- callback_on_step_end_tensor_inputs — مدخلات تينسور الدالة الاستدعائية
يرفع
ValueError
ValueError— إذا كانت المدخلات غير صالحة
تحقّق من معاملات الإدخال للخطّ الأنابيب.
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]
المعاملات
- prompt (
strأوlist[str]) — الموجّه الذي سيتم ترميزه. - num_videos_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه. - max_sequence_length (
int، اختياري، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص. - device (
torch.device، اختياري) — جهاز Torch. - dtype (
torch.dtype، اختياري) — نوع البيانات في Torch.
يعيد
tuple[torch.Tensor, torch.Tensor, torch.Tensor]
- تضمينات نص Qwen ذات الشكل (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
- تضمينات CLIP المجمّعة ذات الشكل (batch_size * num_videos_per_prompt, clip_embedding_dim)
- الأطوال التراكمية للتسلسلات (
cu_seqlens) لتضمينات Qwen من الشكل (batch_size * num_videos_per_prompt + 1,)
يقوم بتشفير موجه واحد (إيجابي أو سلبي) إلى حالات مخفية لمشفّر النص.
تجمع هذه الطريقة بين التضمينات (embeddings) المستخرجة من كلا مشفري النص في Qwen2.5-VL وCLIP لإنشاء تمثيلات نصية شاملة لتوليد الفيديو.
fast_sta_nabla
< source >( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor
المعاملات
- T (int) — عدد الإطارات الزمنية
- H (int) — الارتفاع في الفضاء الكامن
- W (int) — العرض في الفضاء الكامن
- wT (int) — حجم نافذة الانتباه الزمني
- wH (int) — حجم نافذة الانتباه للارتفاع
- wW (int) — حجم نافذة الانتباه العرضية
- device (str) — الجهاز الذي سيتم إنشاء المصفوفة عليه
يعيد
torch.Tensor
قناع انتباه متناثر (Sparse attention mask) من الشكل (THW, THW)
أنشئ قناع انتباه زمني متناثر (STA) لتوليد الفيديو بكفاءة.
تولّد هذه الطريقة قناعاً يحدّ الانتباه إلى الإطارات والمواقع المكانية القريبة، مما يقلّل التعقيد الحسابي لتوليد الفيديو.
get_sparse_params
< source >( sampledevice ) → Dict
توليد معاملات الانتباه المتناثر (sparse attention) للمحوّل (transformer) بناءً على أبعاد العينة.
تُحسب هذه الطريقة إعداد الانتباه المتناثر (sparse attention) اللازمة لمعالجة الفيديو بكفاءة في نموذج الترانسفورمر.
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
المعاملات
- image (PipelineImageInput) — الصورة المُدخلة التي تُشترط عليها عملية التوليد
- batch_size (int) — عدد مقاطع الفيديو التي سيتم توليدها
- num_channels_latents (int) — عدد القنوات في الفضاء الكامن
- height (int) — ارتفاع الفيديو المولّد
- width (int) — عرض الفيديو المولّد
- num_frames (int) — عدد الإطارات في الفيديو
- dtype (torch.dtype) — نوع البيانات للقيم الكامنة
- device (torch.device) — الجهاز الذي سيتم إنشاء المتغيرات الكامنة عليه
- generator (torch.Generator) — مولّد الأرقام العشوائية
- latents (torch.Tensor) — كامنات موجودة مسبقًا للاستخدام
يعيد
torch.Tensor
موتر كامن مُعدّ مع الإطار الأول كصورة مُرمّزة
جهّز متغيرات كامنة أولية لتوليد الفيديو من الصورة.
ينشئ هذا الأسلوب ضوضاء عشوائية كحالات كامنة لجميع الإطارات باستثناء الإطار الأول، الذي يُستبدل بصورة الإدخال المُرمَّزة.
الاستشهاد
@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
}





