# AutoencoderKLCogVideoX

تم تقديم نموذج الترميز التلقائي التبايني ثلاثي الأبعاد (VAE) مع خسارة KL المستخدم في [CogVideoX](https://github.com/THUDM/CogVideo) في [CogVideoX: نماذج انتشار نص إلى فيديو مع محوّل خبير](https://huggingface.co/papers/2408.06072) من جامعة تسينغهوا و ZhipuAI.

يمكن تحميل النموذج باستخدام مقتطف الشيفرة التالي.

```python
from diffusers import AutoencoderKLCogVideoX

vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX-2b", subfolder="vae", dtype=torch.float16).to("cuda")  # or "mps", "xpu", "cpu"
```

## AutoencoderKLCogVideoX[[diffusers.AutoencoderKLCogVideoX]]

#### diffusers.AutoencoderKLCogVideoX[[diffusers.AutoencoderKLCogVideoX]]

```python
diffusers.AutoencoderKLCogVideoX(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple[str] = ('CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D'), up_block_types: tuple[str] = ('CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D'), block_out_channels: tuple[int] = (128, 256, 256, 512), latent_channels: int = 16, layers_per_block: int = 3, act_fn: str = 'silu', norm_eps: float = 1e-06, norm_num_groups: int = 32, temporal_compression_ratio: float = 4, sample_height: int = 480, sample_width: int = 720, scaling_factor: float = 1.15258426, shift_factor: float | None = None, latents_mean: tuple[float] | None = None, latents_std: tuple[float] | None = None, force_upcast: float = True, use_quant_conv: bool = False, use_post_quant_conv: bool = False, invert_scale_latents: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L958)

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

in_channels (int, *اختياري*، القيمة الافتراضية 3) : عدد القنوات في الصورة المدخلة.

out_channels (int، *اختياري*، القيمة الافتراضية 3) : عدد القنوات في المخرجات.

down_block_types (`tuple[str]`، *اختياري*، القيمة الافتراضية `("DownEncoderBlock2D",)`) : مجموعة من أنواع كتل التقليل (downsample).

up_block_types (`tuple[str]`، *اختياري*، القيمة الافتراضية `("UpDecoderBlock2D",)`) : مجموعة من أنواع كتل التوسيع (upsample).

block_out_channels (`tuple[int]`، *اختياري*، القيمة الافتراضية `(64,)`) : مجموعة من قنوات مخرجات الكتلة.

act_fn (`str`، *اختياري*، القيمة الافتراضية `"silu"`) : دالة التنشيط المستخدمة.

sample_size (`int`، *اختياري*، القيمة الافتراضية `32`) : حجم الإدخال العينة.

scaling_factor (`float`، *اختياري*، القيمة الافتراضية `1.15258426`) : الانحراف المعياري لكل مكوّن في الفضاء الكامن المُدرَّب، المُحسوب باستخدام الدفعة الأولى من مجموعة التدريب. يُستخدم هذا الانحراف لتقريب الفضاء الكامن بحيث يكون له تباين وحدة عند تدريب نموذج الانتشار. يتم تقريب الكمونات باستخدام الصيغة `z = z * scaling_factor` قبل تمريرها إلى نموذج الانتشار. عند فك الترميز، تُعاد الكمونات إلى المقياس الأصلي باستخدام الصيغة: `z = 1 / scaling_factor * z`. لمزيد من التفاصيل، راجع الأقسام 4.3.2 و D.1 من ورقة [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752).

force_upcast (`bool`، *اختياري*، الافتراضي `True`) : إذا تم تفعيله، سيُجبر VAE على العمل بدقة float32 في خطوط الأنابيب ذات دقة الصور العالية، مثل SD-XL. يمكن ضبط VAE تدريبيًا / تدريبه على نطاق أدنى دون فقدان كبير في الدقة، وفي هذه الحالة يمكن تعيين `force_upcast` إلى `False` - انظر: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix

نموذج VAE مع خسارة KL لتشفير الصور إلى كامنات وفك تمثيل الكامنات إلى صور. يُستخدم في [CogVideoX](https://github.com/THUDM/CogVideo).

يرث هذا النموذج من [ModelMixin](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin). راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).

#### فك الترميز[[diffusers.AutoencoderKLCogVideoX.decode]]

```python
decode(z: Tensor, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1209)

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

z (`torch.Tensor`) : دفعة إدخال من المتجهات الكامنة.

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

**يعيد:** `~models.vae.DecoderOutput` أو `tuple`

إذا كانت return_dict تساوي True، يُعاد `~models.vae.DecoderOutput`، وإلا يُعاد `tuple` عادي.

فكّ تشفير دفعة من الصور.

#### ترميز[[diffusers.AutoencoderKLCogVideoX.encode]]

```python
encode(x: Tensor, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1153)

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

x (`torch.Tensor`) : دفعة من الصور المدخلة.

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

**يعيد:**

تمثيلات الكامنة للفيديوهات المُرمّزة. إذا كان `return_dict` صحيحًا (True)، يُعاد `~models.autoencoder_kl.AutoencoderKLOutput`، وإلا يُعاد `tuple` عادي.

ترميز دفعة من الصور إلى كامنات.

#### enable_tiling[[diffusers.AutoencoderKLCogVideoX.enable_tiling]]

```python
enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_overlap_factor_height: float | None = None, tile_overlap_factor_width: float | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1091)

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

