adamelliotfields commited on
Commit
6681256
·
verified ·
1 Parent(s): 80cc4ea

Dynamic GPU duration

Browse files
Files changed (2) hide show
  1. lib/inference.py +10 -1
  2. 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
- @spaces.GPU(duration=40)
 
 
 
 
 
 
 
 
 
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
- if cls._instance is None:
23
- cls._instance = super(Loader, cls).__new__(cls)
24
- cls._instance.pipe = None
25
- cls._instance.model = None
26
- cls._instance.upscaler = None
27
- cls._instance.ip_adapter = None
 
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):