Spaces:
Running
on
Zero
Running
on
Zero
tight-inversion
commited on
Commit
·
e818c21
1
Parent(s):
9499d13
Move to models to GPU inside generate_image
Browse files
app.py
CHANGED
|
@@ -20,21 +20,11 @@ from pulid.pipeline_flux import PuLIDPipeline
|
|
| 20 |
from pulid.utils import resize_numpy_image_long, seed_everything
|
| 21 |
|
| 22 |
|
| 23 |
-
# def get_models(name: str, device: torch.device, offload: bool, fp8: bool):
|
| 24 |
-
# t5 = load_t5(device, max_length=128)
|
| 25 |
-
# clip = load_clip(device)
|
| 26 |
-
# model = load_flow_model(name, device="cpu" if offload else device)
|
| 27 |
-
# model.eval()
|
| 28 |
-
# ae = load_ae(name, device=device)
|
| 29 |
-
# return model, ae, t5, clip
|
| 30 |
-
class Tmp:
|
| 31 |
-
def __init__(self):
|
| 32 |
-
self.max_length = 128
|
| 33 |
-
|
| 34 |
def get_models(name: str, device: torch.device, offload: bool, fp8: bool):
|
| 35 |
-
t5 =
|
| 36 |
-
clip =
|
| 37 |
-
model =
|
|
|
|
| 38 |
ae = load_ae(name, device=device)
|
| 39 |
return model, ae, t5, clip
|
| 40 |
|
|
@@ -50,8 +40,8 @@ class FluxGenerator:
|
|
| 50 |
offload=self.offload,
|
| 51 |
fp8=args.fp8,
|
| 52 |
)
|
| 53 |
-
|
| 54 |
-
|
| 55 |
|
| 56 |
@spaces.GPU(duration=30)
|
| 57 |
@torch.inference_mode()
|
|
@@ -82,6 +72,10 @@ class FluxGenerator:
|
|
| 82 |
"""
|
| 83 |
Core function that performs the image generation.
|
| 84 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
self.t5.max_length = max_sequence_length
|
| 86 |
|
| 87 |
# If seed == -1, random
|
|
@@ -266,6 +260,7 @@ class FluxGenerator:
|
|
| 266 |
)
|
| 267 |
|
| 268 |
# Offload flux model, load auto-decoder
|
|
|
|
| 269 |
if self.offload:
|
| 270 |
self.model.cpu()
|
| 271 |
torch.cuda.empty_cache()
|
|
|
|
| 20 |
from pulid.utils import resize_numpy_image_long, seed_everything
|
| 21 |
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
def get_models(name: str, device: torch.device, offload: bool, fp8: bool):
|
| 24 |
+
t5 = load_t5(device, max_length=128)
|
| 25 |
+
clip = load_clip(device)
|
| 26 |
+
model = load_flow_model(name, device="cpu" if offload else device)
|
| 27 |
+
model.eval()
|
| 28 |
ae = load_ae(name, device=device)
|
| 29 |
return model, ae, t5, clip
|
| 30 |
|
|
|
|
| 40 |
offload=self.offload,
|
| 41 |
fp8=args.fp8,
|
| 42 |
)
|
| 43 |
+
self.pulid_model = PuLIDPipeline(self.model, device='cuda', weight_dtype=torch.bfloat16)
|
| 44 |
+
self.pulid_model.load_pretrain(args.pretrained_model)
|
| 45 |
|
| 46 |
@spaces.GPU(duration=30)
|
| 47 |
@torch.inference_mode()
|
|
|
|
| 72 |
"""
|
| 73 |
Core function that performs the image generation.
|
| 74 |
"""
|
| 75 |
+
self.t5.to(self.device)
|
| 76 |
+
self.clip_model.to(self.device)
|
| 77 |
+
self.ae.to(self.device)
|
| 78 |
+
self.model.to(self.device)
|
| 79 |
self.t5.max_length = max_sequence_length
|
| 80 |
|
| 81 |
# If seed == -1, random
|
|
|
|
| 260 |
)
|
| 261 |
|
| 262 |
# Offload flux model, load auto-decoder
|
| 263 |
+
self.ae.decoder.to(self.device)
|
| 264 |
if self.offload:
|
| 265 |
self.model.cpu()
|
| 266 |
torch.cuda.empty_cache()
|