|
import gradio as gr |
|
import torch |
|
from diffusers import FluxPipeline |
|
from huggingface_hub import HfApi |
|
import spaces |
|
import random |
|
|
|
@spaces.GPU(duration=70) |
|
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 |
|
|
|
@spaces.GPU(duration=70) |
|
def generate_image( |
|
prompt, |
|
guidance_scale=3.5, |
|
num_steps=25, |
|
width=1024, |
|
height=1024 |
|
): |
|
|
|
pipe = initialize_model() |
|
|
|
|
|
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 |
|
|
|
|
|
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], |
|
] |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |