From b2973851f4ee5de4987ca8c1b0cbe8096286a701 Mon Sep 17 00:00:00 2001 From: kelsey Date: Mon, 16 Oct 2023 09:26:54 -0700 Subject: [PATCH 1/2] error handling in text inversion --- modules/api/ray.py | 4 ++-- modules/textual_inversion/textual_inversion.py | 12 ++++++++++-- webui-user.sh | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/api/ray.py b/modules/api/ray.py index fe5fa4d0dd5..c809b0dc830 100644 --- a/modules/api/ray.py +++ b/modules/api/ray.py @@ -7,9 +7,9 @@ import os -ray.init(os.environ.get("RAY_HEAD_ADDRESS", "")) +#ray.init(os.environ.get("RAY_HEAD_ADDRESS", "")) #ray.init("ray://localhost:10001") - +ray.init() def ray_only(): serve.shutdown() diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index aa79dc09843..7f1478f6de4 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -150,9 +150,17 @@ def register_embedding_by_name(self, embedding, model, name): self.word_embeddings[name] = embedding return embedding + # def get_expected_shape(self): + # vec = shared.sd_model.cond_stage_model.encode_embedding_init_text(",", 1) + # return vec.shape[1] + def get_expected_shape(self): - vec = shared.sd_model.cond_stage_model.encode_embedding_init_text(",", 1) - return vec.shape[1] + if shared.sd_model is None or not hasattr(shared.sd_model, 'cond_stage_model'): + # Handle the error appropriately, e.g., by raising an exception or returning a default value + raise ValueError("shared.sd_model is not initialized or does not have a 'cond_stage_model' attribute") + else: + vec = shared.sd_model.cond_stage_model.encode_embedding_init_text(",", 1) + return vec.shape[1] def load_from_file(self, path, filename): name, ext = os.path.splitext(filename) diff --git a/webui-user.sh b/webui-user.sh index d0302f940b9..2fe31534895 100644 --- a/webui-user.sh +++ b/webui-user.sh @@ -52,4 +52,4 @@ export RAY_MIN_REPLICAS=0 export RAY_MAX_REPLICAS=2 export RAY_PORT=7575 export RAY_IP="0.0.0.0" -#export RAY_HEAD_ADDRESS='ray://ray-head:10001' +export RAY_HEAD_ADDRESS='ray://ray-head:10001' From b5c3c81b16a9427cb98d94175419c5888fa91c61 Mon Sep 17 00:00:00 2001 From: kelsey Date: Mon, 16 Oct 2023 09:53:47 -0700 Subject: [PATCH 2/2] busted but getting somewhere --- modules/sd_models.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 930d0bee5c8..d72a7b4a8a3 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -637,6 +637,13 @@ def load_model(checkpoint_info=None, already_loaded_state_dict=None): model_data.set_sd_model(sd_model) model_data.was_loaded_at_least_once = True + # Check if shared.sd_model is initialized and has 'cond_stage_model' attribute + if shared.sd_model is None or not hasattr(shared.sd_model, 'cond_stage_model'): + # Initialize shared.sd_model or add 'cond_stage_model' attribute + # The following is just a placeholder, replace it with actual initialization code + shared.sd_model = instantiate_from_config(sd_config.model) + shared.sd_model.cond_stage_model = instantiate_from_config(sd_config.cond_stage_model) + sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings(force_reload=True) # Reload embeddings after model load as they may or may not fit the model timer.record("load textual inversion embeddings") @@ -654,7 +661,6 @@ def load_model(checkpoint_info=None, already_loaded_state_dict=None): return sd_model - def reuse_model_from_already_loaded(sd_model, checkpoint_info, timer): """ Checks if the desired checkpoint from checkpoint_info is not already loaded in model_data.loaded_sd_models.