diff --git a/CHANGELOG.md b/CHANGELOG.md index 1df6a537c..fda471333 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - fix negative prompt parsing from metadata - fix stable cascade progress monitoring - fix variation seed with hires pass +- fix loading models trained with onetrainer - add variation seed info to metadata - workaround for scale-by when using modernui - lock torch-directml version diff --git a/modules/processing_helpers.py b/modules/processing_helpers.py index dd8d6faf5..bf86f1e24 100644 --- a/modules/processing_helpers.py +++ b/modules/processing_helpers.py @@ -216,7 +216,8 @@ def decode_first_stage(model, x, full_quality=True): def get_fixed_seed(seed): if seed is None or seed == '' or seed == -1: - return int(random.randrange(4294967294)) + random.seed() + seed = int(random.randrange(4294967294)) return seed diff --git a/modules/sd_models.py b/modules/sd_models.py index d78a5a6b9..607606a94 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -12,10 +12,11 @@ import os.path from os import mkdir from urllib import request from enum import Enum +import diffusers +import diffusers.loaders.single_file_utils from rich import progress # pylint: disable=redefined-builtin import torch import safetensors.torch -import diffusers from omegaconf import OmegaConf from transformers import logging as transformers_logging from ldm.util import instantiate_from_config @@ -1056,6 +1057,7 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No else: diffusers_load_config['config'] = get_load_config(checkpoint_info.path, model_type, config_type='json') if hasattr(pipeline, 'from_single_file'): + diffusers.loaders.single_file_utils.CHECKPOINT_KEY_NAMES["clip"] = "cond_stage_model.transformer.text_model.embeddings.position_embedding.weight" # TODO patch for diffusers==0.28.0 diffusers_load_config['use_safetensors'] = True diffusers_load_config['cache_dir'] = shared.opts.hfcache_dir # use hfcache instead of diffusers dir as this is for config only in case of single-file if shared.opts.disable_accelerate: diff --git a/modules/styles.py b/modules/styles.py index 4e3b55a41..511cfc425 100644 --- a/modules/styles.py +++ b/modules/styles.py @@ -81,8 +81,10 @@ def apply_file_wildcards(prompt, replaced = [], not_found = [], recursion=0, see def apply_wildcards_to_prompt(prompt, all_wildcards, seed=-1, silent=False): if len(prompt) == 0: return prompt - if seed > 0: + old_state = None + if seed > 0 and len(all_wildcards) > 0: random.seed(seed) + old_state = random.getstate() replaced = {} t0 = time.time() for style_wildcards in all_wildcards: @@ -104,6 +106,8 @@ def apply_wildcards_to_prompt(prompt, all_wildcards, seed=-1, silent=False): shared.log.debug(f'Wildcards applied: {replaced} path="{shared.opts.wildcards_dir}" type=style time={t1-t0:.2f}') if (len(replaced_file) > 0 or len(not_found) > 0) and not silent: shared.log.debug(f'Wildcards applied: {replaced_file} missing: {not_found} path="{shared.opts.wildcards_dir}" type=file time={t2-t2:.2f} ') + if old_state is not None: + random.setstate(old_state) return prompt