Buckets:
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 URL https ini.
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[[diffusers.AutoencoderDC]]
diffusers.AutoencoderDC[[diffusers.AutoencoderDC]]
diffusers.AutoencoderDC(in_channels: int = 3, latent_channels: int = 32, attention_head_dim: int = 32, encoder_block_types: str | tuple[str] = 'ResBlock', decoder_block_types: str | tuple[str] = 'ResBlock', encoder_block_out_channels: tuple[int, ...] = (128, 256, 512, 512, 1024, 1024), decoder_block_out_channels: tuple[int, ...] = (128, 256, 512, 512, 1024, 1024), encoder_layers_per_block: tuple[int, ...] = (2, 2, 2, 3, 3, 3), decoder_layers_per_block: tuple[int, ...] = (3, 3, 3, 3, 3, 3), encoder_qkv_multiscales: tuple[tuple[int, ...], ...] = ((), (), (), (5,), (5,), (5,)), decoder_qkv_multiscales: tuple[tuple[int, ...], ...] = ((), (), (), (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 = True, decoder_in_shortcut: bool = True, decoder_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 kanal output untuk setiap blok dalam encoder.
decoder_block_out_channels (tuple[int, ...], defaultnya (128, 256, 512, 512, 1024, 1024)) : Jumlah kanal output 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) dari 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 akan 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 satuan 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[[diffusers.AutoencoderDC.encode]]
encode(x: Tensor, return_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.
Mengembalikan:
Representasi laten dari video yang dikodekan. Jika return_dict bernilai True, sebuah ~models.vae.EncoderOutput dikembalikan, selain itu sebuah tuple polos yang dikembalikan.
Enkodekan batch gambar menjadi latents.
decode[[diffusers.AutoencoderDC.decode]]
decode(z: Tensor, return_dict: bool = True)
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 dikembalikan.
Decode sekelompok gambar.
enable_tiling[[diffusers.AutoencoderDC.enable_tiling]]
enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_sample_stride_height: float | None = None, tile_sample_stride_width: float | None = None)
Parameter:
tile_sample_min_height (int, opsional) : Tinggi minimum yang diperlukan agar sampel 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 minimum tumpang tindih antara dua ubin vertikal yang berurutan. Hal ini untuk memastikan tidak ada artefak penataan ubin yang dihasilkan di sepanjang dimensi tinggi.
tile_sample_stride_width (int, opsional) : Jarak (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 memori dalam jumlah besar dan memungkinkan pemrosesan gambar yang lebih besar.
forward[[diffusers.AutoencoderDC.forward]]
forward(sample: Tensor, return_dict: bool = True)
Parameter:
sample (torch.Tensor) : Sampel input.
return_dict (bool, opsional, defaultnya 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[[diffusers.models.autoencoders.vae.DecoderOutput]]
diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)
Parameter:
sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) : Sampel output yang didekodekan dari lapisan terakhir model.
Output dari metode decoding.
Xet Storage Details
- Size:
- 12.9 kB
- Xet hash:
- f497fb56d5c1e7c4a104402365be631d7c33bbd257889df84924b242b599b7dd
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.