wkpark / sd-webui-model-mixer

Checkpoint model mixer/merger extension
GNU Affero General Public License v3.0
102 stars 4 forks source link

[New UI] - The Controlnet developers have released a custom fork of A1111 called "Forge" that is recoded for performance increases, "Unet Patching", and new functionality - Likely will need to review/update Model Mixer to get it working properly #117

Closed CCpt5 closed 7 months ago

CCpt5 commented 8 months ago

Hello!

In case you haven't seen yet, the developers of Controlnet (also "Fooocus") have released a custom fork of A1111 they're calling "Forge".

Based on the changes that were made (almost all back end/performance based) I don't think Model Mixer works w/ it properly out of the box. I did run a quick test and received popup errors when loading models and it didn't seem to function on attempts to generate. One error example:

Details

``` Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`. *** Error executing callback app_started_callback for D:\stable-diffusion-webui-forge\extensions\sd-webui-supermerger\scripts\GenParamGetter.py Traceback (most recent call last): File "D:\stable-diffusion-webui-forge\modules\script_callbacks.py", line 142, in app_started_callback c.callback(demo, app) File "D:\stable-diffusion-webui-forge\extensions\sd-webui-supermerger\scripts\GenParamGetter.py", line 90, in get_params_components inputs=[*components.msettings,components.esettings1,*components.genparams,*components.hiresfix,*components.lucks,components.currentmodel,components.dfalse,*components.txt2img_params], TypeError: Value after * must be an iterable, not NoneType --- Startup time: 10.9s (prepare environment: 1.8s, import torch: 1.7s, import gradio: 0.5s, setup paths: 0.3s, other imports: 0.3s, list SD models: 0.2s, load scripts: 2.1s, refresh VAE: 0.1s, create ui: 3.1s, gradio launch: 0.4s, app_started_callback: 0.2s). Traceback (most recent call last): File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\routes.py", line 488, in run_predict output = await app.get_blocks().process_api( File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\blocks.py", line 1434, in process_api data = self.postprocess_data(fn_index, result["prediction"], state) File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\blocks.py", line 1297, in postprocess_data self.validate_outputs(fn_index, predictions) # type: ignore File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\blocks.py", line 1272, in validate_outputs raise ValueError( ValueError: An event handler (config_sdxl) didn't receive enough output values (needed: 33, received: 31). Wanted outputs: [dropdown, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, slider, dropdown, dropdown, dropdown, textbox, textbox, textbox] Received outputs: [{'choices': ['BASE', 'IN00', 'IN01', 'IN02', 'IN03', 'IN04', 'IN05', 'IN06', 'IN07', 'IN08', 'M00', 'OUT00', 'OUT01', 'OUT02', 'OUT03', 'OUT04', 'OUT05', 'OUT06', 'OUT07', 'OUT08'], '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': True, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'visible': False, '__type__': 'generic_update'}, {'choices': ['ALL', 'BASE', 'INP*', 'MID', 'OUT*', 'IN00', 'IN01', 'IN02', 'IN03', 'IN04', 'IN05', 'IN06', 'IN07', 'IN08', 'M00', 'OUT00', 'OUT01', 'OUT02', 'OUT03', 'OUT04', 'OUT05', 'OUT06', 'OUT07', 'OUT08'], '__type__': 'generic_update'}, {'choices': ['ALL', 'BASE', 'INP*', 'MID', 'OUT*', 'IN00', 'IN01', 'IN02', 'IN03', 'IN04', 'IN05', 'IN06', 'IN07', 'IN08', 'M00', 'OUT00', 'OUT01', 'OUT02', 'OUT03', 'OUT04', 'OUT05', 'OUT06', 'OUT07', 'OUT08'], '__type__': 'generic_update'}, {'label': 'Merge Block Weights: BASE,IN00,IN02,...IN08,M00,OUT00,...,OUT08', '__type__': 'generic_update'}, {'label': 'Merge Block Weights: BASE,IN00,IN02,...IN08,M00,OUT00,...,OUT08', '__type__': 'generic_update'}] Traceback (most recent call last): File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\routes.py", line 488, in run_predict output = await app.get_blocks().process_api( File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\blocks.py", line 1431, in process_api result = await self.call_function( File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\blocks.py", line 1103, in call_function prediction = await anyio.to_thread.run_sync( File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\anyio\to_thread.py", line 33, in run_sync return await get_asynclib().run_sync_in_worker_thread( File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread return await future File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run result = context.run(func, *args) File "D:\stable-diffusion-webui-forge\venv\lib\site-packages\gradio\utils.py", line 707, in wrapper response = f(*args, **kwargs) File "D:\stable-diffusion-webui-forge\extensions\sd-webui-model-mixer\scripts\model_mixer.py", line 2366, in recipe_update if "Sum" in modes[n]: TypeError: argument of type 'bool' is not iterable debugs = ['elemental merge'] use_extra_elements = True - mm_max_models = 2 *** Error running before_process: D:\stable-diffusion-webui-forge\extensions\sd-webui-model-mixer\scripts\model_mixer.py Traceback (most recent call last): File "D:\stable-diffusion-webui-forge\modules\scripts.py", line 790, in before_process script.before_process(p, *script_args) File "D:\stable-diffusion-webui-forge\extensions\sd-webui-model-mixer\scripts\model_mixer.py", line 3071, in before_process if type(alpha) == str: alpha = float(alpha) ValueError: could not convert string to float: 'Sum' --- To load target model SDXL Begin to load 1 model Moving model(s) has taken 0.96 seconds 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:03<00:00, 6.65it/s] To load target model AutoencoderKL███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:02<00:00, 7.42it/s] Begin to load 1 model Total progress: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:03<00:00, 6.19it/s] debugs = ['elemental merge']████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:03<00:00, 7.42it/s] use_extra_elements = True - mm_max_models = 2 *** Error running before_process: D:\stable-diffusion-webui-forge\extensions\sd-webui-model-mixer\scripts\model_mixer.py Traceback (most recent call last): File "D:\stable-diffusion-webui-forge\modules\scripts.py", line 790, in before_process script.before_process(p, *script_args) File "D:\stable-diffusion-webui-forge\extensions\sd-webui-model-mixer\scripts\model_mixer.py", line 3071, in before_process if type(alpha) == str: alpha = float(alpha) ValueError: could not convert string to float: 'Sum' ```

Their fork seems to have been reworked in a way that might make MM run smoother once compatibility is fixed.

I hope you can check "Forge" out when you get some time and assess what needs to be fixed or updated to use MM w/ it.

Thanks!!

Repo link: https://github.com/lllyasviel/stable-diffusion-webui-forge

Their description:

465111111

wkpark commented 8 months ago

I've installed the webui-forge and tested it for a while. and I've just found a very old bug related to this issue.