Spaces:
Configuration error
Configuration error
File size: 4,566 Bytes
aebc1d4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
import subprocess
import os
import sys
import torch
import gc
import ldm_patched.modules.model_management as model_management
from . import comfyclient_pipeline, utils
comfyd_process = None
comfyd_active = False
comfyd_args = [[]]
def is_running():
global comfyd_process
if 'comfyd_process' not in globals():
return False
if comfyd_process is None:
return False
process_code = comfyd_process.poll()
if process_code is None:
return True
print("[Comfyd] comfyd process status code: {process_code}")
return False
def start(args_patch=[[]]):
global comfyd_process, comfyd_args
if not is_running():
backend_script = os.path.join(os.getcwd(),'comfy/main.py')
args_comfyd = [["--preview-method", "auto"], ["--port", "8187"], ["--disable-auto-launch"]]
if len(args_patch) > 0 and len(args_patch[0]) > 0:
comfyd_args += args_patch
if not utils.echo_off:
print(f'[Comfyd] args_comfyd was patched: {args_comfyd}, patch:{comfyd_args}')
arguments = [arg for sublist in args_comfyd for arg in sublist]
process_env = os.environ.copy()
process_env["PYTHONPATH"] = os.pathsep.join(sys.path)
model_management.unload_all_models()
gc.collect()
torch.cuda.empty_cache()
if not utils.echo_off:
print(f'[Comfyd] Ready to start with arguments: {arguments}, env: {process_env}')
if 'comfyd_process' not in globals():
globals()['comfyd_process'] = None
comfyd_process = subprocess.Popen([sys.executable, backend_script] + arguments, env=process_env)
comfyclient_pipeline.ws = None
else:
print("[Comfyd] Comfyd is active!")
return
def active(flag=False):
global comfyd_active
comfyd_active = flag
if flag and not is_running():
start()
if not flag and is_running():
stop()
return
def finished():
global comfyd_process
if 'comfyd_process' not in globals():
return
if comfyd_process is None:
return
if comfyd_active:
#free()
gc.collect()
print("[Comfyd] Task finished !")
return
comfyclient_pipeline.ws = None
free()
gc.collect()
print("[Comfyd] Comfyd stopped!")
def stop():
global comfyd_process
if 'comfyd_process' not in globals():
return
if comfyd_process is None:
return
if comfyd_active:
free(all=True)
gc.collect()
print("[Comfyd] Releasing Comfyd!")
return
if is_running():
comfyd_process.terminate()
comfyd_process.wait()
del comfyd_process
comfyclient_pipeline.ws = None
free()
gc.collect()
print("[Comfyd] Comfyd has stopped!")
def free(all=False):
global comfyd_process
if 'comfyd_process' not in globals():
return
if comfyd_process is None:
return
comfyclient_pipeline.free(all)
return
def interrupt():
global comfyd_process
if 'comfyd_process' not in globals():
return
if comfyd_process is None:
return
comfyclient_pipeline.interrupt()
return
def args_mapping(args_fooocus):
args_comfy = []
if "--gpu-device-id" in args_fooocus:
args_comfy += [["--cuda-device", args_fooocus[args_fooocus.index("--gpu-device-id")+1]]]
if "--async-cuda-allocation" in args_fooocus:
args_comfy += [["--cuda-malloc"]]
if "--disable-async-cuda-allocation" in args_fooocus:
args_comfy += [["--disable-cuda-malloc"]]
if "--vae-in-cpu" in args_fooocus:
args_comfy += [["--vae-in-cpu"]]
if "--directml" in args_fooocus:
args_comfy += [["--directml"]]
if "--disable-xformers" in args_fooocus:
args_comfy += [["--disable-xformers"]]
if "--always-cpu" in args_fooocus:
args_comfy += [["--cpu"]]
if "--always-low-vram" in args_fooocus:
args_comfy += [["--lowvram"]]
if "--always-gpu" in args_fooocus:
args_comfy += [["--gpu-only"]]
print()
if "--always-offload-from-vram" in args_fooocus:
args_comfy += [["--disable-smart-memory"]]
print("Smart memory disabled")
else:
print("Smart memory enabled")
if not utils.echo_off:
print(f'[Comfyd] args_fooocus: {args_fooocus}\nargs_comfy: {args_comfy}')
return args_comfy
def get_entry_point_id():
global comfyd_process
if 'comfyd_process' in globals() and comfyd_process:
return gen_entry_point_id(comfyd_process.pid)
else:
return None
|