asmall / app.py
druvx13's picture
Update app.py
4f156b9 verified
import gradio as gr
from diffusers import AutoPipelineForText2Image
import torch
import os
# Model configuration
MODEL_NAME = "katuni4ka/tiny-random-flex.2-preview"
CACHE_DIR = "./model_cache"
os.makedirs(CACHE_DIR, exist_ok=True)
# Load model with Flux-specific settings
pipe = AutoPipelineForText2Image.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
cache_dir=CACHE_DIR,
max_seq_length=512 # Critical parameter for Flux models
).to("cuda" if torch.cuda.is_available() else "cpu")
# Aspect ratios using multiples of 16 for Flux compatibility
ASPECT_RATIOS = {
"Square (512x512)": (512, 512),
"Landscape (1024x512)": (1024, 512),
"Portrait (512x1024)": (512, 1024),
"A4 (768x1024)": (768, 1024)
}
def generate_image(prompt, aspect_ratio):
"""Generate image with Flux-specific parameters"""
width, height = ASPECT_RATIOS[aspect_ratio]
try:
with torch.inference_mode():
image = pipe(
prompt=prompt,
width=width,
height=height,
num_inference_steps=20,
guidance_scale=4.5,
generator=torch.Generator(device="cuda").manual_seed(42) # Fixed seed
).images[0]
return image
except Exception as e:
return f"Error: {str(e)}"
# UI Configuration
with gr.Blocks(theme="huggingface", analytics_enabled=False) as demo:
gr.Markdown("""
# Tiny Random Flex Text-to-Image Generator
Experimental Flux-based model with critical fixes for tensor shape errors
πŸ”§ Important: This model requires specific input dimensions and has limited capabilities
""")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(
label="Prompt",
placeholder="Try simple prompts like 'a colorful pattern'",
lines=2
)
aspect_ratio = gr.Dropdown(
label="Aspect Ratio",
choices=list(ASPECT_RATIOS.keys()),
value="Square (512x512)"
)
generate_btn = gr.Button("🎨 Generate Image", variant="primary")
with gr.Column():
output_image = gr.Image(label="Generated Image", interactive=False)
generate_btn.click(
fn=generate_image,
inputs=[prompt, aspect_ratio],
outputs=output_image
)
if __name__ == "__main__":
demo.launch()