Spaces:
Runtime error
Runtime error
import torch | |
from diffusers import FluxPipeline | |
import gradio as gr | |
import threading | |
import os | |
os.environ["OMP_NUM_THREADS"] = str(os.cpu_count()) | |
torch.set_num_threads(os.cpu_count()) | |
# Initialize Flux pipeline | |
pipe = FluxPipeline.from_pretrained( | |
"black-forest-labs/FLUX.1-dev", | |
torch_dtype=torch.bfloat16 | |
) | |
pipe.enable_model_cpu_offload() | |
stop_event = threading.Event() | |
def generate_images( | |
prompt, | |
height, | |
width, | |
guidance_scale, | |
num_inference_steps, | |
max_sequence_length, | |
seed, | |
randomize_seed | |
): | |
stop_event.clear() | |
results = [] | |
for i in range(3): | |
if stop_event.is_set(): | |
return [None] * 3 | |
# Handle seed randomization | |
if randomize_seed: | |
current_seed = torch.randint(0, 2**32 - 1, (1,)).item() | |
else: | |
current_seed = seed + i | |
generator = torch.Generator(device="cpu").manual_seed(current_seed) | |
# Generate image with current parameters | |
image = pipe( | |
prompt=prompt, | |
height=int(height), | |
width=int(width), | |
guidance_scale=guidance_scale, | |
num_inference_steps=int(num_inference_steps), | |
max_sequence_length=int(max_sequence_length), | |
generator=generator | |
).images[0] | |
results.append(image) | |
return results | |
def stop_generation(): | |
stop_event.set() | |
return [None] * 3 | |
with gr.Blocks() as interface: | |
gr.Markdown(""" | |
### FLUX Image Generation | |
Adjust parameters below to control the image generation process | |
""") | |
with gr.Row(): | |
text_input = gr.Textbox( | |
label="Prompt", | |
placeholder="Describe what you want to generate...", | |
scale=3 | |
) | |
with gr.Accordion("Generation Parameters", open=False): | |
with gr.Row(): | |
height = gr.Number( | |
label="Height", | |
value=1024, | |
minimum=512, | |
maximum=4096, | |
step=64, | |
precision=0 | |
) | |
width = gr.Number( | |
label="Width", | |
value=1024, | |
minimum=512, | |
maximum=4096, | |
step=64, | |
precision=0 | |
) | |
guidance_scale = gr.Slider( | |
label="Guidance Scale", | |
minimum=0.0, | |
maximum=20.0, | |
value=7.0, | |
step=0.5 | |
) | |
num_inference_steps = gr.Slider( | |
label="Inference Steps", | |
minimum=10, | |
maximum=150, | |
value=50, | |
step=1 | |
) | |
max_sequence_length = gr.Dropdown( | |
label="Max Sequence Length", | |
choices=[512, 768, 1024], | |
value=512 | |
) | |
with gr.Row(): | |
seed = gr.Number( | |
label="Seed", | |
value=42, | |
precision=0 | |
) | |
randomize_seed = gr.Checkbox( | |
label="Randomize Seed", | |
value=True | |
) | |
with gr.Row(): | |
generate_btn = gr.Button("Generate", variant="primary") | |
stop_btn = gr.Button("Stop Generation") | |
with gr.Row(): | |
output1 = gr.Image(label="Output 1", type="pil") | |
output2 = gr.Image(label="Output 2", type="pil") | |
output3 = gr.Image(label="Output 3", type="pil") | |
generate_btn.click( | |
generate_images, | |
inputs=[ | |
text_input, | |
height, | |
width, | |
guidance_scale, | |
num_inference_steps, | |
max_sequence_length, | |
seed, | |
randomize_seed | |
], | |
outputs=[output1, output2, output3] | |
) | |
stop_btn.click( | |
stop_generation, | |
inputs=[], | |
outputs=[output1, output2, output3] | |
) | |
interface.launch() |