From 13db6821feaae4174643eff9ca876c980d8d007a Mon Sep 17 00:00:00 2001 From: ebolam Date: Sat, 15 Jul 2023 11:11:29 -0400 Subject: [PATCH 1/3] Fix for default inference model is_valid and requested_parameters having vram as a required parameter. --- modeling/inference_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modeling/inference_model.py b/modeling/inference_model.py index bc11ec11..a2d4fa63 100644 --- a/modeling/inference_model.py +++ b/modeling/inference_model.py @@ -171,10 +171,10 @@ class InferenceModel: self.capabilties = ModelCapabilities() self.model_name = "Not Defined" - def is_valid(self, model_name, model_path, menu_path, vram): + def is_valid(self, model_name, model_path, menu_path): return True - def requested_parameters(self, model_name, model_path, menu_path, vram): + def requested_parameters(self, model_name, model_path, menu_path): return {} def set_input_parameters(self, parameters): From aaec472f73bebf16685cb64649453dd1e8603997 Mon Sep 17 00:00:00 2001 From: ebolam Date: Sat, 15 Jul 2023 15:20:18 -0400 Subject: [PATCH 2/3] Fix for toggles not showing up right in model backend settings --- static/application.js | 4 ++++ static/koboldai.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/static/application.js b/static/application.js index f8905a45..053d7d53 100644 --- a/static/application.js +++ b/static/application.js @@ -4188,6 +4188,10 @@ function selected_model_info(sent_data) { toggle.checked = item['default']; toggle.onclick = onchange_event; toggle.setAttribute("data_type", item['unit']); + toggle.classList.add("bootstrap_toggle"); + $('.bootstrap_toggle').bootstrapToggle('state', item['default']); + toggle.classList.remove("bootstrap_toggle"); + toggle.setAttribute("refresh_model_inputs", item['refresh_model_inputs']); if ('check' in item) { toggle.check_data = item['check']; diff --git a/static/koboldai.js b/static/koboldai.js index c9d66cb6..57c91be4 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -1863,6 +1863,9 @@ function selected_model_info(sent_data) { toggle.onclick = onchange_event; toggle.setAttribute("data_type", item['unit']); toggle.setAttribute("refresh_model_inputs", item['refresh_model_inputs']); + toggle.classList.add("bootstrap_toggle"); + $('.bootstrap_toggle').bootstrapToggle('state', item['default']); + toggle.classList.remove("bootstrap_toggle"); if ('check' in item) { toggle.check_data = item['check']; } else { From 869bcadd0339640d9b411788359040ef69061e3b Mon Sep 17 00:00:00 2001 From: ebolam Date: Sat, 15 Jul 2023 15:48:31 -0400 Subject: [PATCH 3/3] Fix for toggles showing as check boxes in model loading Fix for resubmit_model_info loosing selected model backend --- aiserver.py | 4 ++-- static/application.js | 23 +++++++++++++++++------ static/koboldai.js | 24 ++++++++++++++++++------ 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/aiserver.py b/aiserver.py index f1dacc40..56bd527a 100644 --- a/aiserver.py +++ b/aiserver.py @@ -6293,9 +6293,9 @@ def UI_2_select_model(data): @logger.catch def UI_2_resubmit_model_info(data): valid_loaders = {} - for model_backend in set([item.model_backend for sublist in model_menu for item in model_menu[sublist] if item.name == data['id']]): + for model_backend in data['valid_backends']: valid_loaders[model_backend] = model_backends[model_backend].get_requested_parameters(data["name"], data["path"] if 'path' in data else None, data["menu"], parameters=data) - emit("selected_model_info", {"model_backends": valid_loaders}) + emit("selected_model_info", {"model_backends": valid_loaders, 'selected_model_backend': data['plugin']}) #==================================================================# # Event triggered when user loads a model diff --git a/static/application.js b/static/application.js index 053d7d53..0c689646 100644 --- a/static/application.js +++ b/static/application.js @@ -3977,6 +3977,12 @@ function show_model_menu(data) { } +function getOptions(id){ + let selectElement = document.getElementById(id); + let optionNames = [...selectElement.options].map(o => o.text); + return optionNames; +} + function model_settings_checker() { //get check value: missing_element = false; @@ -4028,6 +4034,8 @@ function model_settings_checker() { data = {...data, ...selected_model_data}; data['plugin'] = document.getElementById("modelplugin").value; + data['valid_backends'] = getOptions("modelplugin"); + socket.emit("resubmit_model_info", data); } @@ -4101,6 +4109,10 @@ function model_settings_checker() { } } +function set_toggle(id) { + $('#'+id).bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); +} + function selected_model_info(sent_data) { const data = sent_data['model_backends']; //clear out the loadmodelsettings @@ -4188,9 +4200,6 @@ function selected_model_info(sent_data) { toggle.checked = item['default']; toggle.onclick = onchange_event; toggle.setAttribute("data_type", item['unit']); - toggle.classList.add("bootstrap_toggle"); - $('.bootstrap_toggle').bootstrapToggle('state', item['default']); - toggle.classList.remove("bootstrap_toggle"); toggle.setAttribute("refresh_model_inputs", item['refresh_model_inputs']); if ('check' in item) { @@ -4199,9 +4208,7 @@ function selected_model_info(sent_data) { toggle.check_data = null; } new_setting.querySelector('#blank_model_settings_toggle').append(toggle); - setTimeout(function() { - $('#'+loader + "\\|" + item['id'] + "_value").bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); - }, 200); + setTimeout(set_toggle, 200, loader + "\\|" + item['id'] + "_value"); toggle.noresubmit = true; toggle.onclick(); toggle.noresubmit = false; @@ -4287,6 +4294,10 @@ function selected_model_info(sent_data) { } } + if ('selected_model_backend' in sent_data) { + document.getElementById("modelplugin").value = sent_data['selected_model_backend']; + } + //unhide the first plugin settings if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden"); diff --git a/static/koboldai.js b/static/koboldai.js index 57c91be4..94ac6ce4 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -1651,6 +1651,12 @@ function show_model_menu(data) { } +function getOptions(id){ + let selectElement = document.getElementById(id); + let optionNames = [...selectElement.options].map(o => o.text); + return optionNames; +} + function model_settings_checker() { //get check value: missing_element = false; @@ -1702,6 +1708,7 @@ function model_settings_checker() { data = {...data, ...selected_model_data}; data['plugin'] = document.getElementById("modelplugin").value; + data['valid_backends'] = getOptions("modelplugin"); socket.emit("resubmit_model_info", data); } @@ -1775,7 +1782,13 @@ function model_settings_checker() { } } +function set_toggle(id) { + $('#'+id).bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); +} + +var temp; function selected_model_info(sent_data) { + temp = sent_data; const data = sent_data['model_backends']; //clear out the loadmodelsettings var loadmodelsettings = document.getElementById('loadmodelsettings') @@ -1863,18 +1876,13 @@ function selected_model_info(sent_data) { toggle.onclick = onchange_event; toggle.setAttribute("data_type", item['unit']); toggle.setAttribute("refresh_model_inputs", item['refresh_model_inputs']); - toggle.classList.add("bootstrap_toggle"); - $('.bootstrap_toggle').bootstrapToggle('state', item['default']); - toggle.classList.remove("bootstrap_toggle"); if ('check' in item) { toggle.check_data = item['check']; } else { toggle.check_data = null; } new_setting.querySelector('#blank_model_settings_toggle').append(toggle); - setTimeout(function() { - $('#'+loader + "\\|" + item['id'] + "_value").bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); - }, 200); + setTimeout(set_toggle, 200, loader + "\\|" + item['id'] + "_value"); toggle.noresubmit = true; toggle.onclick(); toggle.noresubmit = false; @@ -1960,6 +1968,10 @@ function selected_model_info(sent_data) { } } + if ('selected_model_backend' in sent_data) { + document.getElementById("modelplugin").value = sent_data['selected_model_backend']; + } + //unhide the first plugin settings if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden");