VAE(变分自编码器)管理系统负责处理 VAE 在 Stable Diffusion Web UI 中的发现、选择、加载和缓存方式。VAE 负责将图像编码到潜在空间,并将潜在表示解码回图像,是图像生成管道的关键组成部分。本文档解释了系统如何确定为给定模型使用哪个 VAE,VAE 如何在内存中加载和管理,以及用户如何配置 VAE 偏好设置。
有关模型检查点本身的信息,请参阅 检查点系统。
来源:modules/sd_vae.py1-20 modules/sd_models.py535-539
该系统采用分层方法来确定与模型一起使用哪个 VAE。此过程称为“VAE 分辨率”。
分辨率顺序如下:
--vae-path)VAE 会从多个位置进行发现。
| 位置 | 模式 |
|---|---|
| 模型目录 | **/*.vae.ckpt、**/*.vae.pt、**/*.vae.safetensors |
| 专用 VAE 目录 | models/VAE/**/*.ckpt、**/*.pt、**/*.safetensors |
| 自定义检查点目录 | 与上述相同的模式(如果使用 --ckpt-dir 指定) |
| 自定义 VAE 目录 | 与上述相同的模式(如果使用 --vae-dir 指定) |
所有发现的 VAE 都存储在一个字典(vae_dict)中,该字典将文件名映射到其完整路径。在确定要使用哪个 VAE 时,会使用此字典进行快速查找。
系统可以通过命名约定自动为检查点查找匹配的 VAE。如果存在一个 VAE 文件,其名称以检查点名称(不含扩展名)开头,则认为它匹配。
例如
v1-5-pruned-emaonly.safetensorsv1-5-pruned-emaonly.vae.ptVAE 按需加载,并可进行缓存以提高性能。
系统维护一个“基础 VAE”的概念——即模型自带的原始 VAE。加载自定义 VAE 时,会存储基础 VAE,以便将来需要时可以恢复。
来源:modules/sd_vae.py194-241 modules/sd_models.py535-539
VAE 可能占用大量内存,因此系统包含缓存机制。
checkpoints_loaded 中。sd_vae_checkpoint_cache 设置控制。来源:modules/sd_vae.py18-21 modules/sd_vae.py198-221
用户可以在设置中设置全局 VAE 偏好。
用户还可以通过用户元数据编辑器为特定检查点设置 VAE 偏好。
这些偏好设置存储在检查点的用户元数据中,并在 VAE 分辨过程中进行查询。
来源:modules/ui_extra_networks_checkpoints_user_metadata.py1-66 modules/sd_vae.py146-157
加载模型时,通过分辨率过程确定其 VAE。
这种继承系统允许模型使用其内置 VAE 或根据需要采用自定义 VAE。
来源:modules/sd_vae.py39-66 modules/sd_models.py535-539
当 VAE 偏好设置更改时,系统可以在不重新加载整个模型的情况下重载 VAE。
此过程比重新加载整个模型更有效。
VAE 管理系统与模型加载过程紧密集成。
这种集成确保模型始终具有适当的 VAE 可用于图像生成。