mirror of
https://github.com/lllyasviel/stable-diffusion-webui-forge.git
synced 2026-03-09 06:59:48 +00:00
API Improvements: Modules Change AND Restore override_settings (#2027)
* Improve API modules change * Restore override_settings and make it work * Simplify some memory management
This commit is contained in:
@@ -688,20 +688,25 @@ class Api:
|
||||
if checkpoint_name is not None and checkpoint_name not in sd_models.checkpoint_aliases:
|
||||
raise RuntimeError(f"model {checkpoint_name!r} not found")
|
||||
|
||||
refresh_memory = False
|
||||
memory_changes = {}
|
||||
memory_keys = ['forge_inference_memory', 'forge_async_loading', 'forge_pin_shared_memory']
|
||||
|
||||
for k, v in req.items():
|
||||
shared.opts.set(k, v, is_api=True)
|
||||
# options for memory/modules are set in their dedicated functions
|
||||
if k in memory_keys:
|
||||
refresh_memory = True
|
||||
mem_key = k[len('forge_'):] # remove 'forge_' prefix
|
||||
memory_changes[mem_key] = v
|
||||
elif k == 'forge_additional_modules':
|
||||
main_entry.modules_change(v, refresh_params=False) # refresh_model_loading_parameters() --- applied in checkpoint_change()
|
||||
# set all other options
|
||||
else:
|
||||
shared.opts.set(k, v, is_api=True)
|
||||
|
||||
main_entry.checkpoint_change(checkpoint_name)
|
||||
# shared.opts.save(shared.config_filename) --- applied in checkpoint_change()
|
||||
|
||||
if refresh_memory:
|
||||
model_memory = main_entry.total_vram - shared.opts.forge_inference_memory
|
||||
main_entry.refresh_memory_management_settings(model_memory, shared.opts.forge_async_loading, shared.opts.forge_pin_shared_memory)
|
||||
if memory_changes:
|
||||
main_entry.refresh_memory_management_settings(**memory_changes)
|
||||
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user