From 3972cd55246bc6c792c1ebea64dbf2a48677ffbd Mon Sep 17 00:00:00 2001 From: ebolam Date: Wed, 21 Sep 2022 10:30:29 -0400 Subject: [PATCH] Horde Status bar --- aiserver.py | 21 ++++++++++++++++++++- koboldai_settings.py | 3 +++ static/koboldai.css | 24 ++++++++++++++++++++++++ templates/index_new.html | 7 +++++++ 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/aiserver.py b/aiserver.py index ade32fd5..bb6e33ff 100644 --- a/aiserver.py +++ b/aiserver.py @@ -2212,6 +2212,8 @@ def load_model(use_gpu=True, gpu_layers=None, disk_layers=None, initial_load=Fal disk_layers = None koboldai_vars.reset_model() koboldai_vars.cluster_requested_models = [online_model] if isinstance(online_model, str) else online_model + if koboldai_vars.cluster_requested_models == [""]: + koboldai_vars.cluster_requested_models = [] koboldai_vars.noai = False if not use_breakmodel_args: set_aibusy(True) @@ -5346,7 +5348,7 @@ def sendtocluster(txt, min, max): try: # Create request req = requests.post( - koboldai_vars.colaburl[:-8] + "/api/v1/generate/sync", + koboldai_vars.colaburl[:-8] + "/api/v1/generate/async", json=cluster_metadata, ) except requests.exceptions.ConnectionError: @@ -5367,6 +5369,7 @@ def sendtocluster(txt, min, max): emit('from_server', {'cmd': 'errmsg', 'data': errmsg}, broadcast=True) set_aibusy(0) return + try: js = req.json() except requests.exceptions.JSONDecodeError: @@ -5375,6 +5378,22 @@ def sendtocluster(txt, min, max): emit('from_server', {'cmd': 'errmsg', 'data': errmsg}, broadcast=True) set_aibusy(0) return + request_id = js['id'] + logger.debug("Horde Request ID: {}".format(request_id)) + #We've sent the request and got the ID back, now we need to watch it to see when it finishes + finished = False + while not finished: + js = requests.get(koboldai_vars.colaburl[:-8] + "/api/v1/generate/check/" + request_id).json() + finished = js["done"] + koboldai_vars.horde_wait_time = js["wait_time"] + koboldai_vars.horde_queue_position = js["queue_position"] + koboldai_vars.horde_queue_size = js["waiting"] + time.sleep(0.1) + + logger.debug("Last Horde Status Message: {}".format(js)) + js = requests.get(koboldai_vars.colaburl[:-8] + "/api/v1/generate/prompt/" + request_id).json()['generations'] + logger.debug("Horde Result: {}".format(js)) + gen_servers = [(cgen['server_name'],cgen['server_id']) for cgen in js] logger.info(f"Generations by: {gen_servers}") # Just in case we want to announce it to the user diff --git a/koboldai_settings.py b/koboldai_settings.py index aebf9ff2..88772e34 100644 --- a/koboldai_settings.py +++ b/koboldai_settings.py @@ -445,6 +445,9 @@ class model_settings(settings): self.selected_preset = "" self.uid_presets = [] self.default_preset = {} + self.horde_wait_time = 0 + self.horde_queue_position = 0 + self.horde_queue_size = 0 self.cluster_requested_models = [] # The models which we allow to generate during cluster mode diff --git a/static/koboldai.css b/static/koboldai.css index 032d625e..ced38455 100644 --- a/static/koboldai.css +++ b/static/koboldai.css @@ -1413,6 +1413,30 @@ body { height: 0px; } +.statusbar_outer_horde { + display: none; + height: 0px; +} + +.statusbar_outer_horde[system_aibusy="true"]:not([model_horde_wait_time="0"]) { + display: inline; + color: var(--statusbar_color); + background-color: transparent; + grid-area: submit; + z-index: 4; + height: 100%; +} + +.statusbar_inner_horde { + background-color: var(--statusbar_color); + color: var(--statusbar_text_color); + border-radius: 5px; + z-index: 0; + height: 100%; + text-align: center; + font-size: calc(0.875em + var(--font_size_adjustment)); +} + .statusbar_inner { background-color: var(--statusbar_color); color: var(--statusbar_text_color); diff --git a/templates/index_new.html b/templates/index_new.html index 82171801..07899e78 100644 --- a/templates/index_new.html +++ b/templates/index_new.html @@ -95,6 +95,13 @@
+
+
+
 
+
Queue of
+
sec left
+
+