Spaces:
Running
on
Zero
Running
on
Zero
Dynamic GPU duration
Browse files- lib/inference.py +10 -1
- lib/loader.py +9 -6
lib/inference.py
CHANGED
@@ -96,7 +96,16 @@ def prepare_image(input, size=None):
|
|
96 |
raise ValueError("Invalid image prompt")
|
97 |
|
98 |
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
def generate(
|
101 |
positive_prompt,
|
102 |
negative_prompt="",
|
|
|
96 |
raise ValueError("Invalid image prompt")
|
97 |
|
98 |
|
99 |
+
def gpu_duration(**kwargs):
|
100 |
+
duration = 15
|
101 |
+
scale = kwargs.get("scale", 1)
|
102 |
+
num_images = kwargs.get("num_images", 1)
|
103 |
+
if scale == 4:
|
104 |
+
duration += 5
|
105 |
+
return duration * num_images
|
106 |
+
|
107 |
+
|
108 |
+
@spaces.GPU(duration=gpu_duration)
|
109 |
def generate(
|
110 |
positive_prompt,
|
111 |
negative_prompt="",
|
lib/loader.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
import gc
|
|
|
2 |
|
3 |
import torch
|
4 |
from DeepCache import DeepCacheSDHelper
|
@@ -17,14 +18,16 @@ __import__("diffusers").logging.set_verbosity_error()
|
|
17 |
|
18 |
class Loader:
|
19 |
_instance = None
|
|
|
20 |
|
21 |
def __new__(cls):
|
22 |
-
|
23 |
-
cls._instance
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
28 |
return cls._instance
|
29 |
|
30 |
def _should_unload_upscaler(self, scale=1):
|
|
|
1 |
import gc
|
2 |
+
from threading import Lock
|
3 |
|
4 |
import torch
|
5 |
from DeepCache import DeepCacheSDHelper
|
|
|
18 |
|
19 |
class Loader:
|
20 |
_instance = None
|
21 |
+
_lock = Lock()
|
22 |
|
23 |
def __new__(cls):
|
24 |
+
with cls._lock:
|
25 |
+
if cls._instance is None:
|
26 |
+
cls._instance = super().__new__(cls)
|
27 |
+
cls._instance.pipe = None
|
28 |
+
cls._instance.model = None
|
29 |
+
cls._instance.upscaler = None
|
30 |
+
cls._instance.ip_adapter = None
|
31 |
return cls._instance
|
32 |
|
33 |
def _should_unload_upscaler(self, scale=1):
|