mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2025-06-05 21:59:24 +02:00
Horde Status bar
This commit is contained in:
21
aiserver.py
21
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
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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> </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>
|
||||
|
Reference in New Issue
Block a user