Spaces:
Running
Running
| title: auto-diffuser-config | |
| app_file: gradio_app.py | |
| sdk: gradio | |
| sdk_version: 5.31.0 | |
| # Auto-Diffusers | |
| An intelligent code generator that creates optimized diffusers library snippets based on your hardware specifications using Google's Gemini API. | |
| ## Features | |
| - **Hardware Detection**: Automatically detects your system specs (CPU, GPU, VRAM) or allows manual input | |
| - **Real-time Optimization**: Fetches latest optimization techniques from HuggingFace documentation | |
| - **Smart Code Generation**: Uses Gemini API to generate hardware-optimized diffusers code | |
| - **Multiple Profiles**: Supports high-end GPU, mid-range GPU, low VRAM, Apple Silicon, and CPU-only configurations | |
| ## Setup | |
| 1. Create and activate conda environment: | |
| ```bash | |
| conda create -n auto-diffusers python=3.11 -y | |
| conda activate auto-diffusers | |
| ``` | |
| 2. Install dependencies: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. Set up Gemini API key: | |
| ```bash | |
| export GEMINI_API_KEY="your_api_key_here" | |
| ``` | |
| ## Usage | |
| ### Interactive Mode | |
| ```bash | |
| python main.py | |
| ``` | |
| **Available Options:** | |
| - `--auto-hardware-detection` - Enable automatic hardware detection on startup (disabled by default) | |
| - `--no-auto-hardware-detection` - Explicitly disable automatic hardware detection | |
| - `--port PORT` - Specify port to run the server on (default: 7860) | |
| - `--host HOST` - Specify host to run the server on (default: 0.0.0.0) | |
| - `--no-share` - Disable public sharing of the interface (local access only) | |
| **Examples:** | |
| ```bash | |
| # Launch with auto hardware detection enabled | |
| python main.py --auto-hardware-detection | |
| # Launch on a different port | |
| python main.py --port 8080 | |
| # Launch for local access only | |
| python main.py --no-share | |
| # Combine options | |
| python main.py --auto-hardware-detection --port 8080 --no-share | |
| ``` | |
| ### Programmatic Usage | |
| ```python | |
| from auto_diffusers import AutoDiffusersGenerator | |
| generator = AutoDiffusersGenerator(api_key="your_key") | |
| code = generator.generate_optimized_code( | |
| model_name="black-forest-labs/FLUX.1-schnell", | |
| prompt_text="A cat holding a sign that says hello world", | |
| image_size=(768, 1360), | |
| num_inference_steps=4 | |
| ) | |
| print(code) | |
| ``` | |
| ## Hardware Profiles | |
| - **high_end_gpu**: 20+ GB VRAM (RTX 4090, A100, etc.) | |
| - **mid_range_gpu**: 8-20 GB VRAM (RTX 3080, RTX 4070, etc.) | |
| - **low_vram_gpu**: <8 GB VRAM (GTX 1660, RTX 3060, etc.) | |
| - **apple_silicon**: M1/M2/M3 Macs with MPS support | |
| - **cpu_only**: No GPU acceleration | |
| ## Optimization Techniques Applied | |
| The generator automatically applies appropriate optimizations based on your hardware: | |
| - Memory optimizations (model offloading, attention slicing, VAE slicing) | |
| - Speed optimizations (torch.compile, optimal dtypes) | |
| - Hardware-specific optimizations (CUDA, MPS, CPU fallbacks) | |
| - Model-specific configurations (schedulers, inference parameters) | |
| ## Example Output | |
| ```python | |
| import torch | |
| from diffusers import FluxPipeline | |
| # Optimized for Apple Silicon (MPS) | |
| pipe = FluxPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-schnell", | |
| torch_dtype=torch.bfloat16 | |
| ) | |
| pipe.to("mps") | |
| pipe.enable_attention_slicing() | |
| prompt = "A cat holding a sign that says hello world" | |
| out = pipe( | |
| prompt=prompt, | |
| guidance_scale=0., | |
| height=768, | |
| width=1360, | |
| num_inference_steps=4, | |
| max_sequence_length=256, | |
| ).images[0] | |
| out.save("image.png") | |
| ``` |