Skip to main content

Module vae

Module vae 

Source
Expand description

Stable-Diffusion VAE decoder composition.

The forward path mirrors diffusers.AutoencoderKL.decode(z).sample for runwayml/stable-diffusion-v1-5:

z (pre-divided by scaling_factor)
  -> post_quant_conv
  -> Decoder.conv_in
  -> Decoder.mid_block
  -> Decoder.up_blocks[0..N]
  -> Decoder.conv_norm_out -> SiLU -> Decoder.conv_out

The decode_with_scaling helper applies z / scaling_factor first, matching AutoencoderKL.decode(z).sample. forward(z) is the post-scaling path and accepts an already-divided latent.

§REQ status (per .design/ferrotorch-diffusion/vae.md)

REQStatusEvidence
REQ-1SHIPPEDDecoder<T> at vae.rs:30..50 and Decoder::new at vae.rs:51..120; consumer: VaeDecoder::new at vae.rs:281 builds it; itself consumed by safetensors_loader.rs:330 load_vae_decoder
REQ-2SHIPPEDVaeDecoder<T> at vae.rs:254..263 and VaeDecoder::new at vae.rs:265..288; consumer: safetensors_loader.rs:330 load_vae_decoder instantiates it; pipeline.rs:75 carries it as a pipeline field
REQ-3SHIPPEDModule<T>::forward at vae.rs:314..327; consumer: pipeline.rs:227 vae.decode_with_scaling(...) (which calls forward internally)
REQ-4SHIPPEDdecode_with_scaling at vae.rs:297..308; consumer: pipeline.rs:227 and examples/vae_decode_dump.rs invoke it for SD-1.5 decoding
REQ-5SHIPPEDModule<T>::load_state_dict at vae.rs:366..389; consumer: safetensors_loader.rs:89 VaeDecoder::load_hf_state_dict calls self.load_state_dict(&remapped, strict) after stripping the vae. prefix

Structs§

Decoder
The bare Decoder half — matches diffusers.models.autoencoders.vae.Decoder.
VaeDecoder
AutoencoderKL-style VAE decoder = post_quant_conv + Decoder.