mirror of
https://github.com/LostRuins/koboldcpp.git
synced 2025-09-09 16:44:35 +00:00
various qol fixes
This commit is contained in:
parent
a74d8669b3
commit
f6bbc350f2
2 changed files with 32 additions and 23 deletions
|
@ -1953,9 +1953,9 @@ ModelLoadResult gpttype_load_model(const load_model_inputs inputs, FileFormat in
|
||||||
kcpp_data->swa_full = true; //cannot use SWA
|
kcpp_data->swa_full = true; //cannot use SWA
|
||||||
printf("\nSWA Mode IS DISABLED!\nSWA Mode Cannot be used with Context Shifting!\n");
|
printf("\nSWA Mode IS DISABLED!\nSWA Mode Cannot be used with Context Shifting!\n");
|
||||||
} else if (inputs.use_fastforward) {
|
} else if (inputs.use_fastforward) {
|
||||||
printf("\nSWA Mode is ENABLED!\nNote that using SWA Mode with Fast Forwarding can lead to degraded recall!\n");
|
printf("\nSWA Mode is ENABLED!\nNote that using SWA Mode cannot be used with Context Shifting, and can lead to degraded recall when combined with Fast Forwarding!\n");
|
||||||
} else {
|
} else {
|
||||||
printf("\nSWA Mode IS ENABLED!\n");
|
printf("\nSWA Mode IS ENABLED!\nNote that using SWA Mode cannot be used with Context Shifting\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debugmode = inputs.debugmode;
|
debugmode = inputs.debugmode;
|
||||||
|
|
51
koboldcpp.py
51
koboldcpp.py
|
@ -4354,18 +4354,18 @@ def show_gui():
|
||||||
button = ctk.CTkButton(parent, 50, text="Browse", command= lambda a=var,b=searchtext:getfilename(a,b))
|
button = ctk.CTkButton(parent, 50, text="Browse", command= lambda a=var,b=searchtext:getfilename(a,b))
|
||||||
if singlerow:
|
if singlerow:
|
||||||
if singlecol:
|
if singlecol:
|
||||||
entry.grid(row=row, column=0, padx=(94+8), stick="w")
|
entry.grid(row=row, column=0, padx=(94+8), pady=2, stick="w")
|
||||||
button.grid(row=row, column=0, padx=(94+width+12), stick="nw")
|
button.grid(row=row, column=0, padx=(94+width+12), pady=2, stick="w")
|
||||||
else:
|
else:
|
||||||
entry.grid(row=row, column=1, padx=8, stick="w")
|
entry.grid(row=row, column=1, padx=8, pady=2, stick="w")
|
||||||
button.grid(row=row, column=1, padx=(width+12), stick="nw")
|
button.grid(row=row, column=1, padx=(width+12), pady=2, stick="w")
|
||||||
else:
|
else:
|
||||||
if singlecol:
|
if singlecol:
|
||||||
entry.grid(row=row+1, column=0, columnspan=3, padx=8, stick="nw")
|
entry.grid(row=row+1, column=0, columnspan=3, padx=8, pady=2, stick="w")
|
||||||
button.grid(row=row+1, column=0, columnspan=3, padx=(width+12), stick="nw")
|
button.grid(row=row+1, column=0, columnspan=3, padx=(width+12), pady=2, stick="w")
|
||||||
else:
|
else:
|
||||||
entry.grid(row=row+1, column=0, columnspan=1, padx=8, stick="nw")
|
entry.grid(row=row+1, column=0, columnspan=1, padx=8, pady=2, stick="w")
|
||||||
button.grid(row=row+1, column=1, columnspan=1, padx=8, stick="nw")
|
button.grid(row=row+1, column=1, columnspan=1, padx=8, pady=2, stick="w")
|
||||||
return label, entry, button
|
return label, entry, button
|
||||||
|
|
||||||
def model_searcher():
|
def model_searcher():
|
||||||
|
@ -4753,7 +4753,7 @@ def show_gui():
|
||||||
# load model
|
# load model
|
||||||
makefileentry(quick_tab, "GGUF Text Model:", "Select GGUF or GGML Model File", model_var, 40, 280, onchoosefile=on_picked_model_file,tooltiptxt="Select a GGUF or GGML model file on disk to be loaded.")
|
makefileentry(quick_tab, "GGUF Text Model:", "Select GGUF or GGML Model File", model_var, 40, 280, onchoosefile=on_picked_model_file,tooltiptxt="Select a GGUF or GGML model file on disk to be loaded.")
|
||||||
model_var.trace("w", gui_changed_modelfile)
|
model_var.trace("w", gui_changed_modelfile)
|
||||||
ctk.CTkButton(quick_tab, width=70, text = "HF Search", command = model_searcher ).grid(row=41,column=1, stick="sw", padx= 202)
|
ctk.CTkButton(quick_tab, width=70, text = "HF Search", command = model_searcher ).grid(row=41,column=1, stick="sw", padx= 202, pady=2)
|
||||||
|
|
||||||
# Hardware Tab
|
# Hardware Tab
|
||||||
hardware_tab = tabcontent["Hardware"]
|
hardware_tab = tabcontent["Hardware"]
|
||||||
|
@ -4849,7 +4849,7 @@ def show_gui():
|
||||||
model_tab = tabcontent["Loaded Files"]
|
model_tab = tabcontent["Loaded Files"]
|
||||||
|
|
||||||
makefileentry(model_tab, "Text Model:", "Select GGUF or GGML Model File", model_var, 1,width=205,singlerow=True, onchoosefile=on_picked_model_file,tooltiptxt="Select a GGUF or GGML model file on disk to be loaded.")
|
makefileentry(model_tab, "Text Model:", "Select GGUF or GGML Model File", model_var, 1,width=205,singlerow=True, onchoosefile=on_picked_model_file,tooltiptxt="Select a GGUF or GGML model file on disk to be loaded.")
|
||||||
ctk.CTkButton(model_tab, width=70, text = "HF Search", command = model_searcher ).grid(row=1,column=0, stick="nw", padx=370)
|
ctk.CTkButton(model_tab, width=70, text = "HF Search", command = model_searcher ).grid(row=1,column=0, stick="nw", padx=370, pady=2)
|
||||||
makefileentry(model_tab, "Text Lora:", "Select Lora File",lora_var, 3,width=160,singlerow=True,tooltiptxt="Select an optional GGML Text LoRA adapter to use.\nLeave blank to skip.")
|
makefileentry(model_tab, "Text Lora:", "Select Lora File",lora_var, 3,width=160,singlerow=True,tooltiptxt="Select an optional GGML Text LoRA adapter to use.\nLeave blank to skip.")
|
||||||
makelabelentry(model_tab, "Multiplier: ", loramult_var, 3, 50,padx=390,singleline=True,tooltip="Scale multiplier for Text LoRA Strength. Default is 1.0", labelpadx=330)
|
makelabelentry(model_tab, "Multiplier: ", loramult_var, 3, 50,padx=390,singleline=True,tooltip="Scale multiplier for Text LoRA Strength. Default is 1.0", labelpadx=330)
|
||||||
makefileentry(model_tab, "Vision mmproj:", "Select Vision mmproj File", mmproj_var, 7,width=280,singlerow=True,tooltiptxt="Select a mmproj file to use for vision models like LLaVA.\nLeave blank to skip.")
|
makefileentry(model_tab, "Vision mmproj:", "Select Vision mmproj File", mmproj_var, 7,width=280,singlerow=True,tooltiptxt="Select a mmproj file to use for vision models like LLaVA.\nLeave blank to skip.")
|
||||||
|
@ -4869,7 +4869,7 @@ def show_gui():
|
||||||
fnam = zentk_askopenfilename(title="Pick Premade ChatCompletions Adapter",filetypes=[("JSON Adapter", "*.json")], initialdir=initialDir)
|
fnam = zentk_askopenfilename(title="Pick Premade ChatCompletions Adapter",filetypes=[("JSON Adapter", "*.json")], initialdir=initialDir)
|
||||||
if fnam:
|
if fnam:
|
||||||
chatcompletionsadapter_var.set(fnam)
|
chatcompletionsadapter_var.set(fnam)
|
||||||
ctk.CTkButton(model_tab, 64, text="Pick Premade", command=pickpremadetemplate).grid(row=25, column=0, padx=322, stick="nw")
|
ctk.CTkButton(model_tab, 64, text="Pick Premade", command=pickpremadetemplate).grid(row=25, column=0, padx=322, pady=2, stick="nw")
|
||||||
|
|
||||||
mmproj_var.trace("w", gui_changed_modelfile)
|
mmproj_var.trace("w", gui_changed_modelfile)
|
||||||
draftmodel_var.trace("w", gui_changed_modelfile)
|
draftmodel_var.trace("w", gui_changed_modelfile)
|
||||||
|
@ -4959,19 +4959,26 @@ def show_gui():
|
||||||
audio_tab = tabcontent["Audio"]
|
audio_tab = tabcontent["Audio"]
|
||||||
makefileentry(audio_tab, "Whisper Model (Speech-To-Text):", "Select Whisper .bin Model File", whisper_model_var, 1, width=280, filetypes=[("*.bin","*.bin")], tooltiptxt="Select a Whisper .bin model file on disk to be loaded for Voice Recognition.")
|
makefileentry(audio_tab, "Whisper Model (Speech-To-Text):", "Select Whisper .bin Model File", whisper_model_var, 1, width=280, filetypes=[("*.bin","*.bin")], tooltiptxt="Select a Whisper .bin model file on disk to be loaded for Voice Recognition.")
|
||||||
whisper_model_var.trace("w", gui_changed_modelfile)
|
whisper_model_var.trace("w", gui_changed_modelfile)
|
||||||
makelabelentry(audio_tab, "OuteTTS Threads:" , tts_threads_var, 3, 50,padx=290,singleline=True,tooltip="How many threads to use during TTS generation.\nIf left blank, uses same value as threads.")
|
makefileentry(audio_tab, "OuteTTS Model (Text-To-Speech Required):", "Select OuteTTS GGUF Model File", tts_model_var, 3, width=280, filetypes=[("*.gguf","*.gguf")], tooltiptxt="Select a OuteTTS GGUF model file on disk to be loaded for Narration.")
|
||||||
makefileentry(audio_tab, "OuteTTS Model (Text-To-Speech):", "Select OuteTTS GGUF Model File", tts_model_var, 5, width=280, filetypes=[("*.gguf","*.gguf")], tooltiptxt="Select a OuteTTS GGUF model file on disk to be loaded for Narration.")
|
|
||||||
tts_model_var.trace("w", gui_changed_modelfile)
|
tts_model_var.trace("w", gui_changed_modelfile)
|
||||||
makefileentry(audio_tab, "WavTokenizer Model (Text-To-Speech):", "Select WavTokenizer GGUF Model File", wavtokenizer_var, 7, width=280, filetypes=[("*.gguf","*.gguf")], tooltiptxt="Select a WavTokenizer GGUF model file on disk to be loaded for Narration.")
|
makelabelentry(audio_tab, "OuteTTS Threads:" , tts_threads_var, 5, 50,padx=290,singleline=True,tooltip="How many threads to use during TTS generation.\nIf left blank, uses same value as threads.")
|
||||||
wavtokenizer_var.trace("w", gui_changed_modelfile)
|
makelabelentry(audio_tab, "OuteTTS Max Tokens:" , ttsmaxlen_var, 7, 50,padx=290,singleline=True,tooltip="Max allowed audiotokens to generate per TTS request.")
|
||||||
makecheckbox(audio_tab, "TTS Use GPU", ttsgpu_var, 9, 0,tooltiptxt="Uses the GPU for TTS.")
|
makecheckbox(audio_tab, "TTS Use GPU", ttsgpu_var, 9, 0,tooltiptxt="Uses the GPU for TTS.")
|
||||||
makelabelentry(audio_tab, "OuteTTS Max Tokens:" , ttsmaxlen_var, 11, 50,padx=290,singleline=True,tooltip="Max allowed audiotokens to generate per TTS request.")
|
|
||||||
ttsgpu_var.trace("w", gui_changed_modelfile)
|
ttsgpu_var.trace("w", gui_changed_modelfile)
|
||||||
|
makefileentry(audio_tab, "WavTokenizer Model (Text-To-Speech Required):", "Select WavTokenizer GGUF Model File", wavtokenizer_var, 11, width=280, filetypes=[("*.gguf","*.gguf")], tooltiptxt="Select a WavTokenizer GGUF model file on disk to be loaded for Narration.")
|
||||||
|
wavtokenizer_var.trace("w", gui_changed_modelfile)
|
||||||
|
|
||||||
admin_tab = tabcontent["Admin"]
|
admin_tab = tabcontent["Admin"]
|
||||||
makecheckbox(admin_tab, "Enable Model Administration", admin_var, 1, 0,tooltiptxt="Enable a admin server, allowing you to remotely relaunch and swap models and configs.")
|
def toggleadmin(a,b,c):
|
||||||
|
if admin_var.get()==1 and admin_dir_var.get()=="":
|
||||||
|
autopath = os.path.realpath(__file__)
|
||||||
|
if getattr(sys, 'frozen', False):
|
||||||
|
autopath = sys.executable
|
||||||
|
autopath = os.path.dirname(autopath)
|
||||||
|
admin_dir_var.set(autopath)
|
||||||
|
makecheckbox(admin_tab, "Enable Model Administration", admin_var, 1, 0, command=toggleadmin,tooltiptxt="Enable a admin server, allowing you to remotely relaunch and swap models and configs.")
|
||||||
makelabelentry(admin_tab, "Admin Password:" , admin_password_var, 3, 150,padx=120,singleline=True,tooltip="Require a password to access admin functions. You are strongly advised to use one for publically accessible instances!")
|
makelabelentry(admin_tab, "Admin Password:" , admin_password_var, 3, 150,padx=120,singleline=True,tooltip="Require a password to access admin functions. You are strongly advised to use one for publically accessible instances!")
|
||||||
makefileentry(admin_tab, "Config Directory:", "Select directory containing .kcpps files to relaunch from", admin_dir_var, 5, width=280, dialog_type=2, tooltiptxt="Specify a directory to look for .kcpps configs in, which can be used to swap models.")
|
makefileentry(admin_tab, "Config Directory (Required):", "Select directory containing .gguf or .kcpps files to relaunch from", admin_dir_var, 5, width=280, dialog_type=2, tooltiptxt="Specify a directory to look for .kcpps configs in, which can be used to swap models.")
|
||||||
makecheckbox(admin_tab, "SingleInstance Mode", singleinstance_var, 10, 0,tooltiptxt="Allows this server to be shut down by another KoboldCpp instance with singleinstance starting on the same port.")
|
makecheckbox(admin_tab, "SingleInstance Mode", singleinstance_var, 10, 0,tooltiptxt="Allows this server to be shut down by another KoboldCpp instance with singleinstance starting on the same port.")
|
||||||
|
|
||||||
def kcpp_export_template():
|
def kcpp_export_template():
|
||||||
|
@ -5458,9 +5465,9 @@ def show_gui():
|
||||||
ctk.CTkButton(tabs , text = "Launch", fg_color="#2f8d3c", hover_color="#2faa3c", command = guilaunch, width=80, height = 35 ).grid(row=1,column=1, stick="se", padx= 25, pady=5)
|
ctk.CTkButton(tabs , text = "Launch", fg_color="#2f8d3c", hover_color="#2faa3c", command = guilaunch, width=80, height = 35 ).grid(row=1,column=1, stick="se", padx= 25, pady=5)
|
||||||
|
|
||||||
ctk.CTkButton(tabs , text = "Update", fg_color="#9900cc", hover_color="#aa11dd", command = display_updates, width=90, height = 35 ).grid(row=1,column=0, stick="sw", padx= 5, pady=5)
|
ctk.CTkButton(tabs , text = "Update", fg_color="#9900cc", hover_color="#aa11dd", command = display_updates, width=90, height = 35 ).grid(row=1,column=0, stick="sw", padx= 5, pady=5)
|
||||||
ctk.CTkButton(tabs , text = "Save", fg_color="#084a66", hover_color="#085a88", command = save_config_gui, width=60, height = 35 ).grid(row=1,column=1, stick="sw", padx= 5, pady=5)
|
ctk.CTkButton(tabs , text = "Save Config", fg_color="#084a66", hover_color="#085a88", command = save_config_gui, width=60, height = 35 ).grid(row=1,column=1, stick="sw", padx= 5, pady=5)
|
||||||
ctk.CTkButton(tabs , text = "Load", fg_color="#084a66", hover_color="#085a88", command = load_config_gui, width=60, height = 35 ).grid(row=1,column=1, stick="sw", padx= 70, pady=5)
|
ctk.CTkButton(tabs , text = "Load Config", fg_color="#084a66", hover_color="#085a88", command = load_config_gui, width=60, height = 35 ).grid(row=1,column=1, stick="sw", padx= 92, pady=5)
|
||||||
ctk.CTkButton(tabs , text = "Help (Find Models)", fg_color="#992222", hover_color="#bb3333", command = display_help, width=100, height = 35 ).grid(row=1,column=1, stick="sw", padx= 135, pady=5)
|
ctk.CTkButton(tabs , text = "Help (Find Models)", fg_color="#992222", hover_color="#bb3333", command = display_help, width=100, height = 35 ).grid(row=1,column=1, stick="sw", padx= 180, pady=5)
|
||||||
|
|
||||||
# start a thread that tries to get actual gpu names and layer counts
|
# start a thread that tries to get actual gpu names and layer counts
|
||||||
gpuinfo_thread = threading.Thread(target=auto_set_backend_gui)
|
gpuinfo_thread = threading.Thread(target=auto_set_backend_gui)
|
||||||
|
@ -5748,6 +5755,8 @@ def convert_invalid_args(args):
|
||||||
dict["noavx2"] = True
|
dict["noavx2"] = True
|
||||||
if "skiplauncher" in dict and dict["skiplauncher"]:
|
if "skiplauncher" in dict and dict["skiplauncher"]:
|
||||||
dict["showgui"] = False
|
dict["showgui"] = False
|
||||||
|
if "useswa" in dict and dict["useswa"]:
|
||||||
|
dict["noshift"] = True
|
||||||
if ("model_param" not in dict or not dict["model_param"]) and ("model" in dict):
|
if ("model_param" not in dict or not dict["model_param"]) and ("model" in dict):
|
||||||
model_value = dict["model"] #may be null, empty/non-empty string, empty/non empty array
|
model_value = dict["model"] #may be null, empty/non-empty string, empty/non empty array
|
||||||
if isinstance(model_value, str) and model_value: # Non-empty string
|
if isinstance(model_value, str) and model_value: # Non-empty string
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue