Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -21,6 +21,7 @@ from stablepy import (
|
|
| 21 |
SD15_TASKS,
|
| 22 |
SDXL_TASKS,
|
| 23 |
)
|
|
|
|
| 24 |
# import urllib.parse
|
| 25 |
|
| 26 |
# - **Download SD 1.5 Models**
|
|
@@ -88,6 +89,11 @@ load_diffusers_format_model = [
|
|
| 88 |
'GraydientPlatformAPI/realcartoon-real17',
|
| 89 |
]
|
| 90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
CIVITAI_API_KEY = os.environ.get("CIVITAI_API_KEY")
|
| 92 |
HF_TOKEN = os.environ.get("HF_READ_TOKEN")
|
| 93 |
|
|
@@ -302,6 +308,7 @@ model_list = get_model_list(directory_models)
|
|
| 302 |
model_list = load_diffusers_format_model + model_list
|
| 303 |
lora_model_list = get_model_list(directory_loras)
|
| 304 |
lora_model_list.insert(0, "None")
|
|
|
|
| 305 |
vae_model_list = get_model_list(directory_vaes)
|
| 306 |
vae_model_list.insert(0, "None")
|
| 307 |
|
|
@@ -404,6 +411,7 @@ def get_my_lora(link_url):
|
|
| 404 |
download_things(directory_loras, url, HF_TOKEN, CIVITAI_API_KEY)
|
| 405 |
new_lora_model_list = get_model_list(directory_loras)
|
| 406 |
new_lora_model_list.insert(0, "None")
|
|
|
|
| 407 |
|
| 408 |
return gr.update(
|
| 409 |
choices=new_lora_model_list
|
|
@@ -467,7 +475,7 @@ class GuiSD:
|
|
| 467 |
if vae_model:
|
| 468 |
vae_type = "SDXL" if "sdxl" in vae_model.lower() else "SD 1.5"
|
| 469 |
if model_type != vae_type:
|
| 470 |
-
gr.
|
| 471 |
|
| 472 |
self.model.device = torch.device("cpu")
|
| 473 |
dtype_model = torch.bfloat16 if model_type == "FLUX" else torch.float16
|
|
@@ -482,7 +490,7 @@ class GuiSD:
|
|
| 482 |
|
| 483 |
yield f"Model loaded: {model_name}"
|
| 484 |
|
| 485 |
-
@spaces.GPU(duration=59)
|
| 486 |
@torch.inference_mode()
|
| 487 |
def generate_pipeline(
|
| 488 |
self,
|
|
@@ -593,7 +601,7 @@ class GuiSD:
|
|
| 593 |
vae_model = vae_model if vae_model != "None" else None
|
| 594 |
loras_list = [lora1, lora2, lora3, lora4, lora5]
|
| 595 |
vae_msg = f"VAE: {vae_model}" if vae_model else ""
|
| 596 |
-
msg_lora =
|
| 597 |
|
| 598 |
print("Config model:", model_name, vae_model, loras_list)
|
| 599 |
|
|
@@ -756,11 +764,18 @@ class GuiSD:
|
|
| 756 |
for img, seed, image_path, metadata in self.model(**pipe_params):
|
| 757 |
info_state += ">"
|
| 758 |
if image_path:
|
| 759 |
-
info_state = f"
|
| 760 |
if vae_msg:
|
| 761 |
info_state = info_state + "<br>" + vae_msg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 762 |
if msg_lora:
|
| 763 |
-
info_state
|
| 764 |
|
| 765 |
info_state = info_state + "<br>" + "GENERATION DATA:<br>" + "<br>-------<br>".join(metadata).replace("\n", "<br>")
|
| 766 |
|
|
@@ -785,32 +800,90 @@ def update_task_options(model_name, task_name):
|
|
| 785 |
return gr.update(value=task_name, choices=new_choices)
|
| 786 |
|
| 787 |
|
| 788 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 789 |
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
|
| 793 |
-
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 798 |
|
| 799 |
-
|
| 800 |
-
# print(status_lora)
|
| 801 |
-
# for status, lora in zip(status_lora, lora_list):
|
| 802 |
-
# if status:
|
| 803 |
-
# gr.Info(f"LoRA loaded: {lora}")
|
| 804 |
-
# elif status is not None:
|
| 805 |
-
# gr.Warning(f"Failed to load LoRA: {lora}")
|
| 806 |
|
| 807 |
-
|
| 808 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 809 |
|
| 810 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 811 |
|
| 812 |
|
| 813 |
-
|
|
|
|
| 814 |
sd_gen = GuiSD()
|
| 815 |
|
| 816 |
with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
@@ -854,6 +927,12 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 854 |
|
| 855 |
actual_task_info = gr.HTML()
|
| 856 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 857 |
with gr.Column(scale=1):
|
| 858 |
steps_gui = gr.Slider(minimum=1, maximum=100, step=1, value=30, label="Steps")
|
| 859 |
cfg_gui = gr.Slider(minimum=0, maximum=30, step=0.5, value=7.5, label="CFG")
|
|
@@ -1172,6 +1251,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1172 |
1.0, # cn end
|
| 1173 |
"Classic",
|
| 1174 |
"Nearest",
|
|
|
|
|
|
|
| 1175 |
],
|
| 1176 |
[
|
| 1177 |
"a digital illustration of a movie poster titled 'Finding Emo', finding nemo parody poster, featuring a depressed cartoon clownfish with black emo hair, eyeliner, and piercings, bored expression, swimming in a dark underwater scene, in the background, movie title in a dripping, grungy font, moody blue and purple color palette",
|
|
@@ -1194,6 +1275,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1194 |
1.0, # cn end
|
| 1195 |
"Classic",
|
| 1196 |
None,
|
|
|
|
|
|
|
| 1197 |
],
|
| 1198 |
[
|
| 1199 |
"((masterpiece)), best quality, blonde disco girl, detailed face, realistic face, realistic hair, dynamic pose, pink pvc, intergalactic disco background, pastel lights, dynamic contrast, airbrush, fine detail, 70s vibe, midriff",
|
|
@@ -1216,6 +1299,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1216 |
1.0, # cn end
|
| 1217 |
"Classic",
|
| 1218 |
None,
|
|
|
|
|
|
|
| 1219 |
],
|
| 1220 |
[
|
| 1221 |
"cinematic scenery old city ruins",
|
|
@@ -1238,6 +1323,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1238 |
0.75, # cn end
|
| 1239 |
"Classic",
|
| 1240 |
None,
|
|
|
|
|
|
|
| 1241 |
],
|
| 1242 |
[
|
| 1243 |
"black and white, line art, coloring drawing, clean line art, black strokes, no background, white, black, free lines, black scribbles, on paper, A blend of comic book art and lineart full of black and white color, masterpiece, high-resolution, trending on Pixiv fan box, palette knife, brush strokes, two-dimensional, planar vector, T-shirt design, stickers, and T-shirt design, vector art, fantasy art, Adobe Illustrator, hand-painted, digital painting, low polygon, soft lighting, aerial view, isometric style, retro aesthetics, 8K resolution, black sketch lines, monochrome, invert color",
|
|
@@ -1260,6 +1347,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1260 |
1.0, # cn end
|
| 1261 |
"Compel",
|
| 1262 |
None,
|
|
|
|
|
|
|
| 1263 |
],
|
| 1264 |
[
|
| 1265 |
"1girl,face,curly hair,red hair,white background,",
|
|
@@ -1282,6 +1371,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1282 |
0.9, # cn end
|
| 1283 |
"Compel",
|
| 1284 |
"Latent (antialiased)",
|
|
|
|
|
|
|
| 1285 |
],
|
| 1286 |
],
|
| 1287 |
fn=sd_gen.generate_pipeline,
|
|
@@ -1306,6 +1397,8 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1306 |
control_net_stop_threshold_gui,
|
| 1307 |
prompt_syntax_gui,
|
| 1308 |
upscaler_model_path_gui,
|
|
|
|
|
|
|
| 1309 |
],
|
| 1310 |
outputs=[result_images, actual_task_info],
|
| 1311 |
cache_examples=False,
|
|
@@ -1385,7 +1478,7 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1385 |
queue=True,
|
| 1386 |
show_progress="minimal",
|
| 1387 |
).success(
|
| 1388 |
-
fn=
|
| 1389 |
inputs=[
|
| 1390 |
prompt_gui,
|
| 1391 |
neg_prompt_gui,
|
|
@@ -1489,6 +1582,9 @@ with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
| 1489 |
mode_ip2,
|
| 1490 |
scale_ip2,
|
| 1491 |
pag_scale_gui,
|
|
|
|
|
|
|
|
|
|
| 1492 |
],
|
| 1493 |
outputs=[result_images, actual_task_info],
|
| 1494 |
queue=True,
|
|
@@ -1501,4 +1597,4 @@ app.launch(
|
|
| 1501 |
show_error=True,
|
| 1502 |
debug=True,
|
| 1503 |
allowed_paths=["./images/"],
|
| 1504 |
-
)
|
|
|
|
| 21 |
SD15_TASKS,
|
| 22 |
SDXL_TASKS,
|
| 23 |
)
|
| 24 |
+
import time
|
| 25 |
# import urllib.parse
|
| 26 |
|
| 27 |
# - **Download SD 1.5 Models**
|
|
|
|
| 89 |
'GraydientPlatformAPI/realcartoon-real17',
|
| 90 |
]
|
| 91 |
|
| 92 |
+
DIFFUSERS_FORMAT_LORAS = [
|
| 93 |
+
"nerijs/animation2k-flux",
|
| 94 |
+
"XLabs-AI/flux-RealismLora",
|
| 95 |
+
]
|
| 96 |
+
|
| 97 |
CIVITAI_API_KEY = os.environ.get("CIVITAI_API_KEY")
|
| 98 |
HF_TOKEN = os.environ.get("HF_READ_TOKEN")
|
| 99 |
|
|
|
|
| 308 |
model_list = load_diffusers_format_model + model_list
|
| 309 |
lora_model_list = get_model_list(directory_loras)
|
| 310 |
lora_model_list.insert(0, "None")
|
| 311 |
+
lora_model_list = lora_model_list + DIFFUSERS_FORMAT_LORAS
|
| 312 |
vae_model_list = get_model_list(directory_vaes)
|
| 313 |
vae_model_list.insert(0, "None")
|
| 314 |
|
|
|
|
| 411 |
download_things(directory_loras, url, HF_TOKEN, CIVITAI_API_KEY)
|
| 412 |
new_lora_model_list = get_model_list(directory_loras)
|
| 413 |
new_lora_model_list.insert(0, "None")
|
| 414 |
+
new_lora_model_list = new_lora_model_list + DIFFUSERS_FORMAT_LORAS
|
| 415 |
|
| 416 |
return gr.update(
|
| 417 |
choices=new_lora_model_list
|
|
|
|
| 475 |
if vae_model:
|
| 476 |
vae_type = "SDXL" if "sdxl" in vae_model.lower() else "SD 1.5"
|
| 477 |
if model_type != vae_type:
|
| 478 |
+
gr.Warning(msg_inc_vae)
|
| 479 |
|
| 480 |
self.model.device = torch.device("cpu")
|
| 481 |
dtype_model = torch.bfloat16 if model_type == "FLUX" else torch.float16
|
|
|
|
| 490 |
|
| 491 |
yield f"Model loaded: {model_name}"
|
| 492 |
|
| 493 |
+
# @spaces.GPU(duration=59)
|
| 494 |
@torch.inference_mode()
|
| 495 |
def generate_pipeline(
|
| 496 |
self,
|
|
|
|
| 601 |
vae_model = vae_model if vae_model != "None" else None
|
| 602 |
loras_list = [lora1, lora2, lora3, lora4, lora5]
|
| 603 |
vae_msg = f"VAE: {vae_model}" if vae_model else ""
|
| 604 |
+
msg_lora = ""
|
| 605 |
|
| 606 |
print("Config model:", model_name, vae_model, loras_list)
|
| 607 |
|
|
|
|
| 764 |
for img, seed, image_path, metadata in self.model(**pipe_params):
|
| 765 |
info_state += ">"
|
| 766 |
if image_path:
|
| 767 |
+
info_state = f"COMPLETE. Seeds: {str(seed)}"
|
| 768 |
if vae_msg:
|
| 769 |
info_state = info_state + "<br>" + vae_msg
|
| 770 |
+
|
| 771 |
+
for status, lora in zip(self.model.lora_status, self.model.lora_memory):
|
| 772 |
+
if status:
|
| 773 |
+
msg_lora += f"<br>Loaded: {lora}"
|
| 774 |
+
elif status is not None:
|
| 775 |
+
msg_lora += f"<br>Error with: {lora}"
|
| 776 |
+
|
| 777 |
if msg_lora:
|
| 778 |
+
info_state += msg_lora
|
| 779 |
|
| 780 |
info_state = info_state + "<br>" + "GENERATION DATA:<br>" + "<br>-------<br>".join(metadata).replace("\n", "<br>")
|
| 781 |
|
|
|
|
| 800 |
return gr.update(value=task_name, choices=new_choices)
|
| 801 |
|
| 802 |
|
| 803 |
+
def dynamic_gpu_duration(func, duration, *args):
|
| 804 |
+
|
| 805 |
+
@spaces.GPU(duration=duration)
|
| 806 |
+
def wrapped_func():
|
| 807 |
+
yield from func(*args)
|
| 808 |
+
|
| 809 |
+
return wrapped_func()
|
| 810 |
+
|
| 811 |
+
|
| 812 |
+
@spaces.GPU
|
| 813 |
+
def dummy_gpu():
|
| 814 |
+
return None
|
| 815 |
+
|
| 816 |
+
|
| 817 |
+
def sd_gen_generate_pipeline(*args):
|
| 818 |
|
| 819 |
+
gpu_duration_arg = int(args[-1]) if args[-1] else 59
|
| 820 |
+
verbose_arg = int(args[-2])
|
| 821 |
+
load_lora_cpu = args[-3]
|
| 822 |
+
generation_args = args[:-3]
|
| 823 |
+
lora_list = [
|
| 824 |
+
None if item == "None" else item
|
| 825 |
+
for item in [args[7], args[9], args[11], args[13], args[15]]
|
| 826 |
+
]
|
| 827 |
+
lora_status = [None] * 5
|
| 828 |
+
|
| 829 |
+
msg_load_lora = "Updating LoRAs in GPU..."
|
| 830 |
+
if load_lora_cpu:
|
| 831 |
+
msg_load_lora = "Updating LoRAs in CPU (Slow but saves GPU usage)..."
|
| 832 |
+
|
| 833 |
+
if lora_list != sd_gen.model.lora_memory and lora_list != [None] * 5:
|
| 834 |
+
yield None, msg_load_lora
|
| 835 |
+
|
| 836 |
+
# Load lora in CPU
|
| 837 |
+
if load_lora_cpu:
|
| 838 |
+
lora_status = sd_gen.model.lora_merge(
|
| 839 |
+
lora_A=lora_list[0], lora_scale_A=args[8],
|
| 840 |
+
lora_B=lora_list[1], lora_scale_B=args[10],
|
| 841 |
+
lora_C=lora_list[2], lora_scale_C=args[12],
|
| 842 |
+
lora_D=lora_list[3], lora_scale_D=args[14],
|
| 843 |
+
lora_E=lora_list[4], lora_scale_E=args[16],
|
| 844 |
+
)
|
| 845 |
+
print(lora_status)
|
| 846 |
+
|
| 847 |
+
if verbose_arg:
|
| 848 |
+
for status, lora in zip(lora_status, lora_list):
|
| 849 |
+
if status:
|
| 850 |
+
gr.Info(f"LoRA loaded in CPU: {lora}")
|
| 851 |
+
elif status is not None:
|
| 852 |
+
gr.Warning(f"Failed to load LoRA: {lora}")
|
| 853 |
+
|
| 854 |
+
if lora_status == [None] * 5 and sd_gen.model.lora_memory != [None] * 5 and load_lora_cpu:
|
| 855 |
+
lora_cache_msg = ", ".join(
|
| 856 |
+
str(x) for x in sd_gen.model.lora_memory if x is not None
|
| 857 |
+
)
|
| 858 |
+
gr.Info(f"LoRAs in cache: {lora_cache_msg}")
|
| 859 |
+
|
| 860 |
+
msg_request = f"Requesting {gpu_duration_arg}s. of GPU time"
|
| 861 |
+
gr.Info(msg_request)
|
| 862 |
+
print(msg_request)
|
| 863 |
+
|
| 864 |
+
# yield from sd_gen.generate_pipeline(*generation_args)
|
| 865 |
|
| 866 |
+
start_time = time.time()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 867 |
|
| 868 |
+
yield from dynamic_gpu_duration(
|
| 869 |
+
sd_gen.generate_pipeline,
|
| 870 |
+
gpu_duration_arg,
|
| 871 |
+
*generation_args,
|
| 872 |
+
)
|
| 873 |
+
|
| 874 |
+
end_time = time.time()
|
| 875 |
|
| 876 |
+
if verbose_arg:
|
| 877 |
+
execution_time = end_time - start_time
|
| 878 |
+
msg_task_complete = (
|
| 879 |
+
f"GPU task complete in: {round(execution_time, 0) + 1} seconds"
|
| 880 |
+
)
|
| 881 |
+
gr.Info(msg_task_complete)
|
| 882 |
+
print(msg_task_complete)
|
| 883 |
|
| 884 |
|
| 885 |
+
dynamic_gpu_duration.zerogpu = True
|
| 886 |
+
sd_gen_generate_pipeline.zerogpu = True
|
| 887 |
sd_gen = GuiSD()
|
| 888 |
|
| 889 |
with gr.Blocks(theme="NoCrypt/miku", css=CSS) as app:
|
|
|
|
| 927 |
|
| 928 |
actual_task_info = gr.HTML()
|
| 929 |
|
| 930 |
+
with gr.Row(equal_height=False, variant="default"):
|
| 931 |
+
gpu_duration_gui = gr.Number(minimum=5, maximum=240, value=59, show_label=False, container=False, info="GPU time duration (seconds)")
|
| 932 |
+
with gr.Column():
|
| 933 |
+
verbose_info_gui = gr.Checkbox(value=False, container=False, label="Status info")
|
| 934 |
+
load_lora_cpu_gui = gr.Checkbox(value=False, container=False, label="Load LoRAs on CPU (Save GPU time)")
|
| 935 |
+
|
| 936 |
with gr.Column(scale=1):
|
| 937 |
steps_gui = gr.Slider(minimum=1, maximum=100, step=1, value=30, label="Steps")
|
| 938 |
cfg_gui = gr.Slider(minimum=0, maximum=30, step=0.5, value=7.5, label="CFG")
|
|
|
|
| 1251 |
1.0, # cn end
|
| 1252 |
"Classic",
|
| 1253 |
"Nearest",
|
| 1254 |
+
45,
|
| 1255 |
+
False,
|
| 1256 |
],
|
| 1257 |
[
|
| 1258 |
"a digital illustration of a movie poster titled 'Finding Emo', finding nemo parody poster, featuring a depressed cartoon clownfish with black emo hair, eyeliner, and piercings, bored expression, swimming in a dark underwater scene, in the background, movie title in a dripping, grungy font, moody blue and purple color palette",
|
|
|
|
| 1275 |
1.0, # cn end
|
| 1276 |
"Classic",
|
| 1277 |
None,
|
| 1278 |
+
70,
|
| 1279 |
+
True,
|
| 1280 |
],
|
| 1281 |
[
|
| 1282 |
"((masterpiece)), best quality, blonde disco girl, detailed face, realistic face, realistic hair, dynamic pose, pink pvc, intergalactic disco background, pastel lights, dynamic contrast, airbrush, fine detail, 70s vibe, midriff",
|
|
|
|
| 1299 |
1.0, # cn end
|
| 1300 |
"Classic",
|
| 1301 |
None,
|
| 1302 |
+
44,
|
| 1303 |
+
False,
|
| 1304 |
],
|
| 1305 |
[
|
| 1306 |
"cinematic scenery old city ruins",
|
|
|
|
| 1323 |
0.75, # cn end
|
| 1324 |
"Classic",
|
| 1325 |
None,
|
| 1326 |
+
35,
|
| 1327 |
+
False,
|
| 1328 |
],
|
| 1329 |
[
|
| 1330 |
"black and white, line art, coloring drawing, clean line art, black strokes, no background, white, black, free lines, black scribbles, on paper, A blend of comic book art and lineart full of black and white color, masterpiece, high-resolution, trending on Pixiv fan box, palette knife, brush strokes, two-dimensional, planar vector, T-shirt design, stickers, and T-shirt design, vector art, fantasy art, Adobe Illustrator, hand-painted, digital painting, low polygon, soft lighting, aerial view, isometric style, retro aesthetics, 8K resolution, black sketch lines, monochrome, invert color",
|
|
|
|
| 1347 |
1.0, # cn end
|
| 1348 |
"Compel",
|
| 1349 |
None,
|
| 1350 |
+
35,
|
| 1351 |
+
False,
|
| 1352 |
],
|
| 1353 |
[
|
| 1354 |
"1girl,face,curly hair,red hair,white background,",
|
|
|
|
| 1371 |
0.9, # cn end
|
| 1372 |
"Compel",
|
| 1373 |
"Latent (antialiased)",
|
| 1374 |
+
46,
|
| 1375 |
+
False,
|
| 1376 |
],
|
| 1377 |
],
|
| 1378 |
fn=sd_gen.generate_pipeline,
|
|
|
|
| 1397 |
control_net_stop_threshold_gui,
|
| 1398 |
prompt_syntax_gui,
|
| 1399 |
upscaler_model_path_gui,
|
| 1400 |
+
gpu_duration_gui,
|
| 1401 |
+
load_lora_cpu_gui,
|
| 1402 |
],
|
| 1403 |
outputs=[result_images, actual_task_info],
|
| 1404 |
cache_examples=False,
|
|
|
|
| 1478 |
queue=True,
|
| 1479 |
show_progress="minimal",
|
| 1480 |
).success(
|
| 1481 |
+
fn=sd_gen_generate_pipeline, # fn=sd_gen.generate_pipeline,
|
| 1482 |
inputs=[
|
| 1483 |
prompt_gui,
|
| 1484 |
neg_prompt_gui,
|
|
|
|
| 1582 |
mode_ip2,
|
| 1583 |
scale_ip2,
|
| 1584 |
pag_scale_gui,
|
| 1585 |
+
load_lora_cpu_gui,
|
| 1586 |
+
verbose_info_gui,
|
| 1587 |
+
gpu_duration_gui,
|
| 1588 |
],
|
| 1589 |
outputs=[result_images, actual_task_info],
|
| 1590 |
queue=True,
|
|
|
|
| 1597 |
show_error=True,
|
| 1598 |
debug=True,
|
| 1599 |
allowed_paths=["./images/"],
|
| 1600 |
+
)
|