From 63c849a41e4dde8e9d4690e3c348c60f29827318 Mon Sep 17 00:00:00 2001 From: Guillermo Rodriguez Date: Tue, 11 Feb 2025 17:35:38 -0300 Subject: [PATCH] Fixes to tui and compatibility with frontend formated requests found while running worker --- skynet/dgpu/compute.py | 6 +++--- skynet/dgpu/daemon.py | 3 +-- skynet/dgpu/network.py | 5 ++++- skynet/dgpu/tui.py | 11 +++++++++-- skynet/types.py | 4 ++-- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/skynet/dgpu/compute.py b/skynet/dgpu/compute.py index f5892f3..c309d4b 100755 --- a/skynet/dgpu/compute.py +++ b/skynet/dgpu/compute.py @@ -43,14 +43,14 @@ def prepare_params_for_diffuse( if 'flux' in params.model.lower(): _params['max_sequence_length'] = 512 else: - _params['strength'] = params.strength + _params['strength'] = float(params.strength) case ModelMode.IMG2IMG: image = crop_image( inputs[0], params.width, params.height) _params['image'] = image - _params['strength'] = params.strength + _params['strength'] = float(params.strength) case ModelMode.TXT2IMG | ModelMode.DIFFUSE: ... @@ -60,7 +60,7 @@ def prepare_params_for_diffuse( return ( params.prompt, - params.guidance, + float(params.guidance), params.step, torch.manual_seed(int(params.seed)), _params diff --git a/skynet/dgpu/daemon.py b/skynet/dgpu/daemon.py index 4b32b8e..dd7022b 100755 --- a/skynet/dgpu/daemon.py +++ b/skynet/dgpu/daemon.py @@ -33,14 +33,13 @@ async def maybe_serve_one( conn: NetConnector, state_mngr: ContractState, ): + logging.info(f'maybe serve request pi: {state_mngr.poll_index}') req = state_mngr.first # no requests in queue if not req: return - logging.info(f'maybe serve request #{req.id}') - # parse request body = msgspec.json.decode(req.body, type=BodyV0) model = body.params.model diff --git a/skynet/dgpu/network.py b/skynet/dgpu/network.py index 91c06d8..e5f1070 100755 --- a/skynet/dgpu/network.py +++ b/skynet/dgpu/network.py @@ -20,6 +20,7 @@ from skynet.dgpu.tui import maybe_update_tui from skynet.config import DgpuConfig as Config, load_skynet_toml from skynet.types import ( ConfigV0, + AccountV0, BodyV0, RequestV0, WorkerStatusV0, @@ -128,7 +129,8 @@ class NetConnector: index_position=1, key_type='name', lower_bound=self.config.account, - upper_bound=self.config.account + upper_bound=self.config.account, + resp_cls=AccountV0 )) if rows: @@ -334,6 +336,7 @@ class ContractState: self._queue.append(req) except msgspec.ValidationError: + logging.exception(f'dropping req {req.id} due to:') ... random.shuffle(self._queue) diff --git a/skynet/dgpu/tui.py b/skynet/dgpu/tui.py index 7a796b2..e1c572a 100644 --- a/skynet/dgpu/tui.py +++ b/skynet/dgpu/tui.py @@ -78,6 +78,11 @@ class WorkerMonitor: """ row_widgets = [] + requests = sorted( + requests, + key=lambda r: r['id'] + ) + for req in requests: # Build a columns widget for the request row prompt = req['prompt'] if 'prompt' in req else 'UPSCALE' @@ -159,11 +164,13 @@ class WorkerMonitor: def network_update(self, state_mngr): queue = [ { - **r, + 'id': r.id, + 'user': r.user, + 'reward': r.reward, **(json.loads(r.body)['params']), 'workers': [s.worker for s in state_mngr._status_by_rid[r.id]] } - for r in state_mngr.queue + for r in state_mngr._queue ] self.update_requests(queue) diff --git a/skynet/types.py b/skynet/types.py index 519f290..45450aa 100644 --- a/skynet/types.py +++ b/skynet/types.py @@ -79,10 +79,10 @@ class BodyV0Params(Struct): model: str seed: int step: int = 1 - guidance: float | None = None + guidance: str | float | None = None width: int | None = None height: int | None = None - strength: float | None = None + strength: str | float | None = None output_type: str | None = 'png' upscaler: str | None = None