Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -113,7 +113,7 @@ sd_pipe = StableDiffusionXLPipeline.from_pretrained(
|
|
113 |
).to(device)
|
114 |
sd_pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(sd_pipe.scheduler.config)
|
115 |
|
116 |
-
#
|
117 |
if torch.cuda.is_available():
|
118 |
sd_pipe.text_encoder = sd_pipe.text_encoder.half()
|
119 |
|
@@ -171,12 +171,19 @@ def generate_image_fn(
|
|
171 |
options["use_resolution_binning"] = True
|
172 |
|
173 |
images = []
|
|
|
174 |
for i in range(0, num_images, BATCH_SIZE):
|
175 |
batch_options = options.copy()
|
176 |
batch_options["prompt"] = options["prompt"][i:i+BATCH_SIZE]
|
177 |
if "negative_prompt" in batch_options and batch_options["negative_prompt"] is not None:
|
178 |
batch_options["negative_prompt"] = options["negative_prompt"][i:i+BATCH_SIZE]
|
179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
image_paths = [save_image(img) for img in images]
|
181 |
return image_paths, seed
|
182 |
|
|
|
113 |
).to(device)
|
114 |
sd_pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(sd_pipe.scheduler.config)
|
115 |
|
116 |
+
# Ensure that the text encoder is in half-precision if using CUDA.
|
117 |
if torch.cuda.is_available():
|
118 |
sd_pipe.text_encoder = sd_pipe.text_encoder.half()
|
119 |
|
|
|
171 |
options["use_resolution_binning"] = True
|
172 |
|
173 |
images = []
|
174 |
+
# Process in batches
|
175 |
for i in range(0, num_images, BATCH_SIZE):
|
176 |
batch_options = options.copy()
|
177 |
batch_options["prompt"] = options["prompt"][i:i+BATCH_SIZE]
|
178 |
if "negative_prompt" in batch_options and batch_options["negative_prompt"] is not None:
|
179 |
batch_options["negative_prompt"] = options["negative_prompt"][i:i+BATCH_SIZE]
|
180 |
+
# Wrap the pipeline call in autocast if using CUDA
|
181 |
+
if device.type == "cuda":
|
182 |
+
with torch.autocast("cuda", dtype=torch.float16):
|
183 |
+
outputs = sd_pipe(**batch_options)
|
184 |
+
else:
|
185 |
+
outputs = sd_pipe(**batch_options)
|
186 |
+
images.extend(outputs.images)
|
187 |
image_paths = [save_image(img) for img in images]
|
188 |
return image_paths, seed
|
189 |
|