# AutoencoderKLHunyuanVideo

Модель трёхмерного вариационного автоэнкодера (VAE) с потерей KL, используемая в [HunyuanVideo](https://github.com/Tencent/HunyuanVideo/), которая была представлена в работе [HunyuanVideo: A Systematic Framework For Large Video Generative Models](https://huggingface.co/papers/2412.03603) от Tencent.

Модель можно загрузить с помощью следующего фрагмента кода.

```python
from diffusers import AutoencoderKLHunyuanVideo

vae = AutoencoderKLHunyuanVideo.from_pretrained("hunyuanvideo-community/HunyuanVideo", subfolder="vae", dtype=torch.float16)
```

## AutoencoderKLHunyuanVideo[[diffusers.AutoencoderKLHunyuanVideo]]

#### diffusers.AutoencoderKLHunyuanVideo[[diffusers.AutoencoderKLHunyuanVideo]]

```python
diffusers.AutoencoderKLHunyuanVideo(in_channels: int = 3, out_channels: int = 3, latent_channels: int = 16, down_block_types: tuple[str, ...] = ('HunyuanVideoDownBlock3D', 'HunyuanVideoDownBlock3D', 'HunyuanVideoDownBlock3D', 'HunyuanVideoDownBlock3D'), up_block_types: tuple[str, ...] = ('HunyuanVideoUpBlock3D', 'HunyuanVideoUpBlock3D', 'HunyuanVideoUpBlock3D', 'HunyuanVideoUpBlock3D'), block_out_channels: tuple[int] = (128, 256, 512, 512), layers_per_block: int = 2, act_fn: str = 'silu', norm_num_groups: int = 32, scaling_factor: float = 0.476986, spatial_compression_ratio: int = 8, temporal_compression_ratio: int = 4, mid_block_add_attention: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py#L625)

Модель VAE с потерей KL для кодирования видео в латенты и декодирования латентных представлений в видео. Представлена в [HunyuanVideo](https://huggingface.co/papers/2412.03603).

Эта модель наследуется от [ModelMixin](/docs/diffusers/v0.43.0/ru/api/models/overview#diffusers.ModelMixin). См. документацию суперкласса для его универсальных методов, реализованных для всех моделей (например, загрузка или сохранение).

#### decode[[diffusers.AutoencoderKLHunyuanVideo.decode]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py#L825)

**Параметры:**

z (`torch.Tensor`) : Входная партия латентных векторов.

return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли `~models.vae.DecoderOutput` вместо обычного кортежа.

**Возвращает:** `~models.vae.DecoderOutput` или `tuple`

Если return_dict равно True, возвращается `~models.vae.DecoderOutput`, иначе возвращается обычный `tuple`.

Декодировать пакет изображений.

#### enable_tiling[[diffusers.AutoencoderKLHunyuanVideo.enable_tiling]]

```python
enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_sample_min_num_frames: int | None = None, tile_sample_stride_height: float | None = None, tile_sample_stride_width: float | None = None, tile_sample_stride_num_frames: float | None = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py#L724)

**Параметры:**

tile_sample_min_height (`int`, *optional*) : минимальная высота, необходимая для того, чтобы образец был разделён на плитки по оси высоты.

tile_sample_min_width (`int`, *optional*) : Минимальная ширина, необходимая для того, чтобы образец был разделён на плитки по размерности ширины.

tile_sample_min_num_frames (`int`, *optional*) : минимальное количество кадров, необходимое для того, чтобы образец был разделён на плитки вдоль размерности кадров.

tile_sample_stride_height (`int`, *optional*) : Минимальное перекрытие между двумя последовательными вертикальными тайлами. Это необходимо для того, чтобы избежать артефактов тайлинга вдоль вертикальной оси.

tile_sample_stride_width (`int`, *optional*) : Шаг между двумя соседними горизонтальными тайлами. Это обеспечивает отсутствие артефактов тайлинга вдоль ширины.

tile_sample_stride_num_frames (`int`, *optional*) : Шаг между двумя последовательными кадрами тайлов. Это обеспечивает отсутствие артефактов тайлинга вдоль размерности кадров.

Включает тайловое декодирование VAE. При включении этого параметра VAE разбивает входной тензор на тайлы для выполнения декодирования и кодирования в несколько шагов. Это полезно для экономии значительного объёма памяти и для обработки изображений большего размера.

#### encode[[diffusers.AutoencoderKLHunyuanVideo.encode]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py#L777)

**Параметры:**

x (`torch.Tensor`) : Входная партия изображений.

return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли `~models.autoencoder_kl.AutoencoderKLOutput` вместо обычного кортежа.

**Возвращает:**

Латентные представления закодированных видео. Если `return_dict` равно True, возвращается `~models.autoencoder_kl.AutoencoderKLOutput`, в противном случае возвращается обычный `tuple`.

Кодирует пакет изображений в латенты.

#### forward[[diffusers.AutoencoderKLHunyuanVideo.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_hunyuan_video.py#L1050)

**Параметры:**

sample (`torch.Tensor`) : Входящий образец.

sample_posterior (`bool`, *необязательный*, по умолчанию `False`) : Флаг, определяющий, следует ли выполнять выборку из апостериорного распределения.

return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли `DecoderOutput` вместо обычного кортежа.

generator (`torch.Generator`, *необязательный*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) для обеспечения детерминированности выборки.

**Возвращает:** `~models.vae.DecoderOutput` или `tuple`

Если `return_dict` равно True, возвращается `~models.vae.DecoderOutput`, иначе возвращается обычный `tuple`.

#### tiled_decode[[diffusers.AutoencoderKLHunyuanVideo.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_hunyuan_video.py#L925)

**Параметры:**

z (`torch.Tensor`) : Входная партия латентных векторов.

return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли `~models.vae.DecoderOutput` вместо обычного кортежа.

**Возвращает:** `~models.vae.DecoderOutput` или `tuple`

Если return_dict равно True, возвращается `~models.vae.DecoderOutput`, иначе возвращается обычный `tuple`.

Декодирование пакета изображений с использованием тайлованного декодера.

#### tiled_encode[[diffusers.AutoencoderKLHunyuanVideo.tiled_encode]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py#L875)

**Параметры:**

x (`torch.Tensor`) : Входная партия видео.

**Возвращает:** `torch.Tensor`

Латентное представление закодированных видео.

Кодирует пакет изображений с использованием тайлованного энкодера.

## 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)`) : Декодированный вывод из последнего слоя модели.

Результат метода декодирования.

