Diffusers documentation

AutoencoderDC

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderDC

Model Autoencoder 2D yang digunakan dalam SANA dan diperkenalkan dalam DCAE oleh penulis Junyu Chen*, Han Cai*, Junsong Chen, Enze Xie, Shang Yang, Haotian Tang, Muyang Li, Yao Lu, Song Han dari MIT HAN Lab.

Abstrak dari makalah tersebut adalah:

Kami memperkenalkan Deep Compression Autoencoder (DC-AE), keluarga model autoencoder baru untuk mempercepat model difusi resolusi tinggi. Model autoencoder yang ada telah menunjukkan hasil yang mengesankan pada rasio kompresi spasial yang moderat (misalnya, 8x), tetapi gagal mempertahankan akurasi rekonstruksi yang memuaskan untuk rasio kompresi spasial yang tinggi (misalnya, 64x). Kami mengatasi tantangan ini dengan memperkenalkan dua teknik utama: (1) Residual Autoencoding, di mana kami merancang model kami untuk mempelajari residual berdasarkan fitur yang ditransformasi dari ruang ke kanal untuk mengurangi kesulitan optimasi pada autoencoder kompresi spasial tinggi; (2) Decoupled High-Resolution Adaptation, strategi pelatihan tiga fase yang terdekopel secara efisien untuk memitigasi penalti generalisasi pada autoencoder kompresi spasial tinggi. Dengan desain ini, kami meningkatkan rasio kompresi spasial autoencoder hingga 128 sambil mempertahankan kualitas rekonstruksi. Dengan menerapkan DC-AE kami pada model difusi laten, kami mencapai percepatan yang signifikan tanpa penurunan akurasi. Sebagai contoh, pada ImageNet 512x512, DC-AE kami memberikan percepatan inferensi 19,1x dan percepatan pelatihan 17,9x pada GPU H100 untuk UViT-H sambil mencapai FID yang lebih baik, dibandingkan dengan autoencoder SD-VAE-f8 yang banyak digunakan. Kode kami tersedia di this https URL.

Model-model DCAE berikut telah dirilis dan didukung di Diffusers.

Format DiffusersFormat asli
mit-han-lab/dc-ae-f32c32-sana-1.0-diffusersmit-han-lab/dc-ae-f32c32-sana-1.0
mit-han-lab/dc-ae-f32c32-in-1.0-diffusersmit-han-lab/dc-ae-f32c32-in-1.0
mit-han-lab/dc-ae-f32c32-mix-1.0-diffusersmit-han-lab/dc-ae-f32c32-mix-1.0
mit-han-lab/dc-ae-f64c128-in-1.0-diffusersmit-han-lab/dc-ae-f64c128-in-1.0
mit-han-lab/dc-ae-f64c128-mix-1.0-diffusersmit-han-lab/dc-ae-f64c128-mix-1.0
mit-han-lab/dc-ae-f128c512-in-1.0-diffusersmit-han-lab/dc-ae-f128c512-in-1.0
mit-han-lab/dc-ae-f128c512-mix-1.0-diffusersmit-han-lab/dc-ae-f128c512-mix-1.0

Model ini disumbangkan oleh lawrence-cj.

Muat model dalam format Diffusers dengan from_pretrained().

from diffusers import AutoencoderDC

ae = AutoencoderDC.from_pretrained("mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers", dtype=torch.float32).to("cuda")  # or "mps", "xpu", "cpu"

Muat model di Diffusers melalui from_single_file

from difusers import AutoencoderDC

ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0/blob/main/model.safetensors"
model = AutoencoderDC.from_single_file(ckpt_path) 

Model AutoencoderDC memiliki varian checkpoint file tunggal in dan mix yang memiliki kunci checkpoint yang cocok, tetapi menggunakan faktor penskalaan yang berbeda. Diffusers tidak dapat secara otomatis menyimpulkan file config yang benar untuk digunakan dengan model berdasarkan hanya checkpoint, dan akan secara default mengonfigurasi model menggunakan file config varian mix. Untuk menimpa config yang ditentukan secara otomatis, silakan gunakan argumen config saat menggunakan pemuatan file tunggal dengan checkpoint varian in.

from diffusers import AutoencoderDC

ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f128c512-in-1.0/blob/main/model.safetensors"
model = AutoencoderDC.from_single_file(ckpt_path, config="mit-han-lab/dc-ae-f128c512-in-1.0-diffusers")

AutoencoderDC

kelas diffusers.AutoencoderDC

< >

( in_channels: int = 3latent_channels: int = 32attention_head_dim: int = 32encoder_block_types: str | tuple[str] = 'ResBlock'decoder_block_types: str | tuple[str] = 'ResBlock'encoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024)decoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024)encoder_layers_per_block: tuple = (2, 2, 2, 3, 3, 3)decoder_layers_per_block: tuple = (3, 3, 3, 3, 3, 3)encoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,))decoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,))upsample_block_type: str = 'pixel_shuffle'downsample_block_type: str = 'pixel_unshuffle'decoder_norm_types: str | tuple[str] = 'rms_norm'decoder_act_fns: str | tuple[str] = 'silu'encoder_out_shortcut: bool = Truedecoder_in_shortcut: bool = Truedecoder_conv_act_fn: str = 'relu'scaling_factor: float = 1.0 )

