diff --git a/modeling/inference_models/hf.py b/modeling/inference_models/hf.py index ee585321..7a21bca6 100644 --- a/modeling/inference_models/hf.py +++ b/modeling/inference_models/hf.py @@ -77,6 +77,18 @@ class HFInferenceModel(InferenceModel): break_values += [0] * (gpu_count - len(break_values)) if disk_blocks is not None: break_values += [int(disk_blocks)] + requested_parameters.append({ + "uitype": "Valid Display", + "unit": "text", + "label": "Current Allocated Layers: %1/{}".format(layer_count), #%1 will be the validation value + "id": "valid_layers", + "max": layer_count, + "step": 1, + "check": {"sum": ["{}_Layers".format(i) for i in range(gpu_count)]+['CPU_Layers']+(['Disk_Layers'] if disk_blocks is not None else []), "value": layer_count, 'check': "="}, + "menu_path": "Layers", + "extra_classes": "", + "refresh_model_inputs": False + }) for i in range(gpu_count): requested_parameters.append({ "uitype": "slider", diff --git a/static/application.js b/static/application.js index 8bc6c830..11fba578 100644 --- a/static/application.js +++ b/static/application.js @@ -4080,6 +4080,25 @@ function model_settings_checker() { accept.classList.add("disabled"); accept.disabled = true; } + + + //We now have valid display boxes potentially. We'll go through them and update the display + for (const item of document.querySelectorAll(".model_settings_valid_display:not(#blank_model_settings_valid_display)")) { + check_value = 0 + missing_element = false; + for (const temp of item.check_data['sum']) { + if (document.getElementById(item.id.split("|")[0] +"|" + temp + "_value")) { + check_value += parseInt(document.getElementById(item.id.split("|")[0] +"|" + temp + "_value").value); + } else { + missing_element = true; + } + } + if (!missing_element) { + item.innerText = item.original_text.replace("%1", check_value); + } + + + } } function selected_model_info(sent_data) { @@ -4250,18 +4269,26 @@ function selected_model_info(sent_data) { new_setting.querySelector('#blank_model_settings_text').remove(); } + if (item['uitype'] == "Valid Display") { + new_setting = document.createElement("DIV"); + new_setting.classList.add("model_settings_valid_display"); + new_setting.id = loader + "|" + item['id'] + "_value"; + new_setting.innerText = item['label']; + new_setting.check_data = item['check']; + new_setting.original_text = item['label']; + } + model_area.append(new_setting); loadmodelsettings.append(model_area); } } //unhide the first plugin settings - console.log(document.getElementById("modelplugin").value + "_settings_area"); if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden"); } - model_settings_checker(); + model_settings_checker() } diff --git a/static/custom.css b/static/custom.css index 968d73e4..b8e3f455 100644 --- a/static/custom.css +++ b/static/custom.css @@ -2395,6 +2395,7 @@ body.connected .popupfooter, .popupfooter.always-available { padding-top: 0px; text-align: right; font-size: calc(0.8em + var(--font_size_adjustment)); + text-align: left; } .setting_label { diff --git a/static/koboldai.css b/static/koboldai.css index 85aea08a..3252c21a 100644 --- a/static/koboldai.css +++ b/static/koboldai.css @@ -386,6 +386,7 @@ border-top-right-radius: var(--tabs_rounding); padding-top: 0px; text-align: right; font-size: calc(0.8em + var(--font_size_adjustment)); + text-align: left; } .setting_label { diff --git a/static/koboldai.js b/static/koboldai.js index fc33a020..99383728 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -1754,6 +1754,25 @@ function model_settings_checker() { accept.classList.add("disabled"); accept.disabled = true; } + + + //We now have valid display boxes potentially. We'll go through them and update the display + for (const item of document.querySelectorAll(".model_settings_valid_display:not(#blank_model_settings_valid_display)")) { + check_value = 0 + missing_element = false; + for (const temp of item.check_data['sum']) { + if (document.getElementById(item.id.split("|")[0] +"|" + temp + "_value")) { + check_value += parseInt(document.getElementById(item.id.split("|")[0] +"|" + temp + "_value").value); + } else { + missing_element = true; + } + } + if (!missing_element) { + item.innerText = item.original_text.replace("%1", check_value); + } + + + } } function selected_model_info(sent_data) { @@ -1924,13 +1943,21 @@ function selected_model_info(sent_data) { new_setting.querySelector('#blank_model_settings_text').remove(); } + if (item['uitype'] == "Valid Display") { + new_setting = document.createElement("DIV"); + new_setting.classList.add("model_settings_valid_display"); + new_setting.id = loader + "|" + item['id'] + "_value"; + new_setting.innerText = item['label']; + new_setting.check_data = item['check']; + new_setting.original_text = item['label']; + } + model_area.append(new_setting); loadmodelsettings.append(model_area); } } //unhide the first plugin settings - console.log(document.getElementById("modelplugin").value + "_settings_area"); if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden"); }