Horde Status bar

This commit is contained in:
ebolam
2022-09-21 10:30:29 -04:00
parent d910d6b8dd
commit 3972cd5524
4 changed files with 54 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -95,6 +95,13 @@
<div class="statusbar_outer hidden var_sync_alt_system_aibusy" id="status_bar" onclick="socket.emit('abort','');">
<div class="statusbar_inner" style="width:0%" onclick="socket.emit('abort','');">0%</div>
</div><br>
<div class="statusbar_outer_horde var_sync_alt_system_aibusy var_sync_alt_model_horde_wait_time" id="status_bar_horde">
<div class="statusbar_inner_horde" style="width:100%">
<div>&nbsp;</div>
<div>Queue <span class="var_sync_model_horde_queue_position"></span> of <span class="var_sync_model_horde_queue_size"></span></div>
<div><span class="var_sync_model_horde_wait_time"></span> sec left</div>
</div>
</div><br>
<button type="button" class="btn action_button submit var_sync_alt_system_aibusy" system_aibusy=False id="btnsubmit"
onclick="socket.emit('submit', {'data': document.getElementById('input_text').value, 'theme': document.getElementById('themetext').value});document.getElementById('input_text').value = '';document.getElementById('themetext').value = '';"
>Submit</button>