Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| from diffusers import FluxPipeline | |
| import os | |
| HF_TOKEN = os.environ.get("HF_TOKEN") | |
| print("Loading FLUX.1-schnell model for CPU...") | |
| pipe = FluxPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-schnell", | |
| torch_dtype=torch.float32, | |
| token=HF_TOKEN | |
| ) | |
| pipe.to("cpu") | |
| pipe.enable_attention_slicing(1) | |
| print("Model loaded successfully on CPU") | |
| def generate_image(prompt, width, height, num_steps, seed, progress=gr.Progress()): | |
| if not prompt: | |
| return None, "Masukkan prompt terlebih dahulu!" | |
| progress(0, desc="Memulai generate gambar...") | |
| if seed == -1: | |
| generator = None | |
| else: | |
| generator = torch.Generator("cpu").manual_seed(int(seed)) | |
| try: | |
| progress(0.3, desc="Generating... Mohon tunggu 2-5 menit...") | |
| image = pipe( | |
| prompt=prompt, | |
| width=width, | |
| height=height, | |
| num_inference_steps=num_steps, | |
| guidance_scale=0.0, | |
| generator=generator, | |
| max_sequence_length=256 | |
| ).images[0] | |
| progress(1.0, desc="Selesai!") | |
| return image, f"Gambar berhasil dibuat! ({width}x{height}, {num_steps} steps)" | |
| except Exception as e: | |
| return None, f"Error: {str(e)}" | |
| with gr.Blocks(theme=gr.themes.Soft(), title="FLUX Image Generator") as demo: | |
| gr.Markdown( | |
| """ | |
| # FLUX.1-schnell Image Generator | |
| Generate gambar berkualitas tinggi menggunakan AI model FLUX.1-schnell | |
| Running on CPU - Unlimited usage, no quota! | |
| Waktu generate: ~2-5 menit per gambar (tergantung ukuran) | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| placeholder="Contoh: A cute cat wearing sunglasses, digital art...", | |
| lines=4 | |
| ) | |
| with gr.Accordion("Pengaturan Lanjutan", open=False): | |
| with gr.Row(): | |
| width = gr.Slider( | |
| minimum=256, | |
| maximum=768, | |
| value=512, | |
| step=64, | |
| label="Lebar (Width)" | |
| ) | |
| height = gr.Slider( | |
| minimum=256, | |
| maximum=768, | |
| value=512, | |
| step=64, | |
| label="Tinggi (Height)" | |
| ) | |
| num_steps = gr.Slider( | |
| minimum=1, | |
| maximum=8, | |
| value=4, | |
| step=1, | |
| label="Inference Steps (4 = cepat & bagus)" | |
| ) | |
| seed = gr.Number( | |
| label="Seed (-1 untuk random)", | |
| value=-1, | |
| precision=0 | |
| ) | |
| generate_btn = gr.Button("Generate Gambar", variant="primary", size="lg") | |
| status = gr.Textbox( | |
| label="Status", | |
| value="Siap generate gambar...", | |
| interactive=False | |
| ) | |
| gr.Markdown( | |
| """ | |
| ### Tips: | |
| - **512x512**: Paling cepat (~2 menit) | |
| - **768x768**: Lebih detail (~4 menit) | |
| - **4 steps**: Balance terbaik speed & quality | |
| - **Prompt jelas**: Deskripsi detail = hasil lebih baik | |
| - **Seed**: Set angka spesifik untuk hasil konsisten | |
| """ | |
| ) | |
| with gr.Column(scale=1): | |
| output_image = gr.Image( | |
| label="Hasil Gambar", | |
| type="pil", | |
| height=550 | |
| ) | |
| gr.Examples( | |
| examples=[ | |
| ["Seekor kucing lucu memakai kacamata hitam di pantai, digital art", 512, 512, 4, 42], | |
| ["Pemandangan gunung dengan sunset yang indah, highly detailed", 512, 512, 4, 123], | |
| ["Kota futuristik di malam hari dengan lampu neon, cyberpunk style", 512, 768, 4, 999], | |
| ["Portrait wanita cantik dengan bunga di rambut, oil painting", 512, 512, 4, 555], | |
| ["Naga besar terbang di atas kastil, fantasy art, epic", 768, 512, 4, 777], | |
| ["Astronaut riding a horse on mars, photorealistic, 4k", 512, 512, 4, 888], | |
| ], | |
| inputs=[prompt, width, height, num_steps, seed], | |
| outputs=[output_image, status], | |
| fn=generate_image, | |
| cache_examples=False, | |
| label="Contoh Prompt" | |
| ) | |
| generate_btn.click( | |
| fn=generate_image, | |
| inputs=[prompt, width, height, num_steps, seed], | |
| outputs=[output_image, status] | |
| ) | |
| gr.Markdown( | |
| """ | |
| --- | |
| ### Informasi | |
| - Model: FLUX.1-schnell by Black Forest Labs | |
| - Hardware: CPU (Unlimited usage) | |
| - Framework: Diffusers + Gradio | |
| ### Kenapa CPU? | |
| - Unlimited - Tidak ada quota/limit | |
| - Gratis - 100% free forever | |
| - Stabil - Tidak ada antrian | |
| - Trade-off: Lebih lambat dari GPU | |
| """ | |
| ) | |
| if __name__ == "__main__": | |
| demo.queue(max_size=10).launch() |