From c54f3b31e17a8326384b703b701aac95c60fe926 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Tue, 9 Apr 2024 03:34:51 -0400 Subject: [PATCH 1/7] model card gen code --- .../train_dreambooth_lora_sdxl_advanced.py | 76 +++++++++---------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index 21a84b77245a..6e59a9f6c6af 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -100,30 +100,27 @@ def determine_scheduler_type(pretrained_model_name_or_path, revision): def save_model_card( repo_id: str, use_dora: bool, - images=None, - base_model=str, - train_text_encoder=False, - train_text_encoder_ti=False, + images: list = None, + base_model: Optional[str] = None, + train_text_encoder: bool = False, + train_text_encoder_ti: bool = False, token_abstraction_dict=None, - instance_prompt=str, - validation_prompt=str, + instance_prompt: Optional[str] = None, + validation_prompt: Optional[str] = None, repo_folder=None, vae_path=None, ): - img_str = "widget:\n" - lora = "lora" if not use_dora else "dora" - for i, image in enumerate(images): - image.save(os.path.join(repo_folder, f"image_{i}.png")) - img_str += f""" - - text: '{validation_prompt if validation_prompt else ' ' }' - output: - url: - "image_{i}.png" - """ - if not images: - img_str += f""" - - text: '{instance_prompt}' - """ + widget_dict = [] + if images is not None: + for i, image in enumerate(images): + image.save(os.path.join(repo_folder, f"image_{i}.png")) + widget_dict.append( + {"text": validation_prompt if validation_prompt else " ", "output": {"url": f"image_{i}.png"}} + ) + else: + widget_dict.append( + {"text": instance_prompt} + ) embeddings_filename = f"{repo_folder}_emb" instance_prompt_webui = re.sub(r"", "", re.sub(r"", embeddings_filename, instance_prompt, count=1)) ti_keys = ", ".join(f'"{match}"' for match in re.findall(r"", instance_prompt)) @@ -160,23 +157,7 @@ def save_model_card( to trigger concept `{key}` → use `{tokens}` in your prompt \n """ - yaml = f"""--- -tags: -- stable-diffusion-xl -- stable-diffusion-xl-diffusers -- diffusers-training -- text-to-image -- diffusers -- {lora} -- template:sd-lora -{img_str} -base_model: {base_model} -instance_prompt: {instance_prompt} -license: openrail++ ---- -""" - - model_card = f""" + model_description = f""" # SDXL LoRA DreamBooth - {repo_id} @@ -224,8 +205,25 @@ def save_model_card( Special VAE used for training: {vae_path}. """ - with open(os.path.join(repo_folder, "README.md"), "w") as f: - f.write(yaml + model_card) + model_card = load_or_create_model_card( + repo_id_or_path=repo_id, + from_training=True, + license="openrail++", + base_model=base_model, + prompt=instance_prompt, + model_description=model_description, + widget=widget_dict, + ) + tags = [ + "text-to-image", + "stable-diffusion-xl", + "stable-diffusion-xl-diffusers", + "text-to-image", + "diffusers", + "lora", + "template:sd-lora", + ] + model_card = populate_model_card(model_card, tags=tags) def import_model_class_from_model_name_or_path( From e044b84902dd054e772a7ad34f63f9390d113ee1 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Tue, 9 Apr 2024 03:38:32 -0400 Subject: [PATCH 2/7] push modelcard creation --- .../train_dreambooth_lora_sdxl_advanced.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index 6e59a9f6c6af..2b239bbd8dc8 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -101,7 +101,7 @@ def save_model_card( repo_id: str, use_dora: bool, images: list = None, - base_model: Optional[str] = None, + base_model: str = None, train_text_encoder: bool = False, train_text_encoder_ti: bool = False, token_abstraction_dict=None, From cb3898461bf0e63a3ef4e1ba1807022015ac3f00 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Tue, 9 Apr 2024 03:42:05 -0400 Subject: [PATCH 3/7] remove optional from params --- .../train_dreambooth_lora_sdxl_advanced.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index 2b239bbd8dc8..24d554771b6d 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -105,8 +105,8 @@ def save_model_card( train_text_encoder: bool = False, train_text_encoder_ti: bool = False, token_abstraction_dict=None, - instance_prompt: Optional[str] = None, - validation_prompt: Optional[str] = None, + instance_prompt: str = None, + validation_prompt: str = None, repo_folder=None, vae_path=None, ): From f51f71a3f0a074037528f377f4cfdfabb66679a9 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Tue, 9 Apr 2024 13:16:53 -0400 Subject: [PATCH 4/7] add import --- .../train_dreambooth_lora_sdxl_advanced.py | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index 24d554771b6d..f05b337caf56 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -73,6 +73,7 @@ convert_unet_state_dict_to_peft, is_wandb_available, ) +from diffusers.utils.hub_utils import load_or_create_model_card, populate_model_card from diffusers.utils.import_utils import is_xformers_available from diffusers.utils.torch_utils import is_compiled_module From e988c7ecec0893c750f5be7d5a59b51d3bc23bd0 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Tue, 16 Apr 2024 21:50:04 -0400 Subject: [PATCH 5/7] add use_dora check --- .../train_dreambooth_lora_sdxl_advanced.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index f05b337caf56..f5c1884f2202 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -111,6 +111,8 @@ def save_model_card( repo_folder=None, vae_path=None, ): + lora = "lora" if not use_dora else "dora" + widget_dict = [] if images is not None: for i, image in enumerate(images): From 276eb036b635db68fdc690abada944f46507516e Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Mon, 10 Jun 2024 14:46:18 -0400 Subject: [PATCH 6/7] correct lora var use in tags --- .../train_dreambooth_lora_sdxl_advanced.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index f5c1884f2202..332e68d45e5b 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -223,7 +223,7 @@ def save_model_card( "stable-diffusion-xl-diffusers", "text-to-image", "diffusers", - "lora", + lora, "template:sd-lora", ] model_card = populate_model_card(model_card, tags=tags) From 007afd04a0c828375ef6d05035921aa57127a444 Mon Sep 17 00:00:00 2001 From: Abhipsha Das Date: Wed, 12 Jun 2024 15:29:42 -0400 Subject: [PATCH 7/7] make style && make quality --- .../train_dreambooth_lora_sdxl_advanced.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py index 332e68d45e5b..8b5f0ad070f2 100644 --- a/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py +++ b/examples/advanced_diffusion_training/train_dreambooth_lora_sdxl_advanced.py @@ -121,9 +121,7 @@ def save_model_card( {"text": validation_prompt if validation_prompt else " ", "output": {"url": f"image_{i}.png"}} ) else: - widget_dict.append( - {"text": instance_prompt} - ) + widget_dict.append({"text": instance_prompt}) embeddings_filename = f"{repo_folder}_emb" instance_prompt_webui = re.sub(r"", "", re.sub(r"", embeddings_filename, instance_prompt, count=1)) ti_keys = ", ".join(f'"{match}"' for match in re.findall(r"", instance_prompt))