Add exclusive music GPU mode beside LLM and video
This commit is contained in:
+3
-3
@@ -23,14 +23,14 @@ class Scheduler:
|
||||
def status(self):
|
||||
with self.cv:return dict(active_requests=self.active+self.tts_active,waiting_requests=len(self.queue),switching=self.transition)
|
||||
@contextlib.contextmanager
|
||||
def lease(self, key, slots=1, prepare=None, timeout=600, allowed=lambda:True):
|
||||
def lease(self, key, slots=1, prepare=None, timeout=600, allowed=lambda:True, modes=("llm",)):
|
||||
ticket=object();deadline=time.monotonic()+timeout;claimed=False
|
||||
with self.cv:
|
||||
if len(self.queue)>=16:raise InferenceError('Warteschlange voll. Bitte später erneut versuchen.')
|
||||
self.queue.append(ticket)
|
||||
try:
|
||||
while True:
|
||||
if self.gpu_mode!="llm":raise InferenceError("Video-Modus aktiv oder Moduswechsel läuft; GPU-Aufträge sind gesperrt.")
|
||||
if self.gpu_mode not in modes:raise InferenceError("Video-Modus aktiv oder Moduswechsel läuft; GPU-Aufträge sind gesperrt.")
|
||||
if not allowed():raise InferenceError('Endpunkt wird gestoppt oder Profil ist nicht mehr aktiviert.')
|
||||
if self.queue[0] is ticket and not self.transition and (not self.active or (self.key==key and self.active<slots)) and (not self.tts_active or self.key==key and key!=('image',)):
|
||||
self.queue.pop(0);self.active+=1;claimed=True
|
||||
@@ -60,7 +60,7 @@ class Scheduler:
|
||||
if claimed:
|
||||
with self.cv:self.active-=1;self.cv.notify_all()
|
||||
def image_reservation(self, wait=False,kind='image'):
|
||||
lease=self.lease((kind,),timeout=600 if wait else 0)
|
||||
lease=self.lease((kind,),timeout=600 if wait else 0,modes=("music",) if kind=="music" else ("llm",))
|
||||
lease.__enter__()
|
||||
return lambda:lease.__exit__(None,None,None)
|
||||
def tts_reservation(self,wait=False):
|
||||
|
||||
Reference in New Issue
Block a user