Add exclusive music GPU mode beside LLM and video

This commit is contained in:
Mikei386
2026-09-30 22:13:31 +02:00
parent 0ca40bc624
commit 3aa2301a53
12 changed files with 46 additions and 16 deletions
+3 -2
View File
@@ -14,12 +14,13 @@ class Music:
except ValueError:result.append(info['label']+' fehlt oder ist nicht zugeordnet.')
return result
def status(self):
with self.lock:return dict(job=dict(self.job) if self.job else None,loaded=bool(self.process and self.process.poll() is None),runtime_installed=self.runtime.status()['installed'])
with self.lock:return dict(job=dict(self.job) if self.job else None,loaded=bool(self.process and self.process.poll() is None),mode=self.scheduler.gpu_mode,runtime_installed=self.runtime.status()['installed'])
def start(self,profile_id,lyrics,style,seed=1234,max_tokens=400,steps=8,wait=False):
if not isinstance(lyrics,str) or not 1<=len(lyrics.strip())<=8000:raise ValueError('Songtext mit 1–8000 Zeichen eingeben.')
if not isinstance(style,str) or not 1<=len(style.strip())<=2000:raise ValueError('Musikstil mit 1–2000 Zeichen eingeben.')
for value,lo,hi in ((seed,0,2**31-1),(max_tokens,32,9000),(steps,1,32)):
if type(value) is not int or not lo<=value<=hi:raise ValueError('Ungültige Musikparameter.')
if self.scheduler.gpu_mode!='music':raise ValueError('Bitte in der Übersicht auf Musik umschalten.')
with self.lock:
if self.job and self.job['state']=='running':raise ValueError('Musikauftrag läuft bereits.')
p=next((p for p in self.profiles.status()['profiles'] if p['id']==profile_id and p['kind']=='music'),None)
@@ -30,7 +31,7 @@ class Music:
def _run(self,p,lyrics,style,seed,max_tokens,steps,wait):
release=None;state='failed';phase='Musikgenerierung fehlgeschlagen.';directory=self.root/self.job['id'];log=directory/'worker.tmp'
try:
release=self.scheduler.image_reservation(wait=wait)
release=self.scheduler.image_reservation(wait=wait,kind="music")
if self.cancel.is_set():raise InterruptedError()
required=int(p['model']['size']/1024**2)+1800
gpu=next((g for g in probe() if 'RTX 5080' in g['name'] and not g['processes'] and g['free_mib']>required),None)