Parameter

  • in_channels (int, defaultnya 3) — Jumlah saluran input dalam sampel.
  • latent_channels (int, defaultnya 32) — Jumlah channel dalam representasi ruang laten.
  • encoder_block_types (str | tuple[str], defaultnya "ResBlock") — Jenis blok yang digunakan dalam encoder.
  • decoder_block_types (str | tuple[str], defaultnya "ResBlock") — Jenis blok yang digunakan dalam decoder.
  • encoder_block_out_channels (tuple[int, ...], defaultnya (128, 256, 512, 512, 1024, 1024)) — Jumlah saluran keluar untuk setiap blok dalam encoder.
  • decoder_block_out_channels (tuple[int, ...], defaultnya (128, 256, 512, 512, 1024, 1024)) — Jumlah saluran keluar untuk setiap blok dalam decoder.
  • encoder_layers_per_block (tuple[int], defaultnya (2, 2, 2, 3, 3, 3)) — Jumlah lapisan per blok di encoder.
  • decoder_layers_per_block (tuple[int], defaultnya (3, 3, 3, 3, 3, 3)) — Jumlah lapisan per blok dalam decoder.
  • encoder_qkv_multiscales (tuple[tuple[int, ...], ...], defaultnya ((), (), (), (5,), (5,), (5,))) — Konfigurasi multi-skala untuk transformasi QKV (query-key-value) dari encoder.
  • decoder_qkv_multiscales (tuple[tuple[int, ...], ...], defaultnya ((), (), (), (5,), (5,), (5,))) — Konfigurasi multi-skala untuk transformasi QKV (query-key-value) pada decoder.
  • upsample_block_type (str, defaultnya "pixel_shuffle") — Jenis blok yang digunakan untuk upsampling di decoder.
  • downsample_block_type (str, defaultnya "pixel_unshuffle") — Jenis blok yang digunakan untuk downsampling di encoder.
  • decoder_norm_types (str | tuple[str], defaultnya "rms_norm") — Jenis normalisasi yang digunakan dalam decoder.
  • decoder_act_fns (str | tuple[str], defaultnya "silu") — Fungsi aktivasi yang digunakan dalam decoder.
  • encoder_out_shortcut (bool, defaultnya True) — Apakah akan menggunakan shortcut di akhir encoder.
  • decoder_in_shortcut (bool, defaultnya True) — Apakah akan menggunakan shortcut di awal decoder.
  • decoder_conv_act_fn (str, defaultnya "relu") — Fungsi aktivasi yang digunakan di akhir decoder.
  • scaling_factor (float, defaultnya 1.0) — Invers perkalian dari akar rata-rata kuadrat (root mean square) dari fitur laten. Ini digunakan untuk menskalakan ruang laten agar memiliki varians satu saat melatih model difusi. Laten diskalakan dengan rumus z = z * scaling_factor sebelum diteruskan ke model difusi. Saat decoding, laten diskalakan kembali ke skala aslinya dengan rumus: z = 1 / scaling_factor * z.

Model Autoencoder yang diperkenalkan dalam DCAE dan digunakan dalam SANA.

Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).

encode

< >

( x: Tensorreturn_dict: bool = True )

Parameter

  • x (torch.Tensor) — Batch input gambar.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan ~models.vae.EncoderOutput alih-alih tuple biasa.

Enkodekan batch gambar menjadi latents.

decode

< >

( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

Parameter

  • z (torch.Tensor) — Batch input dari vektor laten.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan ~models.vae.DecoderOutput alih-alih tuple biasa.

Mengembalikan

~models.vae.DecoderOutput atau tuple

Jika return_dict adalah True, sebuah ~models.vae.DecoderOutput dikembalikan, selain itu sebuah tuple biasa yang dikembalikan.

Decode sekelompok gambar.

enable_tiling

< >

( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_sample_stride_height: float | None = Nonetile_sample_stride_width: float | None = None )

Parameter

  • tile_sample_min_height (int, opsional) — Tinggi minimum yang diperlukan agar sampel dapat dipisahkan menjadi ubin di sepanjang dimensi tinggi.
  • tile_sample_min_width (int, opsional) — Lebar minimum yang diperlukan agar sampel dipisahkan menjadi ubin di sepanjang dimensi lebar.
  • tile_sample_stride_height (int, opsional) — Jumlah tumpang tindih minimum antara dua tile vertikal yang berurutan. Hal ini untuk memastikan tidak ada artefak tiling yang dihasilkan di sepanjang dimensi tinggi.
  • tile_sample_stride_width (int, opsional) — Stride antara dua tile horizontal yang berurutan. Hal ini untuk memastikan tidak ada artefak tiling yang dihasilkan di sepanjang dimensi lebar.

Aktifkan decoding AE bertile. Ketika opsi ini diaktifkan, AE akan membagi tensor input menjadi tile untuk menghitung decoding dan encoding dalam beberapa langkah. Hal ini berguna untuk menghemat sejumlah besar memori dan memungkinkan pemrosesan gambar yang lebih besar.

forward

< >

( sample: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

Parameter

  • sample (torch.Tensor) — Sampel input.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan DecoderOutput alih-alih tuple biasa.

Mengembalikan

~models.vae.DecoderOutput atau tuple

Jika return_dict bernilai True, sebuah ~models.vae.DecoderOutput akan dikembalikan, selain itu sebuah tuple biasa akan dikembalikan.

DecoderOutput

kelas diffusers.models.autoencoders.vae.DecoderOutput

< >

( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )

Parameter

  • sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) — Contoh output hasil dekoding dari lapisan terakhir model.

Output dari metode decoding.

Update on GitHub