Commit f64af77a authored by brkirch's avatar brkirch
Browse files

Fix different first gen with Approx NN previews

The loading of the model for approx nn live previews can change the internal state of PyTorch, resulting in a different image. This can be avoided by preloading the approx nn model in advance.
parent 5c1cb926
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -13,7 +13,7 @@ from skimage import exposure
from typing import Any, Dict, List, Optional
from typing import Any, Dict, List, Optional


import modules.sd_hijack
import modules.sd_hijack
from modules import devices, prompt_parser, masking, sd_samplers, lowvram, generation_parameters_copypaste, script_callbacks, extra_networks
from modules import devices, prompt_parser, masking, sd_samplers, lowvram, generation_parameters_copypaste, script_callbacks, extra_networks, sd_vae_approx
from modules.sd_hijack import model_hijack
from modules.sd_hijack import model_hijack
from modules.shared import opts, cmd_opts, state
from modules.shared import opts, cmd_opts, state
import modules.shared as shared
import modules.shared as shared
@@ -568,6 +568,10 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
        with devices.autocast():
        with devices.autocast():
            p.init(p.all_prompts, p.all_seeds, p.all_subseeds)
            p.init(p.all_prompts, p.all_seeds, p.all_subseeds)


            if shared.opts.live_previews_enable and sd_samplers.approximation_indexes.get(shared.opts.show_progress_type, 0) == 1:
                # preload approx nn model before sampling for a more deterministic result
                sd_vae_approx.model()

            if not p.disable_extra_networks:
            if not p.disable_extra_networks:
                extra_networks.activate(p, extra_network_data)
                extra_networks.activate(p, extra_network_data)