Diffusers documentation
AutoencoderDC
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.
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
< source >( 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, defaultnya3) — Jumlah saluran input dalam sampel. - latent_channels (
int, defaultnya32) — 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, defaultnyaTrue) — Apakah akan menggunakan shortcut di akhir encoder. - decoder_in_shortcut (
bool, defaultnyaTrue) — Apakah akan menggunakan shortcut di awal decoder. - decoder_conv_act_fn (
str, defaultnya"relu") — Fungsi aktivasi yang digunakan di akhir decoder. - scaling_factor (
float, defaultnya1.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 rumusz = z * scaling_factorsebelum 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
< source >( x: Tensorreturn_dict: bool = True )
Enkodekan batch gambar menjadi latents.
decode
< source >( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
Parameter
- z (
torch.Tensor) — Batch input dari vektor laten. - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikan~models.vae.DecoderOutputalih-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
< source >( 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
< source >( sample: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
Parameter
- sample (
torch.Tensor) — Sampel input. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanDecoderOutputalih-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
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
Output dari metode decoding.