extra_networks_lora.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from modules import extra_networks, shared
  2. import lora
  3. class ExtraNetworkLora(extra_networks.ExtraNetwork):
  4. def __init__(self):
  5. super().__init__('lora')
  6. def activate(self, p, params_list):
  7. additional = shared.opts.sd_lora
  8. if additional != "None" and additional in lora.available_loras and not any(x for x in params_list if x.items[0] == additional):
  9. p.all_prompts = [x + f"<lora:{additional}:{shared.opts.extra_networks_default_multiplier}>" for x in p.all_prompts]
  10. params_list.append(extra_networks.ExtraNetworkParams(items=[additional, shared.opts.extra_networks_default_multiplier]))
  11. names = []
  12. multipliers = []
  13. for params in params_list:
  14. assert params.items
  15. names.append(params.items[0])
  16. multipliers.append(float(params.items[1]) if len(params.items) > 1 else 1.0)
  17. lora.load_loras(names, multipliers)
  18. if shared.opts.lora_add_hashes_to_infotext:
  19. lora_hashes = []
  20. for item in lora.loaded_loras:
  21. shorthash = item.lora_on_disk.shorthash
  22. if not shorthash:
  23. continue
  24. alias = item.mentioned_name
  25. if not alias:
  26. continue
  27. alias = alias.replace(":", "").replace(",", "")
  28. lora_hashes.append(f"{alias}: {shorthash}")
  29. if lora_hashes:
  30. p.extra_generation_params["Lora hashes"] = ", ".join(lora_hashes)
  31. def deactivate(self, p):
  32. pass