[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
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.
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: