pull/2020/head
bmaltais 2024-02-18 18:30:30 -05:00
parent f9b6d5e9ed
commit 030983d043
9 changed files with 1043 additions and 58 deletions

1009
SC_finetuning_gui.py Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,4 +9,5 @@
--previewer_checkpoint_path "E:\models\stable_cascade\previewer.safetensors" `
--dataset_config "D:\kohya_ss\examples\stable_cascade\test_dataset.toml" `
--sample_every_n_epochs 1 --sample_prompts "D:\kohya_ss\examples\stable_cascade\prompt.txt" `
--adaptive_loss_weight
--adaptive_loss_weight

View File

@ -58,7 +58,6 @@ def save_configuration(
v2,
v_parameterization,
sdxl_checkbox,
stable_cascade_checkbox,
train_dir,
image_folder,
output_dir,
@ -194,7 +193,6 @@ def open_configuration(
v2,
v_parameterization,
sdxl_checkbox,
stable_cascade_checkbox,
train_dir,
image_folder,
output_dir,
@ -337,7 +335,6 @@ def train_model(
v2,
v_parameterization,
sdxl_checkbox,
stable_cascade_checkbox,
train_dir,
image_folder,
output_dir,
@ -556,8 +553,6 @@ def train_model(
if sdxl_checkbox:
run_cmd += f' "./sdxl_train.py"'
elif stable_cascade_checkbox:
run_cmd += f' "./stable_cascade_train_stage_c.py"'
else:
run_cmd += f' "./fine_tune.py"'
@ -566,7 +561,7 @@ def train_model(
if use_latent_files == "Yes"
else f"{train_dir}/{caption_metadata_filename}"
)
cache_text_encoder_outputs = sdxl_checkbox or stable_cascade_checkbox and sdxl_cache_text_encoder_outputs
cache_text_encoder_outputs = sdxl_checkbox and sdxl_cache_text_encoder_outputs
no_half_vae = sdxl_checkbox and sdxl_no_half_vae
run_cmd += run_cmd_advanced_training(
@ -578,7 +573,7 @@ def train_model(
cache_latents=cache_latents,
cache_latents_to_disk=cache_latents_to_disk,
cache_text_encoder_outputs=cache_text_encoder_outputs
if sdxl_checkbox or stable_cascade_checkbox
if sdxl_checkbox
else None,
caption_dropout_every_n_epochs=caption_dropout_every_n_epochs,
caption_dropout_rate=caption_dropout_rate,
@ -595,9 +590,9 @@ def train_model(
in_json=in_json,
keep_tokens=keep_tokens,
learning_rate=learning_rate,
learning_rate_te1=learning_rate_te1 if sdxl_checkbox or stable_cascade_checkbox else None,
learning_rate_te2=learning_rate_te2 if sdxl_checkbox or stable_cascade_checkbox else None,
learning_rate_te=learning_rate_te if not sdxl_checkbox or not stable_cascade_checkbox else None,
learning_rate_te1=learning_rate_te1 if sdxl_checkbox else None,
learning_rate_te2=learning_rate_te2 if sdxl_checkbox else None,
learning_rate_te=learning_rate_te if not sdxl_checkbox else None,
logging_dir=logging_dir,
lr_scheduler=lr_scheduler,
lr_scheduler_args=lr_scheduler_args,
@ -923,7 +918,6 @@ def finetune_tab(headless=False):
source_model.v2,
source_model.v_parameterization,
source_model.sdxl_checkbox,
source_model.stable_cascade_checkbox,
train_dir,
image_folder,
output_dir,

View File

@ -3,6 +3,7 @@ import os
import argparse
from dreambooth_gui import dreambooth_tab
from finetune_gui import finetune_tab
from SC_finetuning_gui import sc_finetune_tab
from textual_inversion_gui import ti_tab
from library.utilities import utilities_tab
from lora_gui import lora_tab
@ -54,6 +55,8 @@ def UI(**kwargs):
ti_tab(headless=headless)
with gr.Tab("Finetuning"):
finetune_tab(headless=headless)
with gr.Tab("SC Finetuning"):
sc_finetune_tab(headless=headless)
with gr.Tab("Utilities"):
utilities_tab(
train_data_dir_input=train_data_dir_input,

View File

@ -5,7 +5,7 @@ import os
class BasicTraining:
def __init__(
self,
sdxl_checkbox: gr.Checkbox,
sdxl_checkbox: gr.Checkbox = gr.Checkbox(value=False),
learning_rate_value="1e-6",
lr_scheduler_value="constant",
lr_warmup_value="0",

View File

@ -21,17 +21,16 @@ class SourceModel:
'diffusers_safetensors',
'safetensors',
],
headless=False,
model_type_visibility:bool = True,
headless:bool = False,
model_list_value:str = "runwayml/stable-diffusion-v1-5"
):
self.headless = headless
self.save_model_as_choices = save_model_as_choices
with gr.Tab('Source model'):
# Define the input elements
with gr.Row():
self.model_list = gr.Dropdown(
label='Model Quick Pick',
choices=[
self.model_type_visibility = model_type_visibility
self.model_list_value = model_list_value
self.pretrained_model_name_or_path_visible = True if model_list_value == "custom" else (False and not headless)
model_list_choices = [
'custom',
'stabilityai/stable-diffusion-xl-base-1.0',
'stabilityai/stable-diffusion-xl-refiner-1.0',
@ -43,8 +42,15 @@ class SourceModel:
'stabilityai/stable-diffusion-2',
'runwayml/stable-diffusion-v1-5',
'CompVis/stable-diffusion-v1-4',
],
value='runwayml/stable-diffusion-v1-5',
]
with gr.Tab('Source model'):
# Define the input elements
with gr.Row():
self.model_list = gr.Dropdown(
label='Model Quick Pick',
choices=model_list_choices if model_list_value != "custom" else ["custom"],
value=model_list_value,
)
self.save_model_as = gr.Dropdown(
label='Save trained model as',
@ -56,12 +62,12 @@ class SourceModel:
label='Pretrained model name or path',
placeholder='enter the path to custom model or name of pretrained model',
value='runwayml/stable-diffusion-v1-5',
visible=(False and not headless),
visible=self.pretrained_model_name_or_path_visible,
)
self.pretrained_model_name_or_path_file = gr.Button(
document_symbol,
elem_id='open_folder_small',
visible=(False and not headless),
visible=self.pretrained_model_name_or_path_visible,
)
self.pretrained_model_name_or_path_file.click(
get_any_file_path,
@ -72,7 +78,7 @@ class SourceModel:
self.pretrained_model_name_or_path_folder = gr.Button(
folder_symbol,
elem_id='open_folder_small',
visible=(False and not headless),
visible=self.pretrained_model_name_or_path_visible,
)
self.pretrained_model_name_or_path_folder.click(
get_folder_path,
@ -80,7 +86,7 @@ class SourceModel:
outputs=self.pretrained_model_name_or_path,
show_progress=False,
)
with gr.Row():
with gr.Row(visible=model_type_visibility):
self.v2 = gr.Checkbox(label='v2', value=False, visible=False)
self.v_parameterization = gr.Checkbox(
label='v_parameterization', value=False, visible=False
@ -88,9 +94,6 @@ class SourceModel:
self.sdxl_checkbox = gr.Checkbox(
label='SDXL Model', value=False, visible=False
)
self.stable_cascade_checkbox = gr.Checkbox(
label='Stable Cascade Model', value=False, visible=False
)
self.model_list.change(
set_pretrained_model_name_or_path_input,
@ -102,7 +105,6 @@ class SourceModel:
self.v2,
self.v_parameterization,
self.sdxl_checkbox,
self.stable_cascade_checkbox,
],
outputs=[
self.model_list,
@ -112,7 +114,6 @@ class SourceModel:
self.v2,
self.v_parameterization,
self.sdxl_checkbox,
self.stable_cascade_checkbox,
],
show_progress=False,
)

View File

@ -3,34 +3,16 @@ import gradio as gr
### Stable Cascade Parameters class
class StableCascadeParameters:
def __init__(
self, stable_cascade_checkbox, show_stable_cascade_cache_text_encoder_outputs: bool = True
self, show_stable_cascade_cache_text_encoder_outputs: bool = True
):
self.stable_cascade_checkbox = stable_cascade_checkbox
self.show_stable_cascade_cache_text_encoder_outputs = (
show_stable_cascade_cache_text_encoder_outputs
)
with gr.Accordion(
visible=False, open=True, label='Stable Cascade Specific Parameters'
) as self.stable_cascade_row:
visible=True, open=True, label='Stable Cascade Specific Parameters'
):
with gr.Row():
self.effnet_checkpoint_path = gr.Textbox(
label="effnet checkpoint path"
)
self.stable_cascade_cache_text_encoder_outputs = gr.Checkbox(
label='Cache text encoder outputs',
info='Cache the outputs of the text encoders. This option is useful to reduce the GPU memory usage. This option cannot be used with options for shuffling or dropping the captions.',
value=False,
visible=show_stable_cascade_cache_text_encoder_outputs,
)
self.stable_cascade_no_half_vae = gr.Checkbox(
label='No half VAE',
info='Disable the half-precision (mixed-precision) VAE. VAE for Stable Cascade seems to produce NaNs in some cases. This option is useful to avoid the NaNs.',
value=True,
)
self.stable_cascade_checkbox.change(
lambda stable_cascade_checkbox: gr.Accordion(visible=stable_cascade_checkbox),
inputs=[self.stable_cascade_checkbox],
outputs=[self.stable_cascade_row],
)

View File

@ -450,7 +450,6 @@ def set_pretrained_model_name_or_path_input(
v2,
v_parameterization,
sdxl,
stable_cascade,
):
# Check if the given model_list is in the list of SDXL models
if str(model_list) in SDXL_MODELS:

View File

@ -63,7 +63,6 @@ def save_configuration(
v2,
v_parameterization,
sdxl,
stable_cascade,
logging_dir,
train_data_dir,
reg_data_dir,
@ -231,7 +230,6 @@ def open_configuration(
v2,
v_parameterization,
sdxl,
stable_cascade,
logging_dir,
train_data_dir,
reg_data_dir,
@ -431,7 +429,6 @@ def train_model(
v2,
v_parameterization,
sdxl,
stable_cascade,
logging_dir,
train_data_dir,
reg_data_dir,
@ -1823,7 +1820,6 @@ def lora_tab(
source_model.v2,
source_model.v_parameterization,
source_model.sdxl_checkbox,
source_model.stable_cascade_checkbox,
folders.logging_dir,
folders.train_data_dir,
folders.reg_data_dir,