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:
altoiddealer
2024-10-13 07:29:02 -04:00
committed by GitHub
parent ae8187bf2d
commit 862c7a589e
3 changed files with 89 additions and 22 deletions

View File

@@ -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