Spaces:
Running
on
Zero
Running
on
Zero
import gradio as gr | |
import torch | |
from diffusers import FluxPipeline | |
from huggingface_hub import HfApi | |
import spaces | |
import random | |
def initialize_model(): | |
model_id = "Freepik/flux.1-lite-8B-alpha" | |
pipe = FluxPipeline.from_pretrained( | |
model_id, | |
torch_dtype=torch.bfloat16 | |
).to("cuda") | |
return pipe | |
def generate_image( | |
prompt, | |
guidance_scale=3.5, | |
num_steps=25, # Changed default to 25 | |
width=1024, | |
height=1024 | |
): | |
# Initialize model within the GPU context | |
pipe = initialize_model() | |
# Generate random seed | |
seed = random.randint(1, 1000000) | |
with torch.inference_mode(): | |
image = pipe( | |
prompt=prompt, | |
generator=torch.Generator(device="cuda").manual_seed(seed), | |
num_inference_steps=num_steps, | |
guidance_scale=guidance_scale, | |
height=height, | |
width=width, | |
).images[0] | |
return image | |
# Create the Gradio interface | |
demo = gr.Interface( | |
fn=generate_image, | |
inputs=[ | |
gr.Textbox(label="Prompt", placeholder="Enter your image description here..."), | |
gr.Slider(minimum=1, maximum=20, value=3.5, label="Guidance Scale", step=0.5), | |
gr.Slider(minimum=128, maximum=1024, value=1024, label="Width", step=64), | |
gr.Slider(minimum=128, maximum=1024, value=1024, label="Height", step=64) | |
], | |
outputs=gr.Image(type="pil", label="Generated Image"), | |
title="Flux Image Generator (Zero-GPU)", | |
description="Generate images using Freepik's Flux model with Zero-GPU allocation. Using 25 steps and random seed for each generation.", | |
examples=[ | |
["A close-up image of a green alien with fluorescent skin in the middle of a dark purple forest", 3.5, 1024, 1024], | |
["A serene landscape with mountains at sunset", 3.5, 1024, 1024], | |
] | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
demo.launch() |