tile_sample_min_height (`int`, *اختياري*) : الحد الأدنى للارتفاع المطلوب لعينة حتى يتم فصلها إلى بلاطات عبر بُعد الارتفاع.

tile_sample_min_width (`int`, *اختياري*) : الحد الأدنى من العرض المطلوب حتى يتم فصل العينة إلى بلاطات عبر بُعد العرض.

tile_overlap_factor_height (`int`, *اختياري*) : الحد الأدنى من التداخل بين بلاطتين عموديتين متتاليتين. يهدف هذا إلى ضمان عدم ظهور أي شوائب تخطيط عبر بُعد الارتفاع. يجب أن يكون بين 0 و 1. قد يؤدي تعيين قيمة أعلى إلى معالجة عدد أكبر من البلاطات، مما يؤدي إلى إبطاء عملية فك الترميز.

tile_overlap_factor_width (`int`, *اختياري*) : الحد الأدنى من التداخل بين بلاطتين أفقيتين متتاليتين. يهدف هذا إلى ضمان عدم ظهور أي شوائب تخطيط عبر بُعد العرض. يجب أن يكون بين 0 و 1. قد يؤدي تعيين قيمة أعلى إلى معالجة عدد أكبر من البلاطات، مما يؤدي إلى إبطاء عملية فك الترميز.

تفعيل فك ترميز VAE المُجزّأ. عند تفعيل هذا الخيار، سيقوم VAE بتقسيم مصفوفة الإدخال إلى بلاطات لحساب فك الترميز والترميز على عدة خطوات. وهذا مفيد لتوفير كمية كبيرة من الذاكرة ولتيسير معالجة صور أكبر.

#### forward[[diffusers.AutoencoderKLCogVideoX.forward]]

```python
forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1407)

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

sample (`torch.Tensor`) : عينة الإدخال.

sample_posterior (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم أخذ عينة من التوزيع اللاحق.

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

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

**يعيد:** `~models.vae.DecoderOutput` أو `tuple`

إذا كان `return_dict` صحيحًا، يُعاد `~models.vae.DecoderOutput`، وإلا يُعاد `tuple` عادي.

#### tiled_decode[[diffusers.AutoencoderKLCogVideoX.tiled_decode]]

```python
tiled_decode(z: Tensor, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1324)

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

z (`torch.Tensor`) : دفعة إدخال من المتجهات الكامنة.

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

**يعيد:** `~models.vae.DecoderOutput` أو `tuple`

إذا كانت return_dict تساوي True، يُعاد `~models.vae.DecoderOutput`، وإلا يُعاد `tuple` عادي.

فكّ تشفير دفعة من الصور باستخدام مُفكّك مُجزّأ.

#### tiled_encode[[diffusers.AutoencoderKLCogVideoX.tiled_encode]]

```python
tiled_encode(x: Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py#L1250)

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

x (`torch.Tensor`) : دفعة إدخال من مقاطع الفيديو.

**يعيد:** `torch.Tensor`

التمثيل الكامن للفيديوهات المُرمّزة.

ترميز دفعة من الصور باستخدام مُرمِّز مُقسَّم إلى بلاطات.

عند تمكين هذا الخيار، سيقوم VAE بتقسيم المصفوفة المدخلة إلى بلاطات لحساب الترميز في عدة خطوات. وهذا مفيد للحفاظ على ثبات استخدام الذاكرة بغض النظر عن حجم الصورة. النتيجة النهائية للترميز المبطن تختلف عن الترميز غير المبطن لأن كل بلاطة تستخدم مُرمِّزًا مختلفًا. ولتجنب آثار التبطين، تتداخل البلاطات وتُدمج معًا لتكوين مخرجات سلسة. قد لا تزال ترى تغييرات بحجم البلاطة في المخرجات، لكنها يجب أن تكون أقل وضوحًا بكثير.

## AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

#### diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

```python
diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L7)

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

latent_dist (`DiagonalGaussianDistribution`) : المخرجات المُرمّزة لـ`Encoder` ممثّلةً بمتوسط `DiagonalGaussianDistribution` ومتغيره اللوغاريتمي. تتيح `DiagonalGaussianDistribution` أخذ عينات من المتغيّرات الكامنة انطلاقًا من هذا التوزيع.

مخرجات طريقة الترميز encoding في AutoencoderKL.

## DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

#### diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

```python
diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/vae.py#L49)

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

sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) : عينة الإخراج المُفكّكة من الطبقة الأخيرة للنموذج.

مخرجات طريقة فك الترميز.

