aboutsummaryrefslogtreecommitdiffstats
path: root/modules/api
diff options
context:
space:
mode:
authorΦφ <42910943+Brawlence@users.noreply.github.com>2023-03-09 04:56:19 +0000
committerΦφ <42910943+Brawlence@users.noreply.github.com>2023-03-21 06:28:50 +0000
commit4cbbb881ee530d9b9ba18027e2b0057e6a2c4ee1 (patch)
tree943c119f18a0aa7a748f95c989f73e3a9a69a1c3 /modules/api
parenta9fed7c364061ae6efb37f797b6b522cb3cf7aa2 (diff)
downloadstable-diffusion-webui-gfx803-4cbbb881ee530d9b9ba18027e2b0057e6a2c4ee1.tar.gz
stable-diffusion-webui-gfx803-4cbbb881ee530d9b9ba18027e2b0057e6a2c4ee1.tar.bz2
stable-diffusion-webui-gfx803-4cbbb881ee530d9b9ba18027e2b0057e6a2c4ee1.zip
Unload checkpoints on Request
…to free VRAM. New Action buttons in the settings to manually free and reload checkpoints, essentially juggling models between RAM and VRAM.
Diffstat (limited to 'modules/api')
-rw-r--r--modules/api/api.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/modules/api/api.py b/modules/api/api.py
index 35e17afc..f52f7fef 100644
--- a/modules/api/api.py
+++ b/modules/api/api.py
@@ -18,7 +18,7 @@ from modules.textual_inversion.textual_inversion import create_embedding, train_
from modules.textual_inversion.preprocess import preprocess
from modules.hypernetworks.hypernetwork import create_hypernetwork, train_hypernetwork
from PIL import PngImagePlugin,Image
-from modules.sd_models import checkpoints_list
+from modules.sd_models import checkpoints_list, unload_model_weights, reload_model_weights
from modules.sd_models_config import find_checkpoint_config_near_filename
from modules.realesrgan_model import get_realesrgan_models
from modules import devices
@@ -150,6 +150,8 @@ class Api:
self.add_api_route("/sdapi/v1/train/embedding", self.train_embedding, methods=["POST"], response_model=TrainResponse)
self.add_api_route("/sdapi/v1/train/hypernetwork", self.train_hypernetwork, methods=["POST"], response_model=TrainResponse)
self.add_api_route("/sdapi/v1/memory", self.get_memory, methods=["GET"], response_model=MemoryResponse)
+ self.add_api_route("/sdapi/v1/unload-checkpoint", self.unloadapi, methods=["POST"])
+ self.add_api_route("/sdapi/v1/reload-checkpoint", self.reloadapi, methods=["POST"])
self.add_api_route("/sdapi/v1/scripts", self.get_scripts_list, methods=["GET"], response_model=ScriptsList)
def add_api_route(self, path: str, endpoint, **kwargs):
@@ -412,6 +414,16 @@ class Api:
return {}
+ def unloadapi(self):
+ unload_model_weights()
+
+ return {}
+
+ def reloadapi(self):
+ reload_model_weights()
+
+ return {}
+
def skip(self):
shared.state.skip()