#
# مرخّص بموجب ترخيص Apache الإصدار 2.0 (المسمى "الترخيص")
# لا يجوز لك استخدام هذا الملف إلا وفقاً لشروط الترخيص.
# يمكنك الحصول على نسخة من الترخيص في
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# ما لم يقتضِ ذلك القانون المعمول به أو ما اتُّفق عليه كتابياً، البرمجيات
# تُوزَّع بموجب الرخصة على أساس "كما هي"،
# بلا أي ضمانات أو شروط من أي نوع، سواء صريحة أو ضمنية.
# راجع الترخيص لمعرفة اللغة المحددة التي تحكم الصلاحيات و
# قيود بموجب الترخيص. -->

  
    
      
    
  

# SkyReels-V2: نموذج توليدي للأفلام بطول غير محدود

[SkyReels-V2](https://huggingface.co/papers/2504.13074) من فريق SkyReels في Skywork AI.

*دفع التقدم الأخير في توليد الفيديو بواسطة نماذج الانتشار والإطارات التوليدية ذاتية الرجوع، ومع ذلك لا تزال تحديات جوهرية قائمة في التوفيق بين الامتثال للتعليمات النصية، والجودة البصرية، وديناميكيات الحركة، والمدة: فالحلول الوسطى في ديناميكيات الحركة لتعزيز الجودة البصرية الزمنية، والقيود المفروضة على مدة الفيديو (5-10 ثوانٍ) لإعطاء الأولوية للدقة، ونقص التوليد الواعي للمَشاهد الناتج عن عجز نماذج اللغة متعددة الوسائط العامة (MLLMs) عن تفسير القواعد السينمائية، مثل تكوين اللقطة، وتعابير الممثلين، وحركات الكاميرا. تعيق هذه القيود المتشابكة التوليد الواقعي للفيديو الطويل والتوليد بأسلوب الأفلام الاحترافية. لمعالجة هذه القيود، نقترح SkyReels-V2، وهو نموذج توليدي لأفلام بطول غير محدود، يجمع بين نموذج اللغة الكبير متعدد الوسائط (MLLM)، والتدريب المسبق متعدد المراحل، والتعلم المعزز، وإطار العمل القسري للانتشار (Diffusion Forcing Framework). أولاً، صممنا تمثيلاً بنيوياً شاملاً للفيديو يجمع بين الأوصاف العامة من نموذج اللغة متعدد الوسائط والأوصاف التفصيلية للغة اللقطة من نماذج الخبراء الفرعيين. بمساعدة التسمية البشرية، درّبنا بعد ذلك مُسمّي فيديو موحداً، يُدعى SkyCaptioner-V1، لتسمية بيانات الفيديو بكفاءة. ثانياً، أقمنا تدريباً مسبقاً بتدرج الدقة للتوليد الأساسي للفيديو، تبعه تحسين ما بعد التدريب على أربع مراحل: يُحسّن التدريب الدقيق الإشرافي (SFT) المتوازن المفاهيمي المبدئي الجودة الأساسية؛ يعالج التدريب الخاص بالحركة باستخدام التعلم المعزز (RL) مع بيانات التشوه المُسمّاة بشرياً والاصطناعية الشوائب الديناميكية؛ يتيح إطار العمل القسري للانتشار لدينا مع جداول ضوضاء غير متناقصة توليد الفيديو الطويل في مساحة بحث فعالة؛ يُحسّن التدريب الدقيق الإشرافي (SFT) عالي الجودة النهائي الوفاء البصري. جميع الأكواد والنماذج متاحة في [هذا الرابط https](https://github.com/SkyworkAI/SkyReels-V2).*

يمكنك العثور على جميع نقاط التفتيش الأصلية لنموذج SkyReels-V2 تحت منظمة [Skywork](https://huggingface.co/collections/Skywork/skyreels-v2-6801b1b93df627d441d0d0d9).

تدعم مكتبة Diffusers نماذج SkyReels-V2 التالية:
- [SkyReels-V2 DF 1.3B - 540P](https://huggingface.co/Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers)
- [SkyReels-V2 DF 14B - 540P](https://huggingface.co/Skywork/SkyReels-V2-DF-14B-540P-Diffusers)
- [SkyReels-V2 DF 14B - 720P](https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers)
- [SkyReels-V2 T2V 14B - 540P](https://huggingface.co/Skywork/SkyReels-V2-T2V-14B-540P-Diffusers)
- [SkyReels-V2 T2V 14B - 720P](https://huggingface.co/Skywork/SkyReels-V2-T2V-14B-720P-Diffusers)
- [SkyReels-V2 I2V 1.3B - 540P](https://huggingface.co/Skywork/SkyReels-V2-I2V-1.3B-540P-Diffusers)
- [SkyReels-V2 I2V 14B - 540P](https://huggingface.co/Skywork/SkyReels-V2-I2V-14B-540P-Diffusers)
- [SkyReels-V2 I2V 14B - 720P](https://huggingface.co/Skywork/SkyReels-V2-I2V-14B-720P-Diffusers)

تمت مساهمة هذا النموذج من قِبل [M. Tolga Cangöz](https://github.com/tolgacangoz).

> [!TIP]
> انقر على نماذج SkyReels-V2 في الشريط الجانبي الأيمن لمزيد من أمثلة توليد الفيديو.

### عرض _بصري_

يتميز المثال أدناه بالمعاملات التالية:

- `base_num_frames=97`
- `num_frames=97`
- `num_inference_steps=30`
- `ar_step=5`
- `causal_block_size=5`

مع `vae_scale_factor_temporal=4`، يُتوقع الحصول على `5` كتل، كل منها يتكون من `5` إطارات، وذلك حسب الحساب التالي:

`num_latent_frames: (97-1)//vae_scale_factor_temporal+1 = 25 frames -> 5 blocks of 5 frames each`

وتُحسب أقصى طول للسياق في الفضاء الكامن باستخدام `base_num_latent_frames`:

`base_num_latent_frames = (97-1)//vae_scale_factor_temporal+1 = 25 -> 25//5 = 5 blocks`

جدول زمني للمعالجة غير المتزامنة:
```text
┌─────────────────────────────────────────────────────────────────┐
│ Steps:    1    6   11   16   21   26   31   36   41   46   50   │
│ Block 1: [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]                       │
│ Block 2:      [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]                  │
│ Block 3:           [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]             │
│ Block 4:                [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]        │
│ Block 5:                     [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]   │
└─────────────────────────────────────────────────────────────────┘
```

بالنسبة للفيديوهات الطويلة (`num_frames` > `base_num_frames`): يعمل `base_num_frames` كـ "حجم النافذة المنزلقة" لمعالجة الفيديوهات الطويلة.

مثال: فيديو مكوّن من `257` إطارًا مع `base_num_frames=97` و`overlap_history=17`
```text
┌──── Iteration 1 (frames 1-97) ────┐
│ Processing window: 97 frames      │ → 5 blocks,
│ Generates: frames 1-97            │   async processing
└───────────────────────────────────┘
            ┌────── Iteration 2 (frames 81-177) ──────┐
            │ Processing window: 97 frames            │
            │ Overlap: 17 frames (81-97) from prev    │ → 5 blocks,
            │ Generates: frames 98-177                │   async processing
            └─────────────────────────────────────────┘
                        ┌────── Iteration 3 (frames 161-257) ──────┐
                        │ Processing window: 97 frames             │
                        │ Overlap: 17 frames (161-177) from prev   │ → 5 blocks,
                        │ Generates: frames 178-257                │   async processing
                        └──────────────────────────────────────────┘
```

تُنفّذ كل تكرار معالجةً غير متزامنة بشكل مستقل مع `5` كتل خاصة به. يتحكم `base_num_frames` في:
1. استهلاك الذاكرة (نافذة أكبر = ذاكرة VRAM أكثر)
2. طول سياق النموذج (يجب أن يتوافق مع قيود التدريب)
3. عدد الكتل لكل تكرار (`base_num_latent_frames // causal_block_size`)

تستغرق كل كتلة `30` خطوة لإكمال إزالة الضوضاء. تبدأ الكتلة N عند الخطوة: `1 + (N-1) x ar_step` إجمالي الخطوات: `30 + (5-1) x 5 = 50` خطوة

يعالج الوضع المتزامن (`ar_step=0`) جميع الكتل/الإطارات في وقت واحد:
```text
┌──────────────────────────────────────────────┐
│ Steps:       1            ...            30  │
│ All blocks: [■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■] │
└──────────────────────────────────────────────┘
```
إجمالي الخطوات: `30` خطوة

مثال على كيفية بناء مصفوفة الخطوات للمعالجة غير المتزامنة: بالنظر إلى المعلمات: (`num_inference_steps=30, flow_shift=8, num_frames=97, ar_step=5, causal_block_size=5`)
```
- num_latent_frames = (97 frames - 1) // (4 temporal downsampling) + 1 = 25
- step_template = [999, 995, 991, 986, 980, 975, 969, 963, 956, 948,
                   941, 932, 922, 912, 901, 888, 874, 859, 841, 822,
                   799, 773, 743, 708, 666, 615, 551, 470, 363, 216]
```

ينشئ الخوارزمية `step_matrix` بأبعاد `50x25` حيث:
```
- Row 1:  [999×5, 999×5, 999×5, 999×5, 999×5]
- Row 2:  [995×5, 999×5, 999×5, 999×5, 999×5]
- Row 3:  [991×5, 999×5, 999×5, 999×5, 999×5]
- ...
- Row 7:  [969×5, 995×5, 999×5, 999×5, 999×5]
- ...
- Row 21: [799×5, 888×5, 941×5, 975×5, 999×5]
- ...
- Row 35: [  0×5, 216×5, 666×5, 822×5, 901×5]
- ...
- Row 42: [  0×5,   0×5,   0×5, 551×5, 773×5]
- ...
- Row 50: [  0×5,   0×5,   0×5,   0×5, 216×5]
```

تحليل مفصّل للصف `6`:
```
- step_matrix[5]:      [ 975×5,  999×5,   999×5,   999×5,   999×5]
- step_index[5]:       [   6×5,    1×5,     0×5,     0×5,     0×5]
- step_update_mask[5]: [True×5, True×5, False×5, False×5, False×5]
- valid_interval[5]:   (0, 25)
```

النمط الأساسي: يتأخر الكتل `i` عن الكتل `i-1` بمقدار `ar_step=5` خطوة زمنية بالضبط، مما يخلق تأثير "إجبار الانتشار" المتدرج حيث تعتمد الكتل اللاحقة على كتل سابقة أنظف.

### توليد الفيديو من النص

يُبيّن المثال أدناه كيفية توليد فيديو من نص.

راجع دليل [تقليل استهلاك الذاكرة](../../optimization/memory) لمزيد من التفاصيل حول تقنيات توفير الذاكرة المختلفة.

من المستودع الأصلي:
>يمكنك استخدام --ar_step 5 لتفعيل الاستدلال غير المتزامن. عند استخدام الاستدلال غير المتزامن، يُوصى بإعداد --causal_block_size 5، بينما لا ينبغي ضبطه في حالة التوليد المتزامن... سيتطلب الاستدلال غير المتزامن خطوات أكثر لنشر التسلسل بأكمله، مما يعني أنه سيكون أبطأ من الوضع المتزامن. في تجاربنا، قد يحسّن الاستدلال غير المتزامن أداء اتباع التعليمات والاتساق البصري.

```py
import torch
from diffusers import AutoModel, SkyReelsV2DiffusionForcingPipeline, UniPCMultistepScheduler
from diffusers.utils import export_to_video

model_id = "Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers"
vae = AutoModel.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)

pipeline = SkyReelsV2DiffusionForcingPipeline.from_pretrained(
    model_id,
    vae=vae,
    dtype=torch.bfloat16,
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"
flow_shift = 8.0  # 8.0 for T2V, 5.0 for I2V
pipeline.scheduler = UniPCMultistepScheduler.from_config(pipeline.scheduler.config, flow_shift=flow_shift)

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."

output = pipeline(
    prompt=prompt,
    num_inference_steps=30,
    height=544,  # 720 for 720P
    width=960,   # 1280 for 720P
    num_frames=97,
    base_num_frames=97,  # 121 for 720P
    ar_step=5,  # Controls asynchronous inference (0 for synchronous mode)
    causal_block_size=5,  # Number of frames in each block for asynchronous processing
    overlap_history=None,  # Number of frames to overlap for smooth transitions in long videos; 17 for long video generations
    addnoise_condition=20,  # Improves consistency in long video generation
).frames[0]
export_to_video(output, "video.mp4", fps=24, quality=8)
```

### توليد فيديو من الإطار الأول والأخير

يُبيّن المثال أدناه كيفية استخدام خط أنابيب الصورة إلى الفيديو لتوليد فيديو باستخدام وصف نصي وإطار بداية وإطار نهاية.

```python
import numpy as np
import torch
import torchvision.transforms.functional as TF
from diffusers import AutoencoderKLWan, SkyReelsV2DiffusionForcingImageToVideoPipeline, UniPCMultistepScheduler
from diffusers.utils import export_to_video, load_image

model_id = "Skywork/SkyReels-V2-DF-1.3B-720P-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipeline = SkyReelsV2DiffusionForcingImageToVideoPipeline.from_pretrained(
    model_id, vae=vae, dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"
flow_shift = 5.0  # 8.0 for T2V, 5.0 for I2V
pipeline.scheduler = UniPCMultistepScheduler.from_config(pipeline.scheduler.config, flow_shift=flow_shift)

first_frame = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png")
last_frame = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png")

def aspect_ratio_resize(image, pipeline, max_area=720 * 1280):
    aspect_ratio = image.height / image.width
    mod_value = pipeline.vae_scale_factor_spatial * pipeline.transformer.config.patch_size[1]
    height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
    width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
    image = image.resize((width, height))
    return image, height, width

def center_crop_resize(image, height, width):
    # Calculate resize ratio to match first frame dimensions
    resize_ratio = max(width / image.width, height / image.height)

    # Resize the image
    width = round(image.width * resize_ratio)
    height = round(image.height * resize_ratio)
    size = [width, height]
    image = TF.center_crop(image, size)

    return image, height, width

first_frame, height, width = aspect_ratio_resize(first_frame, pipeline)
if last_frame.size != first_frame.size:
    last_frame, _, _ = center_crop_resize(last_frame, height, width)

prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."

output = pipeline(
    image=first_frame, last_image=last_frame, prompt=prompt, height=height, width=width, guidance_scale=5.0
).frames[0]
export_to_video(output, "video.mp4", fps=24, quality=8)
```

### توليد فيديو من فيديو

يمدّد `SkyReelsV2DiffusionForcingVideoToVideoPipeline` مقطع فيديو معيّنًا.

```python
import numpy as np
import torch
import torchvision.transforms.functional as TF
from diffusers import AutoencoderKLWan, SkyReelsV2DiffusionForcingVideoToVideoPipeline, UniPCMultistepScheduler
from diffusers.utils import export_to_video, load_video

model_id = "Skywork/SkyReels-V2-DF-1.3B-720P-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipeline = SkyReelsV2DiffusionForcingVideoToVideoPipeline.from_pretrained(
    model_id, vae=vae, dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"
flow_shift = 5.0  # 8.0 for T2V, 5.0 for I2V
pipeline.scheduler = UniPCMultistepScheduler.from_config(pipeline.scheduler.config, flow_shift=flow_shift)

video = load_video("input_video.mp4")

prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."

output = pipeline(
    video=video, prompt=prompt, height=720, width=1280, guidance_scale=5.0, overlap_history=17,
    num_inference_steps=30, num_frames=257, base_num_frames=121#, ar_step=5, causal_block_size=5,
).frames[0]
export_to_video(output, "video.mp4", fps=24, quality=8)
# Total frames will be the number of frames of the given video + 257
```

## ملاحظات

- يدعم SkyReels-V2 نماذج LoRA من خلال [load_lora_weights()](/docs/diffusers/v0.43.0/ar/api/loaders/lora#diffusers.loaders.SkyReelsV2LoraLoaderMixin.load_lora_weights).

يتوفر `SkyReelsV2Pipeline` و`SkyReelsV2ImageToVideoPipeline` أيضًا دون تطبيق إطار عمل Diffusion Forcing.

## SkyReelsV2DiffusionForcingPipeline[[diffusers.SkyReelsV2DiffusionForcingPipeline]]

#### diffusers.SkyReelsV2DiffusionForcingPipeline[[diffusers.SkyReelsV2DiffusionForcingPipeline]]

```python
diffusers.SkyReelsV2DiffusionForcingPipeline(tokenizer: AutoTokenizer, text_encoder: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.umt5.modeling_umt5.UMT5EncoderModel, transformer: SkyReelsV2Transformer3DModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py#L128)

**المعاملات:**

tokenizer (`AutoTokenizer`) : مُجزِّئ (Tokenizer) من [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

text_encoder (`UMT5EncoderModel`) : [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

transformer ([SkyReelsV2Transformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/skyreels_v2_transformer_3d#diffusers.SkyReelsV2Transformer3DModel)) : نموذج Transformer مشروط لإزالة الضوضاء من الكامنات (latents) المُرمّزة للصور.

scheduler ([UniPCMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/ar/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.

خط أنابيب لتوليد النص إلى فيديو (t2v) باستخدام SkyReels-V2 مع إجبار الانتشار.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز محدد، إلخ).

#### __call__[[diffusers.SkyReelsV2DiffusionForcingPipeline.__call__]]

```python
__call__(prompt: str | list[str], negative_prompt: str | list[str] = None, height: int = 544, width: int = 960, num_frames: int = 97, num_inference_steps: int = 50, guidance_scale: float = 6.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, overlap_history: int | None = None, addnoise_condition: float = 0, base_num_frames: int = 97, ar_step: int = 0, causal_block_size: int | None = None, fps: int = 24)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py#L598)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

height (`int`، القيمة الافتراضية `544`) : ارتفاع الفيديو المولّد.

width (`int`، القيمة الافتراضية `960`) : عرض الفيديو المولّد.

num_frames (`int`، القيمة الافتراضية `97`) : عدد الإطارات في الفيديو المولّد.

num_inference_steps (`int`، القيمة الافتراضية `50`) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

guidance_scale (`float`، القيمة الافتراضية هي `6.0`) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` في المعادلة 2 من [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. (**6.0 لنموذج T2V**، **5.0 لنموذج I2V**)

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم.

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `negative_prompt`.

output_type (`str`، *اختياري*، الافتراضي `"np"`) : صيغة الصورة المولّدة. اختر بين `PIL.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `SkyReelsV2PipelineOutput` بدلاً من tuple عادي.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

callback_on_step_end (`Callable`، `PipelineCallback`، `MultiPipelineCallbacks`، *اختياري*) : دالة أو فئة فرعية من `PipelineCallback` أو `MultiPipelineCallbacks` تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. ستتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (`int`، *اختياري*، القيمة الافتراضية `512`) : الحد الأقصى لطول تسلسل الاستدعاء.

overlap_history (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات المتداخلة لضمان انتقالات سلسة في الفيديوهات الطويلة. إذا كانت القيمة `None`، فإن خط الأنابيب يفترض وضع توليد فيديو قصير، ولا يُطبَّق أي تداخل. يُوصى بإعداد القيم 17 أو 37.

addnoise_condition (`float`، *اختياري*، القيمة الافتراضية `0`) : يُستخدم هذا المعامل للمساعدة في تنعيم توليد الفيديو الطويل عن طريق إضافة بعض الضوضاء إلى الشرط النظيف. الضوضاء الكبيرة جدًا قد تسبب عدم اتساق أيضًا. القيمة 20 هي القيمة الموصى بها، ويمكنك تجربة قيم أكبر، لكن يُنصح بعدم تجاوز 50.

base_num_frames (`int`, *اختياري*، القيمة الافتراضية `97`) : 97 أو 121 | عدد الإطارات الأساسية (**97 بدقة 540P**، **121 بدقة 720P**)

ar_step (`int`, *اختياري*, القيمة الافتراضية `0`) : يتحكم في الاستدلال غير المتزامن (0 للوضع المتزامن). يمكنك تعيين `ar_step=5` لتفعيل الاستدلال غير المتزامن. عند استخدام الاستدلال غير المتزامن، يُوصى بتعيين `causal_block_size=5`، بينما لا يُفترض تعيينه في حالة التوليد المتزامن. سيتطلب الاستدلال غير المتزامن خطوات أكثر لنشر التسلسل بأكمله، مما يعني أنه سيكون أبطأ من الوضع المتزامن. في تجاربنا، قد يحسّن الاستدلال غير المتزامن أداء اتباع التعليمات والاتساق البصري.

causal_block_size (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات في كل كتلة/مقطع. يُنصح باستخدامه عند الاستدلال غير المتزامن (عندما ar_step > 0)

fps (`int`، *اختياري*، القيمة الافتراضية `24`) : معدل الإطارات للفيديو المولّد

**يعيد:** `~SkyReelsV2PipelineOutput` أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد `SkyReelsV2PipelineOutput`، وإلا يُعاد `tuple` حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم `bool` تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:
```py
>>> import torch
>>> from diffusers import (
...     SkyReelsV2DiffusionForcingPipeline,
...     UniPCMultistepScheduler,
...     AutoencoderKLWan,
... )
>>> from diffusers.utils import export_to_video

>>> # Load the pipeline
>>> # Available models:
>>> # - Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-720P-Diffusers
>>> vae = AutoencoderKLWan.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     subfolder="vae",
...     torch_dtype=torch.float32,
... )
>>> pipe = SkyReelsV2DiffusionForcingPipeline.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     vae=vae,
...     torch_dtype=torch.bfloat16,
... )
>>> flow_shift = 8.0  # 8.0 for T2V, 5.0 for I2V
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe = 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."

>>> output = pipe(
...     prompt=prompt,
...     num_inference_steps=30,
...     height=544,
...     width=960,
...     guidance_scale=6.0,  # 6.0 for T2V, 5.0 for I2V
...     num_frames=97,
...     ar_step=5,  # Controls asynchronous inference (0 for synchronous mode)
...     causal_block_size=5,  # Number of frames processed together in a causal block
...     overlap_history=None,  # Number of frames to overlap for smooth transitions in long videos
...     addnoise_condition=20,  # Improves consistency in long video generation
... ).frames[0]
>>> export_to_video(output, "video.mp4", fps=24, quality=8)
```

#### encode_prompt[[diffusers.SkyReelsV2DiffusionForcingPipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py#L219)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

do_classifier_free_guidance (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

device : (`torch.device`, *اختياري*): جهاز torch

dtype : (`torch.dtype`, *اختياري*): torch dtype

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

#### generate_timestep_matrix[[diffusers.SkyReelsV2DiffusionForcingPipeline.generate_timestep_matrix]]

```python
generate_timestep_matrix(num_latent_frames: int, step_template: Tensor, base_num_latent_frames: int, ar_step: int = 5, num_pre_ready: int = 0, causal_block_size: int = 1, shrink_interval_with_mask: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py#L418)

**المعاملات:**

num_latent_frames (int) : العدد الإجمالي لإطارات الكامنة التي سيتم توليدها

step_template (torch.Tensor) : جدول الخطوات الزمنية الأساسي (مثلًا، [1000, 800, 600, ..., 0])

base_num_latent_frames (int) : الحد الأقصى لعدد الإطارات التي يمكن للنموذج معالجتها في تمريرة أمامية واحدة

ar_step (int, اختياري) : حجم الخطوة التوليدية الذاتية للتأخير الزمني. 0 = متزامن، >0 = غير متزامن. القيمة الافتراضية هي 5.

num_pre_ready (int, اختياري) : عدد الإطارات التي تم إزالة الضوضاء منها مسبقًا (مثلًا، من بادئة في مهمة video2video). القيمة الافتراضية هي 0.

causal_block_size (int, اختياري) : عدد الإطارات التي تتم معالجتها كتسببي. القيمة الافتراضية هي 1.

shrink_interval_with_mask (bool, اختياري) : ما إذا كان سيتم تحسين فترات المعالجة. القيمة الافتراضية هي False.

**يعيد:** `tuple containing`

- step_matrix (torch.Tensor): مصفوفة خطوات الزمن لكل إطار في كل تكرار الشكل: [num_iterations, num_latent_frames]
- step_index (torch.Tensor): مصفوفة الفهرس للبحث عن خطوة الزمن. الشكل: [num_iterations, num_latent_frames]
- step_update_mask (torch.Tensor): قناع منطقي (Boolean mask) يُحدد الإطارات التي يجب تحديثها. الشكل: [num_iterations, num_latent_frames]
- valid_interval (list[tuple]): قائمة من الفترات (البداية، النهاية) لكل تكرار

**يرفع:** ``ValueError``

- ``ValueError`` -- إذا كانت قيمة ar_step صغيرة جدًا بالنسبة للإعداد المعطى

تنفّذ هذه الدالة خوارزمية الإكراه الانتشاري الأساسية التي تنشئ جدول إزالة ضوضاء منسّقًا عبر الإطارات الزمنية. وهي تدعم كلا وضعي التوليد المتزامن وغير المتزامن:

**الوضع المتزامن** (ar_step=0, causal_block_size=1):
- تتم إزالة الضوضاء من جميع الإطارات في وقت واحد عند كل خطوة زمنية
- تتبع كل إطار نفس مسار إزالة الضوضاء: [1000, 800, 600, ..., 0]
- أبسط، لكن قد يكون اتساقها الزمني أقل في مقاطع الفيديو الطويلة

**الوضع غير المتزامن** (ar_step>0, causal_block_size>1):
- تُجمَّع الإطارات في كتل سببية وتُعالَج على مستوى الكتل/المقاطع
- يتم إزالة الضوضاء من كل كتلة وفق نمط متدرّج، مما يُنشئ "موجة إزالة ضوضاء"
- تكون الكتل السابقة أكثر إزالةً للضوضاء، بينما تتأخر الكتل اللاحقة بفارق ar_step خطوات زمنية
- يُنشئ اعتماديات زمنية أقوى واتساقاً أفضل

## SkyReelsV2DiffusionForcingImageToVideoPipeline[[diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline]]

#### diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline[[diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline]]

```python
diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline(tokenizer: AutoTokenizer, text_encoder: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.umt5.modeling_umt5.UMT5EncoderModel, transformer: SkyReelsV2Transformer3DModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py#L133)

**المعاملات:**

tokenizer (`AutoTokenizer`) : مُجزِّئ (Tokenizer) من [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

text_encoder (`UMT5EncoderModel`) : [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

transformer ([SkyReelsV2Transformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/skyreels_v2_transformer_3d#diffusers.SkyReelsV2Transformer3DModel)) : نموذج Transformer مشروط لإزالة الضوضاء من الكامنات (latents) المُرمّزة للصور.

scheduler ([UniPCMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/ar/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.

خط أنابيب لتوليد الفيديو من الصورة (i2v) باستخدام SkyReels-V2 مع إجبار الانتشار.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز محدد، إلخ).

#### __call__[[diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline.__call__]]

```python
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 544, width: int = 960, num_frames: int = 97, num_inference_steps: int = 50, guidance_scale: float = 5.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, last_image: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, overlap_history: int | None = None, addnoise_condition: float = 0, base_num_frames: int = 97, ar_step: int = 0, causal_block_size: int | None = None, fps: int = 24)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py#L644)

**المعاملات:**

image (`PipelineImageInput`) : الصورة المدخلة التي تُشترط عليها عملية التوليد. يجب أن تكون صورة، أو قائمة من الصور، أو `torch.Tensor`.

prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

height (`int`، القيمة الافتراضية `544`) : ارتفاع الفيديو المولّد.

width (`int`، القيمة الافتراضية `960`) : عرض الفيديو المولّد.

num_frames (`int`، القيمة الافتراضية `97`) : عدد الإطارات في الفيديو المولّد.

num_inference_steps (`int`، القيمة الافتراضية `50`) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

guidance_scale (`float`, defaults to `5.0`) : Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2. of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting `guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`, usually at the expense of lower image quality. (**6.0 for T2V**, **5.0 for I2V**)

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم.

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `negative_prompt`.

image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات صور مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات الصور بسهولة (الوزن). إذا لم تُقدَّم، يتم توليد تمثيلات الصور من معامل الإدخال `image`.

last_image (`torch.Tensor`، *اختياري*) : تمثيلات صور مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات الصور بسهولة (الوزن). إذا لم تُقدَّم، يتم توليد تمثيلات الصور من معامل الإدخال `image`.

output_type (`str`، *اختياري*، الافتراضي `"np"`) : صيغة الصورة المولّدة. اختر بين `PIL.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `SkyReelsV2PipelineOutput` بدلاً من tuple عادي.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

callback_on_step_end (`Callable`، `PipelineCallback`، `MultiPipelineCallbacks`، *اختياري*) : دالة أو فئة فرعية من `PipelineCallback` أو `MultiPipelineCallbacks` تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. ستتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (`int`، *اختياري*، القيمة الافتراضية `512`) : الحد الأقصى لطول تسلسل الاستدعاء.

overlap_history (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات المتداخلة لضمان انتقالات سلسة في الفيديوهات الطويلة. إذا كانت القيمة `None`، فإن خط الأنابيب يفترض وضع توليد فيديو قصير، ولا يُطبَّق أي تداخل. يُوصى بإعداد القيم 17 أو 37.

addnoise_condition (`float`، *اختياري*، القيمة الافتراضية `0`) : يُستخدم هذا المعامل للمساعدة في تنعيم توليد الفيديو الطويل عن طريق إضافة بعض الضوضاء إلى الشرط النظيف. الضوضاء الكبيرة جدًا قد تسبب عدم اتساق أيضًا. القيمة 20 هي القيمة الموصى بها، ويمكنك تجربة قيم أكبر، لكن يُنصح بعدم تجاوز 50.

base_num_frames (`int`, *اختياري*، القيمة الافتراضية `97`) : 97 أو 121 | عدد الإطارات الأساسية (**97 بدقة 540P**، **121 بدقة 720P**)

ar_step (`int`, *اختياري*, القيمة الافتراضية `0`) : يتحكم في الاستدلال غير المتزامن (0 للوضع المتزامن). يمكنك تعيين `ar_step=5` لتفعيل الاستدلال غير المتزامن. عند استخدام الاستدلال غير المتزامن، يُوصى بتعيين `causal_block_size=5`، بينما لا يُفترض تعيينه في حالة التوليد المتزامن. سيتطلب الاستدلال غير المتزامن خطوات أكثر لنشر التسلسل بأكمله، مما يعني أنه سيكون أبطأ من الوضع المتزامن. في تجاربنا، قد يحسّن الاستدلال غير المتزامن أداء اتباع التعليمات والاتساق البصري.

causal_block_size (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات في كل كتلة/مقطع. يُنصح باستخدامه عند الاستدلال غير المتزامن (عندما ar_step > 0)

fps (`int`، *اختياري*، القيمة الافتراضية `24`) : معدل الإطارات للفيديو المولّد

**يعيد:** `~SkyReelsV2PipelineOutput` أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد `SkyReelsV2PipelineOutput`، وإلا يُعاد `tuple` حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم `bool` تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:
```py
>>> import torch
>>> from diffusers import (
...     SkyReelsV2DiffusionForcingImageToVideoPipeline,
...     UniPCMultistepScheduler,
...     AutoencoderKLWan,
... )
>>> from diffusers.utils import export_to_video
>>> from PIL import Image

>>> # Load the pipeline
>>> # Available models:
>>> # - Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-720P-Diffusers
>>> vae = AutoencoderKLWan.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     subfolder="vae",
...     torch_dtype=torch.float32,
... )
>>> pipe = SkyReelsV2DiffusionForcingImageToVideoPipeline.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     vae=vae,
...     torch_dtype=torch.bfloat16,
... )
>>> flow_shift = 5.0  # 8.0 for T2V, 5.0 for I2V
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe = 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."
>>> image = Image.open("path/to/image.png")

>>> output = pipe(
...     image=image,
...     prompt=prompt,
...     num_inference_steps=50,
...     height=544,
...     width=960,
...     guidance_scale=5.0,  # 6.0 for T2V, 5.0 for I2V
...     num_frames=97,
...     ar_step=0,  # Controls asynchronous inference (0 for synchronous mode)
...     overlap_history=None,  # Number of frames to overlap for smooth transitions in long videos
...     addnoise_condition=20,  # Improves consistency in long video generation
... ).frames[0]
>>> export_to_video(output, "video.mp4", fps=24, quality=8)
```

#### encode_prompt[[diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py#L224)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

do_classifier_free_guidance (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

device : (`torch.device`, *اختياري*): جهاز torch

dtype : (`torch.dtype`, *اختياري*): torch dtype

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

#### generate_timestep_matrix[[diffusers.SkyReelsV2DiffusionForcingImageToVideoPipeline.generate_timestep_matrix]]

```python
generate_timestep_matrix(num_latent_frames: int, step_template: Tensor, base_num_latent_frames: int, ar_step: int = 5, num_pre_ready: int = 0, causal_block_size: int = 1, shrink_interval_with_mask: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py#L464)

**المعاملات:**

num_latent_frames (int) : العدد الإجمالي لإطارات الكامنة التي سيتم توليدها

step_template (torch.Tensor) : جدول الخطوات الزمنية الأساسي (مثلًا، [1000, 800, 600, ..., 0])

base_num_latent_frames (int) : الحد الأقصى لعدد الإطارات التي يمكن للنموذج معالجتها في تمريرة أمامية واحدة

ar_step (int, اختياري) : حجم الخطوة التوليدية الذاتية للتأخير الزمني. 0 = متزامن، >0 = غير متزامن. القيمة الافتراضية هي 5.

num_pre_ready (int, اختياري) : عدد الإطارات التي تم إزالة الضوضاء منها مسبقًا (مثلًا، من بادئة في مهمة video2video). القيمة الافتراضية هي 0.

causal_block_size (int, اختياري) : عدد الإطارات التي تتم معالجتها كتسببي. القيمة الافتراضية هي 1.

shrink_interval_with_mask (bool, اختياري) : ما إذا كان سيتم تحسين فترات المعالجة. القيمة الافتراضية هي False.

**يعيد:** `tuple containing`

- step_matrix (torch.Tensor): مصفوفة خطوات الزمن لكل إطار في كل تكرار الشكل: [num_iterations, num_latent_frames]
- step_index (torch.Tensor): مصفوفة الفهرس للبحث عن خطوة الزمن. الشكل: [num_iterations, num_latent_frames]
- step_update_mask (torch.Tensor): قناع منطقي (Boolean mask) يُحدد الإطارات التي يجب تحديثها. الشكل: [num_iterations, num_latent_frames]
- valid_interval (list[tuple]): قائمة من الفترات (البداية، النهاية) لكل تكرار

**يرفع:** ``ValueError``

- ``ValueError`` -- إذا كانت قيمة ar_step صغيرة جدًا بالنسبة للإعداد المعطى

تنفّذ هذه الدالة خوارزمية الإكراه الانتشاري الأساسية التي تنشئ جدول إزالة ضوضاء منسّقًا عبر الإطارات الزمنية. وهي تدعم كلا وضعي التوليد المتزامن وغير المتزامن:

**الوضع المتزامن** (ar_step=0, causal_block_size=1):
- تتم إزالة الضوضاء من جميع الإطارات في وقت واحد عند كل خطوة زمنية
- تتبع كل إطار نفس مسار إزالة الضوضاء: [1000, 800, 600, ..., 0]
- أبسط، لكن قد يكون اتساقها الزمني أقل في مقاطع الفيديو الطويلة

**الوضع غير المتزامن** (ar_step>0, causal_block_size>1):
- تُجمَّع الإطارات في كتل سببية وتُعالَج على مستوى الكتل/المقاطع
- يتم إزالة الضوضاء من كل كتلة وفق نمط متدرّج، مما يُنشئ "موجة إزالة ضوضاء"
- تكون الكتل السابقة أكثر إزالةً للضوضاء، بينما تتأخر الكتل اللاحقة بفارق ar_step خطوات زمنية
- يُنشئ اعتماديات زمنية أقوى واتساقاً أفضل

## SkyReelsV2DiffusionForcingVideoToVideoPipeline[[diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline]]

#### diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline[[diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline]]

```python
diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline(tokenizer: AutoTokenizer, text_encoder: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.umt5.modeling_umt5.UMT5EncoderModel, transformer: SkyReelsV2Transformer3DModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py#L189)

**المعاملات:**

tokenizer (`AutoTokenizer`) : مُجزِّئ (Tokenizer) من [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

text_encoder (`UMT5EncoderModel`) : [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

transformer ([SkyReelsV2Transformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/skyreels_v2_transformer_3d#diffusers.SkyReelsV2Transformer3DModel)) : نموذج Transformer مشروط لإزالة الضوضاء من الكامنات (latents) المُرمّزة للصور.

scheduler ([UniPCMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/ar/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.

خط أنابيب لتوليد فيديو إلى فيديو (v2v) باستخدام SkyReels-V2 مع إجبار الانتشار.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز محدد، إلخ).

#### __call__[[diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline.__call__]]

```python
__call__(video: list[PIL.Image.Image], prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 544, width: int = 960, num_frames: int = 120, num_inference_steps: int = 50, guidance_scale: float = 6.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, overlap_history: int | None = None, addnoise_condition: float = 0, base_num_frames: int = 97, ar_step: int = 0, causal_block_size: int | None = None, fps: int = 24)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py#L684)

**المعاملات:**

video (`list[Image.Image]`) : الفيديو الذي يوجّه توليد الفيديو.

prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الفيديو. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي لا ينبغي أن توجه توليد الفيديو. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

height (`int`، القيمة الافتراضية `544`) : ارتفاع الفيديو المولّد.

width (`int`، القيمة الافتراضية `960`) : عرض الفيديو المولّد.

num_frames (`int`، القيمة الافتراضية `120`) : عدد الإطارات في الفيديو المولّد.

num_inference_steps (`int`، القيمة الافتراضية `50`) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

guidance_scale (`float`، القيمة الافتراضية هي `6.0`) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598). يُعرَّف `guidance_scale` على أنه `w` في المعادلة 2 من [Imagen Paper](https://arxiv.org/pdf/2205.11487.pdf). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. (**6.0 لنموذج T2V**، **5.0 لنموذج I2V**)

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم.

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `negative_prompt`.

output_type (`str`، *اختياري*، الافتراضي `"np"`) : صيغة الصورة المولّدة. اختر بين `PIL.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `SkyReelsV2PipelineOutput` بدلاً من tuple عادي.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

callback_on_step_end (`Callable`، `PipelineCallback`، `MultiPipelineCallbacks`، *اختياري*) : دالة أو فئة فرعية من `PipelineCallback` أو `MultiPipelineCallbacks` تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. ستتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (`int`، *اختياري*، القيمة الافتراضية `512`) : الحد الأقصى لطول تسلسل الاستدعاء.

overlap_history (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات المتداخلة لضمان انتقالات سلسة في الفيديوهات الطويلة. إذا كانت القيمة `None`، فإن خط الأنابيب يفترض وضع توليد فيديو قصير، ولا يُطبَّق أي تداخل. يُوصى بإعداد القيم 17 أو 37.

addnoise_condition (`float`، *اختياري*، القيمة الافتراضية `0`) : يُستخدم هذا المعامل للمساعدة في تنعيم توليد الفيديو الطويل عن طريق إضافة بعض الضوضاء إلى الشرط النظيف. الضوضاء الكبيرة جدًا قد تسبب عدم اتساق أيضًا. القيمة 20 هي القيمة الموصى بها، ويمكنك تجربة قيم أكبر، لكن يُنصح بعدم تجاوز 50.

base_num_frames (`int`, *اختياري*، القيمة الافتراضية `97`) : 97 أو 121 | عدد الإطارات الأساسية (**97 بدقة 540P**، **121 بدقة 720P**)

ar_step (`int`, *اختياري*, القيمة الافتراضية `0`) : يتحكم في الاستدلال غير المتزامن (0 للوضع المتزامن). يمكنك تعيين `ar_step=5` لتفعيل الاستدلال غير المتزامن. عند استخدام الاستدلال غير المتزامن، يُوصى بتعيين `causal_block_size=5`، بينما لا يُفترض تعيينه في حالة التوليد المتزامن. سيتطلب الاستدلال غير المتزامن خطوات أكثر لنشر التسلسل بأكمله، مما يعني أنه سيكون أبطأ من الوضع المتزامن. في تجاربنا، قد يحسّن الاستدلال غير المتزامن أداء اتباع التعليمات والاتساق البصري.

causal_block_size (`int`، *اختياري*، القيمة الافتراضية `None`) : عدد الإطارات في كل كتلة/مقطع. يُنصح باستخدامه عند الاستدلال غير المتزامن (عندما ar_step > 0)

fps (`int`، *اختياري*، القيمة الافتراضية `24`) : معدل الإطارات للفيديو المولّد

**يعيد:** `~SkyReelsV2PipelineOutput` أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد `SkyReelsV2PipelineOutput`، وإلا يُعاد `tuple` حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم `bool` تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:
```py
>>> import torch
>>> from diffusers import (
...     SkyReelsV2DiffusionForcingVideoToVideoPipeline,
...     UniPCMultistepScheduler,
...     AutoencoderKLWan,
... )
>>> from diffusers.utils import export_to_video

>>> # Load the pipeline
>>> # Available models:
>>> # - Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-DF-14B-720P-Diffusers
>>> vae = AutoencoderKLWan.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     subfolder="vae",
...     torch_dtype=torch.float32,
... )
>>> pipe = SkyReelsV2DiffusionForcingVideoToVideoPipeline.from_pretrained(
...     "Skywork/SkyReels-V2-DF-14B-720P-Diffusers",
...     vae=vae,
...     torch_dtype=torch.bfloat16,
... )
>>> flow_shift = 8.0  # 8.0 for T2V, 5.0 for I2V
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe = 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."

>>> output = pipe(
...     prompt=prompt,
...     num_inference_steps=50,
...     height=544,
...     width=960,
...     guidance_scale=6.0,  # 6.0 for T2V, 5.0 for I2V
...     num_frames=97,
...     ar_step=0,  # Controls asynchronous inference (0 for synchronous mode)
...     overlap_history=None,  # Number of frames to overlap for smooth transitions in long videos
...     addnoise_condition=20,  # Improves consistency in long video generation
... ).frames[0]
>>> export_to_video(output, "video.mp4", fps=24, quality=8)
```

#### encode_prompt[[diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py#L280)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

do_classifier_free_guidance (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

device : (`torch.device`, *اختياري*): جهاز torch

dtype : (`torch.dtype`, *اختياري*): torch dtype

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

#### generate_timestep_matrix[[diffusers.SkyReelsV2DiffusionForcingVideoToVideoPipeline.generate_timestep_matrix]]

```python
generate_timestep_matrix(num_latent_frames: int, step_template: Tensor, base_num_latent_frames: int, ar_step: int = 5, num_pre_ready: int = 0, causal_block_size: int = 1, shrink_interval_with_mask: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py#L504)

**المعاملات:**

num_latent_frames (int) : العدد الإجمالي لإطارات الكامنة التي سيتم توليدها

step_template (torch.Tensor) : جدول الخطوات الزمنية الأساسي (مثلًا، [1000, 800, 600, ..., 0])

base_num_latent_frames (int) : الحد الأقصى لعدد الإطارات التي يمكن للنموذج معالجتها في تمريرة أمامية واحدة

ar_step (int, اختياري) : حجم الخطوة التوليدية الذاتية للتأخير الزمني. 0 = متزامن، >0 = غير متزامن. القيمة الافتراضية هي 5.

num_pre_ready (int, اختياري) : عدد الإطارات التي تم إزالة الضوضاء منها مسبقًا (مثلًا، من بادئة في مهمة video2video). القيمة الافتراضية هي 0.

causal_block_size (int, اختياري) : عدد الإطارات التي تتم معالجتها كتسببي. القيمة الافتراضية هي 1.

shrink_interval_with_mask (bool, اختياري) : ما إذا كان سيتم تحسين فترات المعالجة. القيمة الافتراضية هي False.

**يعيد:** `tuple containing`

- step_matrix (torch.Tensor): مصفوفة خطوات الزمن لكل إطار في كل تكرار الشكل: [num_iterations, num_latent_frames]
- step_index (torch.Tensor): مصفوفة الفهرس للبحث عن خطوة الزمن. الشكل: [num_iterations, num_latent_frames]
- step_update_mask (torch.Tensor): قناع منطقي (Boolean mask) يُحدد الإطارات التي يجب تحديثها. الشكل: [num_iterations, num_latent_frames]
- valid_interval (list[tuple]): قائمة من الفترات (البداية، النهاية) لكل تكرار

**يرفع:** ``ValueError``

- ``ValueError`` -- إذا كانت قيمة ar_step صغيرة جدًا بالنسبة للإعداد المعطى

تنفّذ هذه الدالة خوارزمية الإكراه الانتشاري الأساسية التي تنشئ جدول إزالة ضوضاء منسّقًا عبر الإطارات الزمنية. وهي تدعم كلا وضعي التوليد المتزامن وغير المتزامن:

**الوضع المتزامن** (ar_step=0, causal_block_size=1):
- تتم إزالة الضوضاء من جميع الإطارات في وقت واحد عند كل خطوة زمنية
- تتبع كل إطار نفس مسار إزالة الضوضاء: [1000, 800, 600, ..., 0]
- أبسط، لكن قد يكون اتساقها الزمني أقل في مقاطع الفيديو الطويلة

**الوضع غير المتزامن** (ar_step>0, causal_block_size>1):
- تُجمَّع الإطارات في كتل سببية وتُعالَج على مستوى الكتل/المقاطع
- يتم إزالة الضوضاء من كل كتلة وفق نمط متدرّج، مما يُنشئ "موجة إزالة ضوضاء"
- تكون الكتل السابقة أكثر إزالةً للضوضاء، بينما تتأخر الكتل اللاحقة بفارق ar_step خطوات زمنية
- يُنشئ اعتماديات زمنية أقوى واتساقاً أفضل

## SkyReelsV2Pipeline[[diffusers.SkyReelsV2Pipeline]]

#### diffusers.SkyReelsV2Pipeline[[diffusers.SkyReelsV2Pipeline]]

```python
diffusers.SkyReelsV2Pipeline(tokenizer: AutoTokenizer, text_encoder: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.umt5.modeling_umt5.UMT5EncoderModel, transformer: SkyReelsV2Transformer3DModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py#L107)

**المعاملات:**

tokenizer (`T5Tokenizer`) : مُجزِّئ من [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

text_encoder (`T5EncoderModel`) : [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

transformer ([SkyReelsV2Transformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/skyreels_v2_transformer_3d#diffusers.SkyReelsV2Transformer3DModel)) : نموذج Transformer مشروط لإزالة الضوضاء من المتغيرات الكامنة المدخلة.

scheduler ([UniPCMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/ar/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.

خط أنابيب لتوليد النص إلى فيديو (t2v) باستخدام SkyReels-V2.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

#### __call__[[diffusers.SkyReelsV2Pipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 544, width: int = 960, num_frames: int = 97, num_inference_steps: int = 50, guidance_scale: float = 6.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py#L377)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي لا ينبغي أن توجه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (`guidance_scale < 1`).

height (`int`، القيمة الافتراضية `544`) : ارتفاع الصورة المولّدة بالبكسل.

width (`int`، القيمة الافتراضية `960`) : عرض الصورة المولدة بالبكسل.

num_frames (`int`، القيمة الافتراضية `97`) : عدد الإطارات في الفيديو المولّد.

num_inference_steps (`int`، القيمة الافتراضية `50`) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

guidance_scale (`float`، القيمة الافتراضية `6.0`) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم.

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لضبط مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد `negative_prompt_embeds` من معامل الإدخال `negative_prompt`.

output_type (`str`، *اختياري*، الافتراضي `"np"`) : صيغة الصورة المولّدة. اختر بين `PIL.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `SkyReelsV2PipelineOutput` بدلاً من tuple عادي.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

callback_on_step_end (`Callable`، `PipelineCallback`، `MultiPipelineCallbacks`، *اختياري*) : دالة أو فئة فرعية من `PipelineCallback` أو `MultiPipelineCallbacks` تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. ستتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (`int`، *اختياري*، القيمة الافتراضية `512`) : الحد الأقصى لطول التسلسل لمُشفِّر النص.

**يعيد:** `~SkyReelsV2PipelineOutput` أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد `SkyReelsV2PipelineOutput`، وإلا يُعاد `tuple` حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم `bool` تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:
```py
>>> import torch
>>> from diffusers import (
...     SkyReelsV2Pipeline,
...     UniPCMultistepScheduler,
...     AutoencoderKLWan,
... )
>>> from diffusers.utils import export_to_video

>>> # Load the pipeline
>>> # Available models:
>>> # - Skywork/SkyReels-V2-T2V-14B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-T2V-14B-720P-Diffusers
>>> vae = AutoencoderKLWan.from_pretrained(
...     "Skywork/SkyReels-V2-T2V-14B-720P-Diffusers",
...     subfolder="vae",
...     torch_dtype=torch.float32,
... )
>>> pipe = SkyReelsV2Pipeline.from_pretrained(
...     "Skywork/SkyReels-V2-T2V-14B-720P-Diffusers",
...     vae=vae,
...     torch_dtype=torch.bfloat16,
... )
>>> flow_shift = 8.0  # 8.0 for T2V, 5.0 for I2V
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe = 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."

>>> output = pipe(
...     prompt=prompt,
...     num_inference_steps=50,
...     height=544,
...     width=960,
...     guidance_scale=6.0,  # 6.0 for T2V, 5.0 for I2V
...     num_frames=97,
... ).frames[0]
>>> export_to_video(output, "video.mp4", fps=24, quality=8)
```

#### encode_prompt[[diffusers.SkyReelsV2Pipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py#L198)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

do_classifier_free_guidance (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

device : (`torch.device`, *اختياري*): جهاز torch

dtype : (`torch.dtype`, *اختياري*): torch dtype

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

## SkyReelsV2ImageToVideoPipeline[[diffusers.SkyReelsV2ImageToVideoPipeline]]

#### diffusers.SkyReelsV2ImageToVideoPipeline[[diffusers.SkyReelsV2ImageToVideoPipeline]]

```python
diffusers.SkyReelsV2ImageToVideoPipeline(tokenizer: AutoTokenizer, text_encoder: transformers.models.t5.modeling_t5.T5EncoderModel | transformers.models.umt5.modeling_umt5.UMT5EncoderModel, image_encoder: CLIPVisionModelWithProjection, image_processor: CLIPProcessor, transformer: SkyReelsV2Transformer3DModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py#L127)

**المعاملات:**

tokenizer (`T5Tokenizer`) : مُجزِّئ من [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

text_encoder (`T5EncoderModel`) : [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [google/umt5-xxl](https://huggingface.co/google/umt5-xxl).

image_encoder (`CLIPVisionModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPVisionModelWithProjection)، وتحديداً النسخة [clip-vit-huge-patch14](https://github.com/mlfoundations/open_clip/blob/main/docs/PRETRAINED.md#vit-h14-xlm-roberta-large).

transformer ([SkyReelsV2Transformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/skyreels_v2_transformer_3d#diffusers.SkyReelsV2Transformer3DModel)) : نموذج Transformer مشروط لإزالة الضوضاء من المتغيرات الكامنة المدخلة.

scheduler ([UniPCMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/ar/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.

خط أنابيب لتوليد الفيديو من الصورة (i2v) باستخدام SkyReels-V2.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

#### __call__[[diffusers.SkyReelsV2ImageToVideoPipeline.__call__]]

```python
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 544, width: int = 960, num_frames: int = 97, num_inference_steps: int = 50, guidance_scale: float = 5.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, last_image: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py#L479)

**المعاملات:**

image (`PipelineImageInput`) : الصورة المدخلة التي تُشترط عليها عملية التوليد. يجب أن تكون صورة، أو قائمة من الصور، أو `torch.Tensor`.

prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

height (`int`، القيمة الافتراضية `544`) : ارتفاع الفيديو المولّد.

width (`int`، القيمة الافتراضية `960`) : عرض الفيديو المولّد.

num_frames (`int`، القيمة الافتراضية `97`) : عدد الإطارات في الفيديو المولّد.

num_inference_steps (`int`، القيمة الافتراضية `50`) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

guidance_scale (`float`، القيمة الافتراضية `5.0`) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم.

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال `negative_prompt`.

image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات صور مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات الصور بسهولة (الوزن). إذا لم تُقدَّم، يتم توليد تمثيلات الصور من معامل الإدخال `image`.

last_image (`torch.Tensor`، *اختياري*) : الصورة الأخيرة الاختيارية لتكييف الصورة إلى فيديو، والتي تُثبّت نهاية الفيديو المولّد.

output_type (`str`، *اختياري*، الافتراضي `"np"`) : صيغة الصورة المولّدة. اختر بين `PIL.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع `WanPipelineOutput` بدلاً من tuple عادي.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

callback_on_step_end (`Callable`، `PipelineCallback`، `MultiPipelineCallbacks`، *اختياري*) : دالة أو فئة فرعية من `PipelineCallback` أو `MultiPipelineCallbacks` تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. ستتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (`int`، *اختياري*، القيمة الافتراضية `512`) : الحد الأقصى لطول تسلسل الاستدعاء.

**يعيد:** `~SkyReelsV2PipelineOutput` أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد `SkyReelsV2PipelineOutput`، وإلا يُعاد `tuple` حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم `bool` تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:
```py
>>> import torch
>>> from diffusers import (
...     SkyReelsV2ImageToVideoPipeline,
...     UniPCMultistepScheduler,
...     AutoencoderKLWan,
... )
>>> from diffusers.utils import export_to_video
>>> from PIL import Image

>>> # Load the pipeline
>>> # Available models:
>>> # - Skywork/SkyReels-V2-I2V-1.3B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-I2V-14B-540P-Diffusers
>>> # - Skywork/SkyReels-V2-I2V-14B-720P-Diffusers
>>> vae = AutoencoderKLWan.from_pretrained(
...     "Skywork/SkyReels-V2-I2V-14B-720P-Diffusers",
...     subfolder="vae",
...     torch_dtype=torch.float32,
... )
>>> pipe = SkyReelsV2ImageToVideoPipeline.from_pretrained(
...     "Skywork/SkyReels-V2-I2V-14B-720P-Diffusers",
...     vae=vae,
...     torch_dtype=torch.bfloat16,
... )
>>> flow_shift = 5.0  # 8.0 for T2V, 5.0 for I2V
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe = 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."
>>> image = Image.open("path/to/image.png")

>>> output = pipe(
...     image=image,
...     prompt=prompt,
...     num_inference_steps=50,
...     height=544,
...     width=960,
...     guidance_scale=5.0,  # 6.0 for T2V, 5.0 for I2V
...     num_frames=97,
... ).frames[0]
>>> export_to_video(output, "video.mp4", fps=24, quality=8)
```

#### encode_prompt[[diffusers.SkyReelsV2ImageToVideoPipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py#L241)

**المعاملات:**

prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

do_classifier_free_guidance (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا.

num_videos_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه

prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

device : (`torch.device`, *اختياري*): جهاز torch

dtype : (`torch.dtype`, *اختياري*): torch dtype

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

## SkyReelsV2PipelineOutput[[diffusers.pipelines.skyreels_v2.pipeline_output.SkyReelsV2PipelineOutput]]

#### diffusers.pipelines.skyreels_v2.pipeline_output.SkyReelsV2PipelineOutput[[diffusers.pipelines.skyreels_v2.pipeline_output.SkyReelsV2PipelineOutput]]

```python
diffusers.pipelines.skyreels_v2.pipeline_output.SkyReelsV2PipelineOutput(frames: Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/skyreels_v2/pipeline_output.py#L9)

**المعاملات:**

frames (`torch.Tensor` أو `np.ndarray` أو list[list[PIL.Image.Image]]) : قائمة من مخرجات الفيديو - يمكن أن تكون قائمة متداخلة بطول `batch_size,` حيث تحتوي كل قائمة فرعية على تسلسلات من صور PIL منزوعة الضوضاء بطول `num_frames.` كما يمكن أن تكون مصفوفة NumPy أو متجه Torch بشكل `(batch_size, num_frames, channels, height, width)`.

فئة الإخراج لخطوط أنابيب SkyReelsV2.

