support running in single process mode without admin flag

This commit is contained in:
Concedo 2025-02-09 13:17:14 +08:00
parent fb87ca5cec
commit 1cb42bf260

View file

@ -47,10 +47,10 @@ logit_bias_max = 512
dry_seq_break_max = 128
# global vars
KcppVersion = "1.83"
KcppVersion = "1.83.1"
showdebug = True
kcpp_instance = None #global running instance
global_memory = None
global_memory = {"tunnel_url": "", "restart_target":"", "input_to_exit":False, "load_complete":False}
using_gui_launcher = False
handle = None
@ -4685,6 +4685,7 @@ def setuptunnel(global_memory, has_sd):
found = re.findall(pattern, line)
for x in found:
tunneloutput = x
if global_memory["load_complete"]:
print(f"Your remote Kobold API can be found at {tunneloutput}/api")
print(f"Your remote OpenAI Compatible API can be found at {tunneloutput}/v1")
if has_sd:
@ -4930,7 +4931,7 @@ def analyze_gguf_model_wrapper(filename=""):
dumpthread.start()
def main(launch_args):
global args, showdebug, kcpp_instance, exitcounter, using_gui_launcher, sslvalid
global args, showdebug, kcpp_instance, exitcounter, using_gui_launcher, sslvalid, global_memory
args = launch_args #note: these are NOT shared with the child processes!
if (args.version) and len(sys.argv) <= 2:
@ -5005,9 +5006,17 @@ def main(launch_args):
if len(args.ssl)==2 and isinstance(args.ssl[0], str) and os.path.exists(args.ssl[0]) and isinstance(args.ssl[1], str) and os.path.exists(args.ssl[1]):
sslvalid = True
# manager command queue
if not (args.admin and args.admindir): #run in single process mode
if args.remotetunnel and not args.prompt and not args.benchmark:
setuptunnel(None, True if args.sdmodel else False)
kcpp_main_process(args,global_memory,using_gui_launcher)
if global_memory["input_to_exit"]:
print("===")
print("Press ENTER key to exit.", flush=True)
input()
else: # manager command queue for admin mode
with multiprocessing.Manager() as mp_manager:
global_memory = mp_manager.dict({"tunnel_url": "", "restart_target":"", "input_to_exit":False})
global_memory = mp_manager.dict({"tunnel_url": "", "restart_target":"", "input_to_exit":False, "load_complete":False})
if args.remotetunnel and not args.prompt and not args.benchmark:
setuptunnel(global_memory, True if args.sdmodel else False)
@ -5032,6 +5041,7 @@ def main(launch_args):
targetfilepath = os.path.join(dirpath, restart_target)
if os.path.exists(targetfilepath):
print("Terminating old process...")
global_memory["load_complete"] = False
kcpp_instance.terminate()
kcpp_instance.join(timeout=10) # Ensure process is stopped
kcpp_instance = None
@ -5546,7 +5556,7 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
print(f"Your remote OpenAI Compatible API can be found at {endpoint_url}/v1")
if args.sdmodel:
print(f"StableUI is available at {endpoint_url}/sdui/")
global_memory["load_complete"] = True
if args.launch:
LaunchWebbrowser(endpoint_url,"--launch was set, but could not launch web browser automatically.")
@ -5641,7 +5651,7 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
file.write(f"\n{datetimestamp},{libname},{args.gpulayers},{benchmodel},{benchmaxctx},{benchlen},{t_pp:.2f},{s_pp:.2f},{t_gen:.2f},{s_gen:.2f},{(t_pp+t_gen):.2f},{result},{benchflagstr}")
except Exception as e:
print(f"Error writing benchmark to file: {e}")
if using_gui_launcher and not save_to_file:
if global_memory and using_gui_launcher and not save_to_file:
global_memory["input_to_exit"] = True
time.sleep(1)