From 006d17467b3d64fa7bcc3b414d8edcea4c06eedf Mon Sep 17 00:00:00 2001 From: bonlime Date: Wed, 28 Aug 2024 19:06:58 +0300 Subject: [PATCH 1/4] Update textual_inversion.py --- src/diffusers/loaders/textual_inversion.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/diffusers/loaders/textual_inversion.py b/src/diffusers/loaders/textual_inversion.py index 574b89233cc1..4d9dd1e5c70b 100644 --- a/src/diffusers/loaders/textual_inversion.py +++ b/src/diffusers/loaders/textual_inversion.py @@ -561,6 +561,7 @@ def unload_textual_inversion( tokenizer._added_tokens_encoder[token.content] = last_special_token_id + key_id key_id += 1 tokenizer._update_trie() + tokenizer._update_total_vocab_size() # Delete from text encoder text_embedding_dim = text_encoder.get_input_embeddings().embedding_dim From cc68408ea2436135073a2d19a3d704603eda545b Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 1 Oct 2024 00:35:20 -0700 Subject: [PATCH 2/4] add unload test --- tests/pipelines/test_pipelines.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/pipelines/test_pipelines.py b/tests/pipelines/test_pipelines.py index 8b087db6726e..35d861f1302b 100644 --- a/tests/pipelines/test_pipelines.py +++ b/tests/pipelines/test_pipelines.py @@ -947,6 +947,29 @@ def test_text_inversion_multi_tokens(self): emb1[num_tokens + 1].sum().item() == emb2[num_tokens + 1].sum().item() == emb3[num_tokens + 1].sum().item() ) + def test_textual_inversion_unload(self): + pipe1 = StableDiffusionPipeline.from_pretrained( + "hf-internal-testing/tiny-stable-diffusion-torch", safety_checker=None + ) + pipe1 = pipe1.to(torch_device) + orig_tokenizer_size = len(pipe1.tokenizer) + orig_emb_size = len(pipe1.text_encoder.get_input_embeddings().weight) + + token = "<*>" + ten = torch.ones((32,)) + pipe1.load_textual_inversion(ten, token=token) + pipe1.unload_textual_inversion() + pipe1.load_textual_inversion(ten, token=token) + pipe1.unload_textual_inversion() + + + final_tokenizer_size = len(pipe1.tokenizer) + final_emb_size = len(pipe1.text_encoder.get_input_embeddings().weight) + # both should be restored to original size + assert final_tokenizer_size == orig_tokenizer_size + assert final_emb_size == orig_emb_size + + def test_download_ignore_files(self): # Check https://huggingface.co/hf-internal-testing/tiny-stable-diffusion-pipe-ignore-files/blob/72f58636e5508a218c6b3f60550dc96445547817/model_index.json#L4 with tempfile.TemporaryDirectory() as tmpdirname: From 02f2bbccb4c1cc5eeb7fd75e1b84595684409867 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 4 Oct 2024 05:13:37 -0700 Subject: [PATCH 3/4] add comment --- src/diffusers/loaders/textual_inversion.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/diffusers/loaders/textual_inversion.py b/src/diffusers/loaders/textual_inversion.py index 4d9dd1e5c70b..30098c955d6b 100644 --- a/src/diffusers/loaders/textual_inversion.py +++ b/src/diffusers/loaders/textual_inversion.py @@ -561,6 +561,7 @@ def unload_textual_inversion( tokenizer._added_tokens_encoder[token.content] = last_special_token_id + key_id key_id += 1 tokenizer._update_trie() + # set correct total vocab size after removing tokens tokenizer._update_total_vocab_size() # Delete from text encoder From dd7ba256c554a7e2695292839e306bc54060b5d3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 9 Oct 2024 05:35:51 -0700 Subject: [PATCH 4/4] fix style --- tests/pipelines/test_pipelines.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/pipelines/test_pipelines.py b/tests/pipelines/test_pipelines.py index 35d861f1302b..43b01c40f5bb 100644 --- a/tests/pipelines/test_pipelines.py +++ b/tests/pipelines/test_pipelines.py @@ -962,14 +962,12 @@ def test_textual_inversion_unload(self): pipe1.load_textual_inversion(ten, token=token) pipe1.unload_textual_inversion() - final_tokenizer_size = len(pipe1.tokenizer) final_emb_size = len(pipe1.text_encoder.get_input_embeddings().weight) # both should be restored to original size assert final_tokenizer_size == orig_tokenizer_size assert final_emb_size == orig_emb_size - def test_download_ignore_files(self): # Check https://huggingface.co/hf-internal-testing/tiny-stable-diffusion-pipe-ignore-files/blob/72f58636e5508a218c6b3f60550dc96445547817/model_index.json#L4 with tempfile.TemporaryDirectory() as tmpdirname: