# AutoencoderKLAllegro

Mô hình autoencoder biến phân 3D (VAE) với tổn thất KL được sử dụng trong [Allegro](https://github.com/rhymes-ai/Allegro) đã được giới thiệu trong [Allegro: Open the Black Box of Commercial-Level Video Generation Model](https://huggingface.co/papers/2410.15458) bởi RhymesAI.

Mô hình có thể được tải bằng đoạn mã sau.

```python
from diffusers import AutoencoderKLAllegro

vae = AutoencoderKLAllegro.from_pretrained("rhymes-ai/Allegro", subfolder="vae", dtype=torch.float32).to("cuda")  # or "mps", "xpu", "cpu"
```

## AutoencoderKLAllegro[[diffusers.AutoencoderKLAllegro]]

#### diffusers.AutoencoderKLAllegro[[diffusers.AutoencoderKLAllegro]]

```python
diffusers.AutoencoderKLAllegro(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple = ('AllegroDownBlock3D', 'AllegroDownBlock3D', 'AllegroDownBlock3D', 'AllegroDownBlock3D'), up_block_types: tuple = ('AllegroUpBlock3D', 'AllegroUpBlock3D', 'AllegroUpBlock3D', 'AllegroUpBlock3D'), block_out_channels: tuple = (128, 256, 512, 512), temporal_downsample_blocks: tuple = (True, True, False, False), temporal_upsample_blocks: tuple = (False, True, True, False), latent_channels: int = 4, layers_per_block: int = 2, act_fn: str = 'silu', norm_num_groups: int = 32, temporal_compression_ratio: float = 4, sample_size: int = 320, scaling_factor: float = 0.13, force_upcast: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_allegro.py#L676)

**Tham số:**

in_channels (int, mặc định là `3`) : Số kênh trong ảnh đầu vào.

out_channels (int, mặc định là `3`) : Số kênh trong đầu ra.

down_block_types (`tuple[str, ...]`, mặc định là `("AllegroDownBlock3D", "AllegroDownBlock3D", "AllegroDownBlock3D", "AllegroDownBlock3D")`) : bộ các chuỗi ký tự chỉ định các loại down block cần sử dụng.

up_block_types (`tuple[str, ...]`, mặc định là `("AllegroUpBlock3D", "AllegroUpBlock3D", "AllegroUpBlock3D", "AllegroUpBlock3D")`) : bộ các chuỗi ký tự chỉ định loại up block nào sẽ được sử dụng.

block_out_channels (`tuple[int, ...]`, mặc định là `(128, 256, 512, 512)`) : bộ các số nguyên chỉ số lượng kênh đầu ra trong mỗi khối.

temporal_downsample_blocks (`tuple[bool, ...]`, mặc định là `(True, True, False, False)`) : bộ tuple các giá trị boolean chỉ định các khối cần bật hạ mẫu theo thời gian.

latent_channels (`int`, mặc định là `4`) : Số kênh trong latents.

layers_per_block (`int`, mặc định là `2`) : Số lượng lớp resnet hoặc attention hoặc convolution theo thời gian trong mỗi khối down/up.

act_fn (`str`, mặc định là `"silu"`) : Hàm kích hoạt cần sử dụng.

norm_num_groups (`int`, mặc định là `32`) : Số nhóm được sử dụng trong các lớp chuẩn hóa.

temporal_compression_ratio (`int`, mặc định là `4`) : Tỷ lệ nén chiều thời gian của các mẫu.

sample_size (`int`, mặc định là `320`) : Kích thước latent mặc định.

scaling_factor (`float`, mặc định là `0.13235`) : Độ lệch chuẩn theo từng thành phần của không gian tiềm ẩn đã được huấn luyện, được tính toán bằng cách sử dụng lô đầu tiên của tập dữ liệu huấn luyện. Giá trị này được dùng để chuẩn hóa không gian tiềm ẩn sao cho có phương sai bằng đơn vị khi huấn luyện mô hình khuếch tán. Các biến tiềm ẩn được chuẩn hóa bằng công thức `z = z * scaling_factor` trước khi được truyền vào mô hình khuếch tán. Khi giải mã, các biến tiềm ẩn được đưa về thang đo gốc bằng công thức: `z = 1 / scaling_factor * z`. Để biết thêm chi tiết, hãy tham khảo các mục 4.3.2 và D.1 của bài báo [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752).

force_upcast (`bool`, mặc định là `True`) : Nếu được bật, tham số này sẽ buộc VAE chạy ở float32 cho các pipeline có độ phân giải ảnh cao, chẳng hạn như SD-XL. VAE có thể được tinh chỉnh / huấn luyện ở dải giá trị thấp hơn mà không mất quá nhiều độ chính xác, trong trường hợp đó `force_upcast` có thể được đặt thành `False` - xem: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix

Mô hình VAE có tổn thất KL để mã hóa video thành các biến ẩn và giải mã các biểu diễn ẩn thành video. Được sử dụng trong [Allegro](https://github.com/rhymes-ai/Allegro).

Mô hình này kế thừa từ [ModelMixin](/docs/diffusers/main/vi/api/models/overview#diffusers.ModelMixin). Hãy xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các mô hình (chẳng hạn như tải xuống hoặc lưu trữ).

#### decode[[diffusers.AutoencoderKLAllegro.decode]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_allegro.py#L843)

**Tham số:**

z (`torch.Tensor`) : Lô đầu vào của các vector ẩn.

return_dict (`bool`, mặc định là `True`) : Có nên trả về một `~models.vae.DecoderOutput` thay vì một tuple thông thường hay không.

**Trả về:** `~models.vae.DecoderOutput` hoặc `tuple`

Nếu return_dict là True, một `~models.vae.DecoderOutput` sẽ được trả về, ngược lại một `tuple` thông thường sẽ được trả về.

Giải mã một lô video.

#### encode[[diffusers.AutoencoderKLAllegro.encode]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_allegro.py#L806)

**Tham số:**

x (`torch.Tensor`) : Lô đầu vào các video.

return_dict (`bool`, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.AutoencoderKLOutput` thay vì một tuple thông thường hay không.

**Trả về:**

Các biểu diễn ẩn của các video đã được mã hóa. Nếu `return_dict` là True, một `~models.autoencoder_kl.AutoencoderKLOutput` sẽ được trả về, ngược lại một `tuple` thông thường sẽ được trả về.

Mã hóa một lô video thành các biến ẩn.

#### forward[[diffusers.AutoencoderKLAllegro.forward]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_allegro.py#L1041)

**Tham số:**

sample (`torch.Tensor`) : Mẫu đầu vào.

sample_posterior (`bool`, *tùy chọn*, mặc định là `False`) : Có lấy mẫu từ phân phối hậu nghiệm hay không.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một `DecoderOutput` thay vì một tuple thông thường hay không.

generator (`torch.Generator`, *tùy chọn*) : Bộ tạo số ngẫu nhiên của PyTorch.

**Trả về:** `~models.vae.DecoderOutput` hoặc `tuple`

Nếu `return_dict` là True, một `~models.vae.DecoderOutput` sẽ được trả về, ngược lại một `tuple` thông thường sẽ được trả về.

## 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)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L7)

**Tham số:**

latent_dist (`DiagonalGaussianDistribution`) : Đầu ra được mã hóa của `Encoder`, được biểu diễn dưới dạng mean và logvar của `DiagonalGaussianDistribution`. `DiagonalGaussianDistribution` cho phép lấy mẫu các biến ẩn (latents) từ phân phối này.

Đầu ra của phương pháp mã hóa của 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)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vae.py#L49)

**Tham số:**

sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)`) : Mẫu đầu ra đã giải mã từ lớp cuối cùng của mô hình.

Đầu ra của phương pháp giải mã.

