diff --git a/modules/sd_models.py b/modules/sd_models.py index ef8a3ebf..81d9f529 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -265,9 +265,16 @@ class SdModelData: model_data = SdModelData() -def unload_model_weights(sd_model=None, info=None): +def unload_model_weights(*args, **kwargs): memory_management.unload_all_models() - return + + del model_data.sd_model + + model_data.sd_model = FakeInitialModel() + model_data.forge_hash = "" + + memory_management.soft_empty_cache() + gc.collect() def list_loaded_weights(): @@ -344,7 +351,6 @@ def forge_model_reload(): sd_model = forge_loader(state_dict, additional_state_dicts=additional_state_dicts) except Exception as e: model_data.sd_model = FakeInitialModel() - model_data.forge_loading_parameters = {} model_data.forge_hash = "" errors.display(e, "forge_loader") memory_management.logger.error("Failed to load diffusion model... (check README for supported models)") diff --git a/modules/ui_settings.py b/modules/ui_settings.py index 0f49ffda..e2149351 100644 --- a/modules/ui_settings.py +++ b/modules/ui_settings.py @@ -211,8 +211,8 @@ class UiSettings: download_localization = gr.Button(value="Download localization template", elem_id="download_localization") reload_script_bodies = gr.Button(value="Reload custom script bodies (No ui updates, No restart)", variant="secondary", elem_id="settings_reload_script_bodies") with gr.Row(): - unload_sd_model = gr.Button(value="Unload all models", elem_id="sett_unload_sd_model") - list_loaded_model = gr.Button(value="List all currently loaded models", elem_id="sett_list_loaded_model") + unload_sd_model = gr.Button(value="Unload All Models", tooltip="Clear all models from RAM and VRAM", elem_id="sett_unload_sd_model") + list_loaded_model = gr.Button(value="List Loaded Models", tooltip="Print out all models currently loaded", elem_id="sett_list_loaded_model") with gr.Row(): calculate_all_checkpoint_hash = gr.Button(value="Calculate hash for all checkpoint", elem_id="calculate_all_checkpoint_hash") calculate_all_checkpoint_hash_threads = gr.Number(value=1, label="Number of parallel calculations", elem_id="calculate_all_checkpoint_hash_threads", precision=0, minimum=1) @@ -240,9 +240,9 @@ class UiSettings: license_tab.select(fn=None, _js="populateLicense") - unload_sd_model.click(fn=call_func_and_return_text(sd_models.unload_model_weights, "Unloaded all models"), inputs=[], outputs=[self.result]) + unload_sd_model.click(fn=call_func_and_return_text(sd_models.unload_model_weights, "Unloaded all models"), outputs=[self.result]) - list_loaded_model.click(fn=call_func_and_return_text(sd_models.list_loaded_weights, "List all models"), inputs=[], outputs=[self.result]) + list_loaded_model.click(fn=call_func_and_return_text(sd_models.list_loaded_weights, "List all models"), outputs=[self.result]) request_notifications.click(fn=lambda: None, inputs=[], outputs=[], _js="function(){}")