From f4d5e8cac16a42fa939e78a0956b4c30e2b47bb5 Mon Sep 17 00:00:00 2001 From: altoiddealer Date: Tue, 1 Oct 2024 16:34:11 -0400 Subject: [PATCH] Apply memory changes via API (#1954) Actually apply memory related changes posted to `/sdapi/v1/options`: - 'forge_inference_memory' - 'forge_async_loading' - 'forge_pin_shared_memory' --- modules/api/api.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/api/api.py b/modules/api/api.py index 617867f2..1f62b453 100644 --- a/modules/api/api.py +++ b/modules/api/api.py @@ -687,12 +687,22 @@ class Api: checkpoint_name = req.get("sd_model_checkpoint", None) 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_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) + if k in memory_keys: + refresh_memory = 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) + return def get_cmd_flags(self):