Add "config source" radio select
add: Add backward compatibility of "run_modelmerger" func for while.master
parent
cbb713c0b5
commit
5a5b84eca1
|
|
@ -37,7 +37,8 @@ def on_ui_tabs():
|
|||
A8, B8, C8, M8, S8, F8, O8, CF8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10, \
|
||||
_checkpoint_listener, chk_skip_merge_if_exists = ui_merge.on_ui_tabs()
|
||||
_checkpoint_listener, chk_skip_merge_if_exists, radio_config_source \
|
||||
= ui_merge.on_ui_tabs()
|
||||
|
||||
# UI:Recipe
|
||||
txt_recipe, txt_parse_result, btn_send_recipe_to_multi_merge, \
|
||||
|
|
@ -118,7 +119,7 @@ def on_ui_tabs():
|
|||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10,
|
||||
chk_skip_merge_if_exists
|
||||
chk_skip_merge_if_exists, radio_config_source
|
||||
):
|
||||
merge_ope = MergeOperation()
|
||||
merge_ope.add_merge(1, A1, B1, C1, M1, S1, F1, O1, CF1)
|
||||
|
|
@ -139,7 +140,7 @@ def on_ui_tabs():
|
|||
print(f"Start Merge processes. Total process num: {_process_total} .")
|
||||
|
||||
# run merge
|
||||
_ret_all = merge_ope.run_merge(skip_merge_if_exists=chk_skip_merge_if_exists)
|
||||
_ret_all = merge_ope.run_merge(skip_merge_if_exists=chk_skip_merge_if_exists, config_source=radio_config_source)
|
||||
|
||||
print(f"All Multi-Merge process finished. {len(_ret_all)} files.")
|
||||
for _ret in _ret_all:
|
||||
|
|
@ -165,7 +166,7 @@ def on_ui_tabs():
|
|||
A8, B8, C8, M8, S8, F8, O8, CF8,
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9,
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10,
|
||||
chk_skip_merge_if_exists
|
||||
chk_skip_merge_if_exists, radio_config_source
|
||||
],
|
||||
outputs=[submit_result]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class MergeOperation:
|
|||
def get_process_num(self):
|
||||
return len(self.recipes)
|
||||
|
||||
def run_merge(self, skip_merge_if_exists=False):
|
||||
def run_merge(self, skip_merge_if_exists=False, config_source=0):
|
||||
_ret_all = []
|
||||
_vars = {} # {"__A1__": "sd-v1-5-pruned.ckpt"}
|
||||
for _index, _recipe in self.recipes.items():
|
||||
|
|
@ -29,7 +29,7 @@ class MergeOperation:
|
|||
# apply current variables
|
||||
_recipe.apply_variables(_vars)
|
||||
# run merge
|
||||
_ret = _recipe.run_merge(_index, skip_merge_if_exists)
|
||||
_ret = _recipe.run_merge(_index, skip_merge_if_exists, config_source)
|
||||
_ret_all.append(_ret)
|
||||
# update vars
|
||||
_vars.update(_recipe.get_vars())
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class MergeRecipe():
|
|||
self.B = _apply(self.row_B, _vars)
|
||||
self.C = _apply(self.row_C, _vars)
|
||||
|
||||
def run_merge(self, index, skip_merge_if_exists):
|
||||
def run_merge(self, index, skip_merge_if_exists, config_source):
|
||||
sd_models.list_models()
|
||||
if skip_merge_if_exists:
|
||||
_filename = self.O + "." + self.CF if self.O != "" else self._estimate_ckpt_name()
|
||||
|
|
@ -89,55 +89,48 @@ class MergeRecipe():
|
|||
print(f" CF: {self.CF}")
|
||||
|
||||
try:
|
||||
results = extras.run_modelmerger(
|
||||
self.A,
|
||||
self.B,
|
||||
self.C,
|
||||
self.S,
|
||||
self.M,
|
||||
self.F,
|
||||
self.O,
|
||||
self.CF
|
||||
)
|
||||
except TypeError as te:
|
||||
results = extras.run_modelmerger(self.A, self.B, self.C, self.S, self.M, self.F, self.O, self.CF, config_source)
|
||||
except TypeError:
|
||||
# backward compatibility for change of run_modelmerger
|
||||
# 2022/11/27
|
||||
# https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/dac9b6f15de5e675053d9490a20e0457dcd1a23e/modules/extras.py#L253
|
||||
print("Try to use old 'run_modelmerger' params. 'Checkpoint format is forced to 'ckpt'")
|
||||
# 2023/01/11
|
||||
# https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/954091697fce7a1b7997d5f3d73551f793f6bebc
|
||||
print("Try to use old 'run_modelmerger' params. 'config_source' is ignored")
|
||||
try:
|
||||
results = extras.run_modelmerger(
|
||||
self.A,
|
||||
self.B,
|
||||
self.C,
|
||||
self.S,
|
||||
self.M,
|
||||
self.F,
|
||||
self.O
|
||||
)
|
||||
results = extras.run_modelmerger(self.A, self.B, self.C, self.S, self.M, self.F, self.O, self.CF)
|
||||
except TypeError as te:
|
||||
# backward compatibility for change of run_modelmerger
|
||||
# 2022/11/27
|
||||
# https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/dac9b6f15de5e675053d9490a20e0457dcd1a23e/modules/extras.py#L253
|
||||
print("Try to use old 'run_modelmerger' params. 'Checkpoint format is forced to 'ckpt'")
|
||||
try:
|
||||
results = extras.run_modelmerger(self.A, self.B, self.C, self.S, self.M, self.F, self.O)
|
||||
except Exception as e:
|
||||
print(type(e))
|
||||
print(e)
|
||||
return ["Error", "Error"]
|
||||
except Exception as e:
|
||||
print(type(e))
|
||||
print(e)
|
||||
return ["Error", "Error"]
|
||||
except Exception as e:
|
||||
print("Error: at recipe.run_merge: ", file=sys.stderr)
|
||||
print(type(e), file=sys.stderr)
|
||||
print(e, file=sys.stderr)
|
||||
sd_models.list_models() # to remove the potentially missing models from the list
|
||||
print("Error: at recipe.run_merge: ", file=sys.stderr)
|
||||
print(type(e), file=sys.stderr)
|
||||
print(e, file=sys.stderr)
|
||||
sd_models.list_models() # to remove the potentially missing models from the list
|
||||
|
||||
# try to figure out whats going on
|
||||
def _dprint_model_exists(header, model):
|
||||
if model != "" and sd_models.get_closet_checkpoint_match(model) is not None:
|
||||
if os.path.exists(sd_models.get_closet_checkpoint_match(model).filename):
|
||||
print(" {}: is exists:True [{}]".format(header, model), file=sys.stderr)
|
||||
# try to figure out whats going on
|
||||
def _dprint_model_exists(header, model):
|
||||
if model != "" and sd_models.get_closet_checkpoint_match(model) is not None:
|
||||
if os.path.exists(sd_models.get_closet_checkpoint_match(model).filename):
|
||||
print(" {}: is exists:True [{}]".format(header, model), file=sys.stderr)
|
||||
else:
|
||||
print(" {}: is exists:False [{}]".format(header, model), file=sys.stderr)
|
||||
else:
|
||||
print(" {}: is exists:False [{}]".format(header, model), file=sys.stderr)
|
||||
else:
|
||||
print(" {}: not found: [{}]".format(header, model), file=sys.stderr)
|
||||
_dprint_model_exists("A", self.A)
|
||||
_dprint_model_exists("B", self.B)
|
||||
_dprint_model_exists("C", self.C)
|
||||
print(" {}: not found: [{}]".format(header, model), file=sys.stderr)
|
||||
_dprint_model_exists("A", self.A)
|
||||
_dprint_model_exists("B", self.B)
|
||||
_dprint_model_exists("C", self.C)
|
||||
|
||||
return ["Error: at recipe.run_merge. "] *2
|
||||
return ["Error: at recipe.run_merge. "] *2
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
# update vars
|
||||
self._update_o_filename(index, results[0])
|
||||
|
|
|
|||
|
|
@ -25,10 +25,12 @@ def on_ui_tabs():
|
|||
btn_reload_checkpoints = gr.Button("Reload Checkpoints")
|
||||
btn_clear_merge_settings = gr.Button("Clear inputs")
|
||||
with gr.Row():
|
||||
with gr.Column(scale=6):
|
||||
with gr.Column(scale=1):
|
||||
submit_result = gr.HTML(elem_id="modelmerger_result", show_label=False)
|
||||
with gr.Column(scale=1):
|
||||
chk_skip_merge_if_exists = gr.Checkbox(label="Skip merge if same-name ckpt already exists", value=False, interactive=True)
|
||||
with gr.Row():
|
||||
radio_config_source = gr.Radio(choices=["A, B or C", "B", "C", "Don't"], value="A, B or C", label="Copy config from", type="index")
|
||||
chk_skip_merge_if_exists = gr.Checkbox(label="Skip merge if same-name ckpt already exists", value=False, interactive=True)
|
||||
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
|
|
@ -209,4 +211,4 @@ def on_ui_tabs():
|
|||
A8, B8, C8, M8, S8, F8, O8, CF8, \
|
||||
A9, B9, C9, M9, S9, F9, O9, CF9, \
|
||||
A10,B10,C10,M10,S10,F10,O10,CF10,\
|
||||
_checkpoint_listener, chk_skip_merge_if_exists
|
||||
_checkpoint_listener, chk_skip_merge_if_exists, radio_config_source
|
||||
|
|
|
|||
Loading…
Reference in New Issue