AUTOMATIC1111/stable-diffusion-webui · warning · FileNotFoundError

TAESD model not found

Error message

TAESD model not found

What it means

decoder_model() in sd_vae_taesd.py loads the TAESD tiny-VAE used for fast live previews. It tries to auto-download the .pth from github.com/madebyollin/taesd into models/VAE-taesd/; if after the download attempt the file still does not exist (offline, blocked GitHub, proxy failure), it raises FileNotFoundError.

Source

Thrown at modules/sd_vae_taesd.py:117

        model_name = "taesd3_decoder.pth"
    elif shared.sd_model.is_sdxl:
        model_name = "taesdxl_decoder.pth"
    else:
        model_name = "taesd_decoder.pth"

    loaded_model = sd_vae_taesd_models.get(model_name)

    if loaded_model is None:
        model_path = os.path.join(paths_internal.models_path, "VAE-taesd", model_name)
        download_model(model_path, 'https://github.com/madebyollin/taesd/raw/main/' + model_name)

        if os.path.exists(model_path):
            loaded_model = TAESDDecoder(model_path)
            loaded_model.eval()
            loaded_model.to(devices.device, devices.dtype)
            sd_vae_taesd_models[model_name] = loaded_model
        else:
            raise FileNotFoundError('TAESD model not found')

    return loaded_model.decoder


def encoder_model():
    if shared.sd_model.is_sd3:
        model_name = "taesd3_encoder.pth"
    elif shared.sd_model.is_sdxl:
        model_name = "taesdxl_encoder.pth"
    else:
        model_name = "taesd_encoder.pth"

    loaded_model = sd_vae_taesd_models.get(model_name)

    if loaded_model is None:
        model_path = os.path.join(paths_internal.models_path, "VAE-taesd", model_name)
        download_model(model_path, 'https://github.com/madebyollin/taesd/raw/main/' + model_name)

View on GitHub (pinned to 82a973c043)

Solutions

  1. Manually download the file named in the code (taesd_decoder.pth / taesdxl_decoder.pth / taesd3_decoder.pth depending on your model) from the madebyollin/taesd GitHub repo into models/VAE-taesd/
  2. Fix network/proxy so the auto-download works, then reload the UI
  3. Switch live preview mode back to 'Approximation' (Settings > Live preview) which needs no extra weights
Defensive patterns

Strategy: try-catch

Validate before calling

import os
from modules import shared, paths_internal
def taesd_decoder_cached():
    name = 'taesd3_decoder.pth' if shared.sd_model.is_sd3 else ('taesdxl_decoder.pth' if shared.sd_model.is_sdxl else 'taesd_decoder.pth')
    return os.path.exists(os.path.join(paths_internal.models_path, 'VAE-taesd', name))

Try / catch

try:
    dec = sd_vae_taesd.decoder_model()
except FileNotFoundError:
    # fall back to approximation preview; do not block generation
    shared.opts.live_preview_method = 'Approximation'

Prevention

When it happens

Trigger: Setting Settings > Live preview VAE mode to 'TAESD' (or Cheap-Preview on older builds) on first use with no cached model, while the machine cannot reach raw.githubusercontent.com; or the download wrote a 0-byte/renamed file so os.path.exists() is false.

Common situations: Air-gapped or firewalled deployments; China-region networks where GitHub is unreachable; CI containers without outbound network.

Related errors


AI-assisted analysis of AUTOMATIC1111/stable-diffusion-webui@82a973c043 (2026-08-14). Data as JSON: /api/errors/b1e91f44057c3931. Report an issue: GitHub.