mordecaaiiaart commited on
Commit
c144dd2
1 Parent(s): deea016

Upload forge_never_oom.py

Browse files
Files changed (1) hide show
  1. forge_never_oom.py +48 -0
forge_never_oom.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ from modules import scripts
4
+ from ldm_patched.modules import model_management
5
+
6
+
7
+ class NeverOOMForForge(scripts.Script):
8
+ sorting_priority = 18
9
+
10
+ def __init__(self):
11
+ self.previous_unet_enabled = False
12
+ self.original_vram_state = model_management.vram_state
13
+
14
+ def title(self):
15
+ return "Never OOM Integrated"
16
+
17
+ def show(self, is_img2img):
18
+ return scripts.AlwaysVisible
19
+
20
+ def ui(self, *args, **kwargs):
21
+ with gr.Accordion(open=False, label=self.title()):
22
+ unet_enabled = gr.Checkbox(label='Enabled for UNet (always maximize offload)', value=False)
23
+ vae_enabled = gr.Checkbox(label='Enabled for VAE (always tiled)', value=False)
24
+ return unet_enabled, vae_enabled
25
+
26
+ def process(self, p, *script_args, **kwargs):
27
+ unet_enabled, vae_enabled = script_args
28
+ unet_enabled = True
29
+ vae_enabled = True
30
+ if unet_enabled:
31
+ print('NeverOOM Enabled for UNet (always maximize offload)')
32
+
33
+ if vae_enabled:
34
+ print('NeverOOM Enabled for VAE (always tiled)')
35
+
36
+ model_management.VAE_ALWAYS_TILED = vae_enabled
37
+
38
+ if self.previous_unet_enabled != unet_enabled:
39
+ model_management.unload_all_models()
40
+ if unet_enabled:
41
+ self.original_vram_state = model_management.vram_state
42
+ model_management.vram_state = model_management.VRAMState.NO_VRAM
43
+ else:
44
+ model_management.vram_state = self.original_vram_state
45
+ print(f'VARM State Changed To {model_management.vram_state.name}')
46
+ self.previous_unet_enabled = unet_enabled
47
+
48
+ return