From 7f7c390c5a688ad672148bc4f8f4abcad89503fc Mon Sep 17 00:00:00 2001 From: AI-Casanova <54461896+AI-Casanova@users.noreply.github.com> Date: Thu, 28 Sep 2023 08:26:42 -0500 Subject: [PATCH] Fix SDXL TI v2 For some reason trying to resize `clip_l` and `clip_g` doesn't work resulting in this error `index 49408 is out of bounds for dimension 0 with size 49408` `self.register_embedding` doesn't work for SDXL `'StableDiffusionXLPipeline' object has no attribute 'cond_stage_model'` but the exception happens after the embeddings are loaded so is inconsequential to function. --- modules/textual_inversion/textual_inversion.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 512a6f1e6..78584f130 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -182,11 +182,12 @@ class EmbeddingDatabase: for i in range(len(token_ids)): clip_l.data[token_ids[i]] = embeddings_dict["clip_l"][i] elif is_xl: + pipe.tokenizer_2.add_tokens(tokens) pipe.text_encoder.resize_token_embeddings(len(pipe.tokenizer)) pipe.text_encoder_2.resize_token_embeddings(len(pipe.tokenizer)) for i in range(len(token_ids)): - clip_l.data[token_ids[i]] = embeddings_dict["clip_l"][i] - clip_g.data[token_ids[i]] = embeddings_dict["clip_g"][i] + pipe.text_encoder.get_input_embeddings().weight.data[token_ids[i]] = embeddings_dict["clip_l"][i] + pipe.text_encoder_2.get_input_embeddings().weight.data[token_ids[i]] = embeddings_dict["clip_g"][i] self.register_embedding(embedding, shared.sd_model) else: raise NotImplementedError