diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-07-16 21:12:18 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2023-07-16 21:12:18 +0000 |
commit | 58c3df32f3a73b20ea33d1709a1d25818b8a98dd (patch) | |
tree | 474fb869edbdf78c2984433508036753b9d767d7 | |
parent | ef5dac7786916dd39711edb2b8e90ce96ef78fca (diff) | |
download | stable-diffusion-webui-gfx803-58c3df32f3a73b20ea33d1709a1d25818b8a98dd.tar.gz stable-diffusion-webui-gfx803-58c3df32f3a73b20ea33d1709a1d25818b8a98dd.tar.bz2 stable-diffusion-webui-gfx803-58c3df32f3a73b20ea33d1709a1d25818b8a98dd.zip |
IA3 support
-rw-r--r-- | extensions-builtin/Lora/network_ia3.py | 32 | ||||
-rw-r--r-- | extensions-builtin/Lora/networks.py | 2 |
2 files changed, 34 insertions, 0 deletions
diff --git a/extensions-builtin/Lora/network_ia3.py b/extensions-builtin/Lora/network_ia3.py new file mode 100644 index 00000000..99f2307c --- /dev/null +++ b/extensions-builtin/Lora/network_ia3.py @@ -0,0 +1,32 @@ +import lyco_helpers
+import network
+import network_lyco
+
+
+class ModuleTypeIa3(network.ModuleType):
+ def create_module(self, net: network.Network, weights: network.NetworkWeights):
+ if all(x in weights.w for x in ["weight"]):
+ return NetworkModuleIa3(net, weights)
+
+ return None
+
+
+class NetworkModuleIa3(network_lyco.NetworkModuleLyco):
+ def __init__(self, net: network.Network, weights: network.NetworkWeights):
+ super().__init__(net, weights)
+
+ self.w = weights.w["weight"]
+ self.on_input = weights.w["on_input"].item()
+
+ def calc_updown(self, orig_weight):
+ w = self.w.to(orig_weight.device, dtype=orig_weight.dtype)
+
+ output_shape = [w.size(0), orig_weight.size(1)]
+ if self.on_input:
+ output_shape.reverse()
+ else:
+ w = w.reshape(-1, 1)
+
+ updown = orig_weight * w
+
+ return self.finalize_updown(updown, orig_weight, output_shape)
diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 90374faa..bf810b5b 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -4,6 +4,7 @@ import re import network
import network_lora
import network_hada
+import network_ia3
import torch
from typing import Union
@@ -13,6 +14,7 @@ from modules import shared, devices, sd_models, errors, scripts, sd_hijack module_types = [
network_lora.ModuleTypeLora(),
network_hada.ModuleTypeHada(),
+ network_ia3.ModuleTypeIa3(),
]
|