Spaces:
Running
on
Zero
Running
on
Zero
<feat> support changing models.
Browse files
README.md
CHANGED
@@ -9,6 +9,7 @@ app_file: app.py
|
|
9 |
pinned: false
|
10 |
license: apache-2.0
|
11 |
short_description: huggingface space for DRA-Ctrl.
|
|
|
12 |
---
|
13 |
|
14 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
9 |
pinned: false
|
10 |
license: apache-2.0
|
11 |
short_description: huggingface space for DRA-Ctrl.
|
12 |
+
entrypoint: app.sh
|
13 |
---
|
14 |
|
15 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
CHANGED
@@ -1,8 +1,4 @@
|
|
1 |
import os
|
2 |
-
|
3 |
-
if 'SPACES_APP' in os.environ:
|
4 |
-
os.system("pip install flash-attn==2.7.3 --no-build-isolation")
|
5 |
-
|
6 |
import sys
|
7 |
import torch
|
8 |
import diffusers
|
@@ -102,35 +98,40 @@ def init_basemodel():
|
|
102 |
@spaces.GPU
|
103 |
def process_image_and_text(condition_image, target_prompt, condition_image_prompt, task, random_seed, inpainting, fill_x1, fill_x2, fill_y1, fill_y2):
|
104 |
# set up the model
|
105 |
-
global pipe, current_task
|
106 |
-
if
|
107 |
-
if current_task is
|
108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
for n, m in transformer.named_modules():
|
110 |
if isinstance(m, peft.tuners.lora.layer.Linear):
|
111 |
-
|
112 |
-
m.forward = m.base_layer.forward.__get__(m, type(m))
|
113 |
-
|
114 |
-
current_task = task
|
115 |
-
|
116 |
-
# insert LoRA
|
117 |
-
lora_config = LoraConfig(
|
118 |
-
r=16,
|
119 |
-
lora_alpha=16,
|
120 |
-
init_lora_weights="gaussian",
|
121 |
-
target_modules=[
|
122 |
-
'attn.to_k', 'attn.to_q', 'attn.to_v', 'attn.to_out.0',
|
123 |
-
'attn.add_k_proj', 'attn.add_q_proj', 'attn.add_v_proj', 'attn.to_add_out',
|
124 |
-
'ff.net.0.proj', 'ff.net.2',
|
125 |
-
'ff_context.net.0.proj', 'ff_context.net.2',
|
126 |
-
'norm1_context.linear', 'norm1.linear',
|
127 |
-
'norm.linear', 'proj_mlp', 'proj_out',
|
128 |
-
]
|
129 |
-
)
|
130 |
-
transformer.add_adapter(lora_config)
|
131 |
|
132 |
# hack LoRA forward
|
133 |
def create_hacked_forward(module):
|
|
|
|
|
134 |
lora_forward = module.forward
|
135 |
non_lora_forward = module.base_layer.forward
|
136 |
img_sequence_length = int((512 / 8 / 2) ** 2)
|
|
|
1 |
import os
|
|
|
|
|
|
|
|
|
2 |
import sys
|
3 |
import torch
|
4 |
import diffusers
|
|
|
98 |
@spaces.GPU
|
99 |
def process_image_and_text(condition_image, target_prompt, condition_image_prompt, task, random_seed, inpainting, fill_x1, fill_x2, fill_y1, fill_y2):
|
100 |
# set up the model
|
101 |
+
global pipe, current_task, transformer
|
102 |
+
if current_task != task:
|
103 |
+
if current_task is None:
|
104 |
+
current_task = task
|
105 |
+
|
106 |
+
# insert LoRA
|
107 |
+
lora_config = LoraConfig(
|
108 |
+
r=16,
|
109 |
+
lora_alpha=16,
|
110 |
+
init_lora_weights="gaussian",
|
111 |
+
target_modules=[
|
112 |
+
'attn.to_k', 'attn.to_q', 'attn.to_v', 'attn.to_out.0',
|
113 |
+
'attn.add_k_proj', 'attn.add_q_proj', 'attn.add_v_proj', 'attn.to_add_out',
|
114 |
+
'ff.net.0.proj', 'ff.net.2',
|
115 |
+
'ff_context.net.0.proj', 'ff_context.net.2',
|
116 |
+
'norm1_context.linear', 'norm1.linear',
|
117 |
+
'norm.linear', 'proj_mlp', 'proj_out',
|
118 |
+
]
|
119 |
+
)
|
120 |
+
transformer.add_adapter(lora_config)
|
121 |
+
else:
|
122 |
+
def restore_forward(module):
|
123 |
+
def restored_forward(self, x, *args, **kwargs):
|
124 |
+
return module.original_forward(x, *args, **kwargs)
|
125 |
+
return restored_forward.__get__(module, type(module))
|
126 |
+
|
127 |
for n, m in transformer.named_modules():
|
128 |
if isinstance(m, peft.tuners.lora.layer.Linear):
|
129 |
+
m.forward = restore_forward(m)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
131 |
# hack LoRA forward
|
132 |
def create_hacked_forward(module):
|
133 |
+
if not hasattr(module, 'original_forward'):
|
134 |
+
module.original_forward = module.forward
|
135 |
lora_forward = module.forward
|
136 |
non_lora_forward = module.base_layer.forward
|
137 |
img_sequence_length = int((512 / 8 / 2) ** 2)
|
app.sh
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
pip install torch==2.5.1
|
3 |
+
pip install git+https://github.com/Dao-AILab/[email protected]#subdirectory=csrc
|
4 |
+
python app.py
|