Spaces:
Build error
Build error
Nupur Kumari
commited on
Commit
·
e417d7a
1
Parent(s):
7db1586
custom-diffusion-space
Browse files- app.py +7 -3
- trainer.py +3 -0
app.py
CHANGED
|
@@ -76,8 +76,8 @@ def create_training_demo(trainer: Trainer,
|
|
| 76 |
class_prompt = gr.Textbox(label='Regularization set Prompt',
|
| 77 |
max_lines=1, placeholder='Example: "cat"')
|
| 78 |
gr.Markdown('''
|
| 79 |
-
-
|
| 80 |
-
- For a new concept
|
| 81 |
- For a style concept, use "painting in the style of \<new1\> art" for concept_prompt and "art" for class_prompt.
|
| 82 |
''')
|
| 83 |
with gr.Box():
|
|
@@ -95,10 +95,13 @@ def create_training_demo(trainer: Trainer,
|
|
| 95 |
label='Number of Gradient Accumulation',
|
| 96 |
value=1,
|
| 97 |
precision=0)
|
| 98 |
-
|
|
|
|
|
|
|
| 99 |
gr.Markdown('''
|
| 100 |
- Only enable one of "Train Text Encoder" or "modifier token" or None.
|
| 101 |
- It will take about ~10 minutes to train for 1000 steps and ~21GB on a 3090 GPU.
|
|
|
|
| 102 |
- Note that your trained models will be deleted when the second training is started. You can upload your trained model in the "Upload" tab.
|
| 103 |
''')
|
| 104 |
|
|
@@ -129,6 +132,7 @@ def create_training_demo(trainer: Trainer,
|
|
| 129 |
gradient_accumulation,
|
| 130 |
batch_size,
|
| 131 |
use_8bit_adam,
|
|
|
|
| 132 |
],
|
| 133 |
outputs=[
|
| 134 |
training_status,
|
|
|
|
| 76 |
class_prompt = gr.Textbox(label='Regularization set Prompt',
|
| 77 |
max_lines=1, placeholder='Example: "cat"')
|
| 78 |
gr.Markdown('''
|
| 79 |
+
- Use "\<new1\>" appended in front of the concept. E.g. "\<new1\> cat" if modifier_token is enabled.
|
| 80 |
+
- For a new concept e.g. concept_prompt is "photo of a \<new1\> cat" and "cat" for class_prompt.
|
| 81 |
- For a style concept, use "painting in the style of \<new1\> art" for concept_prompt and "art" for class_prompt.
|
| 82 |
''')
|
| 83 |
with gr.Box():
|
|
|
|
| 95 |
label='Number of Gradient Accumulation',
|
| 96 |
value=1,
|
| 97 |
precision=0)
|
| 98 |
+
with gr.Row():
|
| 99 |
+
use_8bit_adam = gr.Checkbox(label='Use 8bit Adam', value=True)
|
| 100 |
+
gradient_checkpointing = gr.Checkbox(label='Enable gradient checkpointing', value=False)
|
| 101 |
gr.Markdown('''
|
| 102 |
- Only enable one of "Train Text Encoder" or "modifier token" or None.
|
| 103 |
- It will take about ~10 minutes to train for 1000 steps and ~21GB on a 3090 GPU.
|
| 104 |
+
- Enable gradient checkpointing to save memory (~14GB) at the expense of slower backward pass.
|
| 105 |
- Note that your trained models will be deleted when the second training is started. You can upload your trained model in the "Upload" tab.
|
| 106 |
''')
|
| 107 |
|
|
|
|
| 132 |
gradient_accumulation,
|
| 133 |
batch_size,
|
| 134 |
use_8bit_adam,
|
| 135 |
+
gradient_checkpointing
|
| 136 |
],
|
| 137 |
outputs=[
|
| 138 |
training_status,
|
trainer.py
CHANGED
|
@@ -69,6 +69,7 @@ class Trainer:
|
|
| 69 |
gradient_accumulation: int,
|
| 70 |
batch_size: int,
|
| 71 |
use_8bit_adam: bool,
|
|
|
|
| 72 |
) -> tuple[dict, list[pathlib.Path]]:
|
| 73 |
if not torch.cuda.is_available():
|
| 74 |
raise gr.Error('CUDA is not available.')
|
|
@@ -111,6 +112,8 @@ class Trainer:
|
|
| 111 |
command += ' --use_8bit_adam'
|
| 112 |
if train_text_encoder:
|
| 113 |
command += f' --train_text_encoder'
|
|
|
|
|
|
|
| 114 |
|
| 115 |
with open(self.output_dir / 'train.sh', 'w') as f:
|
| 116 |
command_s = ' '.join(command.split())
|
|
|
|
| 69 |
gradient_accumulation: int,
|
| 70 |
batch_size: int,
|
| 71 |
use_8bit_adam: bool,
|
| 72 |
+
gradient_checkpointing: bool,
|
| 73 |
) -> tuple[dict, list[pathlib.Path]]:
|
| 74 |
if not torch.cuda.is_available():
|
| 75 |
raise gr.Error('CUDA is not available.')
|
|
|
|
| 112 |
command += ' --use_8bit_adam'
|
| 113 |
if train_text_encoder:
|
| 114 |
command += f' --train_text_encoder'
|
| 115 |
+
if gradient_checkpointing:
|
| 116 |
+
command += f' --gradient_checkpointing'
|
| 117 |
|
| 118 |
with open(self.output_dir / 'train.sh', 'w') as f:
|
| 119 |
command_s = ' '.join(command.split())
|