Spaces:
Runtime error
Runtime error
moving pipe_inversion to cpu after first inversion to save memory
Browse files- src/editor.py +8 -4
src/editor.py
CHANGED
@@ -47,22 +47,26 @@ class ImageEditorDemo:
|
|
47 |
noise = [randn_tensor(latents_size, dtype=torch.float16, device=torch.device(device), generator=g_cpu) for i
|
48 |
in range(cfg.num_inversion_steps)]
|
49 |
pipe_inversion.scheduler.set_noise_list(noise)
|
50 |
-
pipe_inference.scheduler.set_noise_list(noise)
|
51 |
pipe_inversion.scheduler_inference.set_noise_list(noise)
|
52 |
pipe_inversion.set_progress_bar_config(disable=True)
|
53 |
-
pipe_inference.set_progress_bar_config(disable=True)
|
54 |
self.cfg = cfg
|
55 |
self.pipe_inversion.cfg = cfg
|
56 |
self.pipe_inference.cfg = cfg
|
57 |
self.inv_hp = inv_hp # [2, 0.1, 0.2]
|
58 |
self.edit_cfg = cfg.edit_guidance_scale
|
59 |
|
60 |
-
self.pipe_inference.to(device)
|
61 |
self.pipe_inversion.to(device)
|
62 |
-
|
63 |
self.last_latent = self.invert(self.original_image, description_prompt)
|
64 |
self.original_latent = self.last_latent
|
65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
def invert(self, init_image, base_prompt):
|
67 |
res = self.pipe_inversion(prompt=base_prompt,
|
68 |
num_inversion_steps=self.cfg.num_inversion_steps,
|
|
|
47 |
noise = [randn_tensor(latents_size, dtype=torch.float16, device=torch.device(device), generator=g_cpu) for i
|
48 |
in range(cfg.num_inversion_steps)]
|
49 |
pipe_inversion.scheduler.set_noise_list(noise)
|
|
|
50 |
pipe_inversion.scheduler_inference.set_noise_list(noise)
|
51 |
pipe_inversion.set_progress_bar_config(disable=True)
|
|
|
52 |
self.cfg = cfg
|
53 |
self.pipe_inversion.cfg = cfg
|
54 |
self.pipe_inference.cfg = cfg
|
55 |
self.inv_hp = inv_hp # [2, 0.1, 0.2]
|
56 |
self.edit_cfg = cfg.edit_guidance_scale
|
57 |
|
|
|
58 |
self.pipe_inversion.to(device)
|
|
|
59 |
self.last_latent = self.invert(self.original_image, description_prompt)
|
60 |
self.original_latent = self.last_latent
|
61 |
|
62 |
+
if device == 'cuda':
|
63 |
+
# after the inversion, we can move the inversion model to the CPU
|
64 |
+
self.pipe_inversion.to('cpu')
|
65 |
+
|
66 |
+
pipe_inference.scheduler.set_noise_list(noise)
|
67 |
+
pipe_inference.set_progress_bar_config(disable=True)
|
68 |
+
self.pipe_inference.to(device)
|
69 |
+
|
70 |
def invert(self, init_image, base_prompt):
|
71 |
res = self.pipe_inversion(prompt=base_prompt,
|
72 |
num_inversion_steps=self.cfg.num_inversion_steps,
|